vlc的应用之十:vlc的远程控制

请移步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的显示信息。