扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
vlc 命令行就能控制播放,你写个程序运行这些命令就行了。
十载的湖州网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整湖州建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“湖州网站设计”,“湖州网站推广”以来,每个客户项目都认真落实执行。
我记得 vlc 也有这种控制软件,你可以找找。
进入linux命令页面,使用快捷键来进行切换,具体快捷键需要根据所处网络域名进行设定。而LINUX操作系统是一种免费使用和自由传播的类UNIX操作系统,方便用户进行使用,深得用户的喜爱。
准备条件
Android 手机和桌面 Linux 位于同一无线网络,是否可以访问互联网不重要。
Android 手机上安装免费开源的 Remote for VLC(Code 首页)
已经在 Linux 桌面环境下安装好 VLC 2.0 播放器。
下文将以 Fedora 17 为例介绍这一过程。
启用 VLC http 远程控制支持
启动 VLC,在主界面上依次点击“工具”-“首选项”-左下角选择“全部”-左侧列表中选择“主界面”-在右侧勾选“Web”。如下图所示:
保存并关闭 VLC。
之后需要编辑 VLC 的 Lua 主机配置文件,允许可以访问的网络段。比如可以用以下命令以 root 用户身份打开配置文件:
su -c 'vim /usr/share/vlc/lua/http/.hosts'
一般正常的人会仅希望局域网内的 Android 手机可以访问并控制桌面上的 VLC,于是取消 # private addresses下面几行开头的注释即可。
保存更改并退出编辑器。
设置防火墙策略
找到系统设置中的防火墙,或者通过在终端输入 system-config-firewall 的方式启动。
VLC 的远程控制默认通过 8080 端口实现,所以在左侧选择“其他端口”,然后通过右侧依次添加 TCP/UDP 8080 端口。
(可选)Android 手机支持通过 Avahi 的方式自动寻找查找网络中的可用主机,如果需要这个功能的话在左侧选择“可信的服务”,然后在右侧勾选“多点广播 DNS (mDNS)”。如果不用启用该项的话就需要在 Remote for VLC 手动输入 IP 地址和端口。
完成之后点击工具栏上的“应用”保存防火墙配置。
开始使用
再次启动 VLC 播放器,在主界面上选择“视图”-“添加界面”-选择“Web”。
在 Android 手机上启动 Remote for VLC,稍等一下应该就会显示在网络中找到的所有 VLC 实例,轻触即可链接。
此时你就可以远离键盘和鼠标,坐在沙发上享受 VLC 带来的影音体验了:
支持音量、音轨、字幕轨、全屏模式的调整,显示媒体信息。
支持创建播放列表。
支持浏览桌面 Linux 上的文件系统(知道为何不建议通过互联网访问了吧……)
试验性的支持 DVD 菜单。
可以在有来电时自动暂停媒体播放。
开宗明义,在Headless ( i.e. without a monitor or input device)的服务器(例如,各类嵌入式「玩具板子」)上如果架起VLC进行多媒体播放,怎样才是最方便的控制方式?
同时,因为希望是可以脚本控制,所以最好是可以做到非互动式的指令。
如下是简单的步骤:
VLC实际上拥有灵活强大的控制方式,由于我们上来就限定了Headless,那么命令行显然是先决条件,VLC文档中已经列出了支持的几种Remote方式:
考虑到三者中rc应该是最强大和灵活的(ncurses需要configure,telnet更多的是互动型,何况rc本身就可以支持telnet访问),我们就focus在rc 接口上。
使能方法非常简单,调用vlc的时候,用:
cvlc -I rc --rc-fake-tty --rc-host ip:port
注意:如果需要局域网内访问,请填写本机ip,如果只要本机访问,用localhost就可以了
得到如下信息(忽略那些错误吧,毕竟Headless么,很多接口对VLC来说都缺失,但是不影响使用)
直接借助帮助文件, 可见还是非常强大的:
实际上,在一些 讨论 中看到,如果只是需要本机访问,更高效的办法是借助一个unix socket文件,从而通过socket文件来访问,简单说就是将上面提到的-rc-host选项变成-rc-unix然后用一个文件作为输入;
这样可以用类似于形如下面指令的方法来模拟socket访问 (作者以OSX为例,应当是没有问题的):
echo normal | nc -U /Users/vlc.sock
我的例子,Debian中,nc似乎是不适用,更多人推荐用socat (需要安装)
echo “pause” | socat – UNIX-CONNECT:/Users/vlc.sock
上面可以理解成将管道化之后的ECHO字符向这个Unix的Socket发送。可是在我这里死活都会遇到文件connection refused,作为菜鸟,实在无力解决,特别是看到有强者遇到类似问题交叉比较得出可能和特定版本的kernel stock存在bug有关之后,不管看不看得懂,我都理直气壮的放弃了——直接转向了上面提到的host:port的方案。
所以:
如果是互动式,直接 nc host port ,就可以进入这个接口界面了:
如果不需要互动:
参考上节:
echo status | nc -w 0 ip port
-w是指示说该命令之后,立刻退出,实际上OSX下并不一定需要,只是为了和下面Linux对照一下。
大致相同,区别只是在非互动式下,
echo status | nc -q 0 ip port
两者区别只是一个用了' w ait'之意,另外一个是' q uit'罢了,想想还挺风趣....风趣个妹啊,这不是折腾跨平台用户吗?!
至此,该问题解决,不论是想在远程控制无输入(显示)设备上的播放,还是想用脚本对其他线程的VLC播放进行自动化的干预控制,都不成问题了。
——怪不得有那么多人喜欢用VLC啊,我恍然。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流