vlc的應用之十:vlc的遠程控制

請移步https://higoge.github.io/,所有下載資料在那個博客都能找到。謝謝。 

--------------------------------------------------------------------



    VLC作爲服務器,可以進行遠程控制。再以前的博客中提到用telnet配置VLM(《vlc的應用之七:用vlc做單播,組播及點播服務器》),這也算是一種遠程控制。這次介紹的遠程控制主要包括以下兩種,使用的是vlc-1.0.5。
1. http遠程控制
2. vlc remote control (rc)

    1. vlc的http遠程控制

    命令行執行以下命令。

vlc -I http --http-host=localhost:8866

    解釋下:-I http就是啓用http服務。--host-host=ip:port爲啓用的服務的ip地址及端口號。

    瀏覽器下輸入http://localhost:8866,會顯示如下界面。

    點擊左上角的open按鈕,打開input框。輸入路徑,點擊play。出現視頻畫面。

    http模塊在安裝目錄下面的http目錄下面,通過解析index.html等,可以編寫自己的web頁面,並實現遠程控制vlc的目的。在頁面下方還有VLM的http配置,有興趣的可以去好好研究下。

    注:如果要監聽本機真實ip地址,讓其他機器都能訪問,則需要修改http目錄下面的.host文件,配置相關private addresses。具體請根據自己ip地址進行配置。比如Jeremiah的ip地址爲172.16.5.XXX,則只需要增加172.16.5.XXX/24,其他172.16.5段IP都可以訪問了。

    2. vlc remote control

    命令行執行以下命令。

vlc -I rc

    出現vlc的rc後臺。在裏面輸入help,打印出所有可以執行的命令。這些命令即爲控制vlc的命令。如下圖所示。

    輸入add d:/video/01.avi,則開始播放視頻。如下圖所示。

    當然,我們也寫程序遠程控制vlc。主要思路就是建立一個socket,連接到vlc的rc服務,然後發送控制命令就可以了。

    1) 命令行運行以下命令。

vlc -I rc --rc-host=localhost:8888

    解釋下:-I rc就是啓動rc服務,--rc-host=ip:host就是監聽的ip及端口號,一般ip設置爲localhost。

    2) 編寫程序client_vlc.c如下。

/******************************************************************************  * Filename:        client_vlc.c   * Created on:      Apr 4, 2010    * Author:          jeremiah    * Description:     vlc的客戶端程序,測試vlc遠程控制  *    ******************************************************************************/  #include <stdio.h>  #include <stdlib.h>  #include <string.h>  #include <unistd.h>  #include <sys/socket.h>  #include <netinet/in.h>   #define MAXLINE 4096  #define SERV_ADDR "127.0.0.1"  #define SERV_PORT 8888   int main(int argc, char *argv[]) {      struct sockaddr_in servaddr;      char buf[MAXLINE];      int sockfd;      int read_size;            // 建立socket      sockfd = socket(AF_INET, SOCK_STREAM, 0);      bzero(&servaddr, sizeof(servaddr));      servaddr.sin_family = AF_INET;      inet_pton(AF_INET, SERV_ADDR, &servaddr.sin_addr);      servaddr.sin_port = htons(SERV_PORT);            // 建立連接      connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));            // 向vlc發請求 "add d:/video/01.avi"      write(sockfd, "add d:/video/01.avi\r\n",               strlen("add d:/video/01.avi\r\n") + 1);            // 打印vlc返回結果      read_size = read(sockfd, buf, MAXLINE);      printf("Response from vlc:\n");      printf("%s\n", buf);            // 向vlc發請求 "is_playing"      write(sockfd, "is_playing\r\n", strlen("is_playing\r\n"));            // 打印vlc返回結果      read_size = read(sockfd, buf, MAXLINE);      printf("Response from vlc:\n");      printf("%s\n", buf);            // 關閉socket      close(sockfd);      return 0;  }

    3) 編譯上面的程序,本文主要在Cygwin裏面編譯使用。

gcc -o client_vlc client_vlc.c

    4)執行程序,查看結果。

 

    可以看到從服務器返回的字符串,顯示添加成功,檢查播放情況顯示no error。關於其他的操作,還是參考上面的help的顯示信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章