请移步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的显示信息。
转载于:https://blog.51cto.com/jeremiah/291227