請移步https://higoge.github.io/,全部下載資料在那個博客都能找到。謝謝。 html
--------------------------------------------------------------------git
VLC做爲服務器,能夠進行遠程控制。再之前的博客中提到用telnet配置VLM(《vlc的應用之七:用vlc作單播,組播及點播服務器》),這也算是一種遠程控制。此次介紹的遠程控制主要包括如下兩種,使用的是vlc-1.0.5。
1. http遠程控制
2. vlc remote control (rc)github
1. vlc的http遠程控制web
命令行執行如下命令。瀏覽器
vlc -I http --http-host=localhost:8866
解釋下:-I http就是啓用http服務。--host-host=ip:port爲啓用的服務的ip地址及端口號。服務器
瀏覽器下輸入http://localhost:8866,會顯示以下界面。socket
點擊左上角的open按鈕,打開input框。輸入路徑,點擊play。出現視頻畫面。ide
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均可以訪問了。spa
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的顯示信息。