命令行下怎样远程控制VLC播放

如题所述

开宗明义,在Headless ( i.e. without a monitor or input device)的服务器(例如,各类嵌入式「玩具板子」)上如果架起VLC进行多媒体播放,怎样才是最方便的控制方式?
同时,因为希望是可以脚本控制,所以最好是可以做到非互动式的指令。
如下是简单的步骤:
使能VLC的Remote Control接口
VLC实际上拥有灵活强大的控制方式,由于我们上来就限定了Headless,那么命令行显然是先决条件,VLC文档中已经列出了支持的几种Remote方式:
rc interface
ncurses interface
telnet interface
考虑到三者中rc应该是最强大和灵活的(ncurses需要configure,telnet更多的是互动型,何况rc本身就可以支持telnet访问),我们就focus在rc 接口上。
使能方法非常简单,调用vlc的时候,用:
cvlc -I rc --rc-fake-tty --rc-host <ip>:<port>

选项
意义

'-I rc' 启动rc接口;
'--rc-fake-tty' 强迫将标准输入当做tty
'--rc-host' 选定的监听地址和端口
注意:如果需要局域网内访问,请填写本机ip,如果只要本机访问,用localhost就可以了
得到如下信息(忽略那些错误吧,毕竟Headless么,很多接口对VLC来说都缺失,但是不影响使用)
cvlc -I rc --rc-fake-tty --rc-host localhost:8888
VLC media player 2.0.3 Twoflower (revision 2.0.2-93-g77aa89e)
[0x11eed70] inhibit interface error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
[0x11eed70] main interface error: no suitable interface module
[0x11eed70] main interface error: no suitable interface module
[0x10858f0] main libvlc error: interface "globalhotkeys,none" initialization failed
[0x11eed70] [cli] lua interface: Listening on host "localhost:8888".
RC 接口指令
直接借助帮助文件, 可见还是非常强大的:
+----[ CLI commands ]
| add XYZ . . . . . . . . . . . . . . . . . . . . add XYZ to playlist
| enqueue XYZ . . . . . . . . . . . . . . . . . queue XYZ to playlist
| playlist . . . . . . . . . . . . . show items currently in playlist
| search [string] . . search for items in playlist (or reset search)
| sort key . . . . . . . . . . . . . . . . . . . . . sort the playlist
| sd [sd] . . . . . . . . . . . . . show services discovery or toggle
| play . . . . . . . . . . . . . . . . . . . . . . . . . . play stream
| stop . . . . . . . . . . . . . . . . . . . . . . . . . . stop stream
| next . . . . . . . . . . . . . . . . . . . . . . next playlist item
| prev . . . . . . . . . . . . . . . . . . . . previous playlist item
| goto, gotoitem . . . . . . . . . . . . . . . . . goto item at index
| repeat [on|off] . . . . . . . . . . . . . . toggle playlist repeat
| loop [on|off] . . . . . . . . . . . . . . . . toggle playlist loop
| random [on|off] . . . . . . . . . . . . . . toggle playlist random
| clear . . . . . . . . . . . . . . . . . . . . . clear the playlist
| status . . . . . . . . . . . . . . . . . . . current playlist status
| title [X] . . . . . . . . . . . . . . set/get title in current item
| title_n . . . . . . . . . . . . . . . . next title in current item
| title_p . . . . . . . . . . . . . . previous title in current item
| chapter [X] . . . . . . . . . . . . set/get chapter in current item
| chapter_n . . . . . . . . . . . . . . next chapter in current item
| chapter_p . . . . . . . . . . . . previous chapter in current item
|
| seek X . . . . . . . . . . . seek in seconds, for instance `seek 12'
| pause . . . . . . . . . . . . . . . . . . . . . . . . toggle pause
| fastforward . . . . . . . . . . . . . . . . . . set to maximum rate
| rewind . . . . . . . . . . . . . . . . . . . . . set to minimum rate
| faster . . . . . . . . . . . . . . . . . . faster playing of stream
| slower . . . . . . . . . . . . . . . . . . slower playing of stream
| normal . . . . . . . . . . . . . . . . . . normal playing of stream
| rate [playback rate] . . . . . . . . . . set playback rate to value
| frame . . . . . . . . . . . . . . . . . . . . . play frame by frame
| fullscreen, f, F [on|off] . . . . . . . . . . . . toggle fullscreen
| info . . . . . . . . . . . . . information about the current stream
| stats . . . . . . . . . . . . . . . . show statistical information
| get_time . . . . . . . . . seconds elapsed since stream's beginning
| is_playing . . . . . . . . . . . . 1 if a stream plays, 0 otherwise
| get_title . . . . . . . . . . . . . the title of the current stream
| get_length . . . . . . . . . . . . the length of the current stream
|
| volume [X] . . . . . . . . . . . . . . . . . . set/get audio volume
| volup [X] . . . . . . . . . . . . . . . raise audio volume X steps
| voldown [X] . . . . . . . . . . . . . . lower audio volume X steps
| adev [X] . . . . . . . . . . . . . . . . . . . set/get audio device
| achan [X] . . . . . . . . . . . . . . . . . set/get audio channels
| atrack [X] . . . . . . . . . . . . . . . . . . . set/get audio track
| vtrack [X] . . . . . . . . . . . . . . . . . . . set/get video track
| vratio [X] . . . . . . . . . . . . . . . set/get video aspect ratio
| vcrop, crop [X] . . . . . . . . . . . . . . . . set/get video crop
| vzoom, zoom [X] . . . . . . . . . . . . . . . . set/get video zoom
| vdeinterlace [X] . . . . . . . . . . . . . set/get video deintelace
| vdeinterlace_mode [X] . . . . . . . . set/get video deintelace mode
| snapshot . . . . . . . . . . . . . . . . . . . . take video snapshot
| strack [X] . . . . . . . . . . . . . . . . . set/get subtitles track
|
| vlm . . . . . . . . . . . . . . . . . . . . . . . . . load the VLM
| description . . . . . . . . . . . . . . . . . describe this module
| help, ? [pattern] . . . . . . . . . . . . . . . . . a help message
| longhelp [pattern] . . . . . . . . . . . . . . a longer help message
| lock . . . . . . . . . . . . . . . . . . . . lock the telnet prompt
| logout . . . . . . . . . . . . . . exit (if in a socket connection)
| quit . . . . . . . . quit VLC (or logout if in a socket connection)
| shutdown . . . . . . . . . . . . . . . . . . . . . . . shutdown VLC
+----[ end of help ]
如何访问:
实际上,在一些讨论中看到,如果只是需要本机访问,更高效的办法是借助一个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的方案。
所以:
OSX
如果是互动式,直接 nc <host> <port>,就可以进入这个接口界面了:
$ nc 192.168.199.105 8888
VLC media player 2.0.3 Twoflower
Command Line Interface initialized. Type `help' for help.
$ status
( new input: file:///home/user/test.mp3 )
( audio volume: 256 )
( state playing )
$ info
+----[ Stream 0 ]
|
| Bitrate: 160 kb/s
| Type: Audio
| Channels: Stereo
| Sample rate: 44100 Hz
| Codec: MPEG Audio layer 1/2/3 (mpga)
|
+----[ end of stream info ]
如果不需要互动:
参考上节:
echo status | nc -w 0 <ip> <port>
-w是指示说该命令之后,立刻退出,实际上OSX下并不一定需要,只是为了和下面Linux对照一下。
LINUX
大致相同,区别只是在非互动式下,
echo status | nc -q 0 <ip> <port>
两者区别只是一个用了' wait'之意,另外一个是' quit'罢了,想想还挺风趣....风趣个妹啊,这不是折腾跨平台用户吗?!
结论
至此,该问题解决,不论是想在远程控制无输入(显示)设备上的播放,还是想用脚本对其他线程的VLC播放进行自动化的干预控制,都不成问题了。
温馨提示:内容为网友见解,仅供参考
无其他回答

命令行下怎样远程控制VLC播放
启用 VLC http 远程控制支持启动 VLC,在主界面上依次点击“工具”-“首选项”-左下角选择“全部”-左侧列表中选择“主界面”-在右侧勾选“Web”。如下图所示:保存并关闭 VLC。之后需要编辑 VLC 的 Lua 主机配置文件,允许可以访问的网络段。比如可以用以下命令以 root 用户身份打开配置文件:su -...

命令行下怎样远程控制VLC播放
实际上,在一些 讨论 中看到,如果只是需要本机访问,更高效的办法是借助一个unix socket文件,从而通过socket文件来访问,简单说就是将上面提到的-rc-host选项变成-rc-unix然后用一个文件作为输入;这样可以用类似于形如下面指令的方法来模拟socket访问 (作者以OSX为例,应当是没有问题的):echo normal...

VLC远程汉化版简介
打开VLC远程控制应用程序,点击主屏幕上的“添加计算机”,输入刚刚获得的密码。手机与VLC的连接即成功建立。连接一次后,无需再次连接,操作便捷。若遇到连接问题,点击安装助手上的“Connection Help”,按照指示进行故障排查,确保顺利连接。VLC远程控制提供了一种全新的方式,让您在舒适的沙发上,尽情享受...

Vlc Direct Pro软件特色
VLC Direct Pro软件提供了丰富的远程控制功能,使得用户能够轻松操控。首先,你可以通过它远程浏览和播放文件,无论是单个文件还是队列播放,都能随心所欲地操作。只需轻点鼠标,你就能实现播放、暂停、停止等基本功能,操作便捷高效。此外,软件的配置过程极其简单,无需深入的技术知识。只需进入设置界面,找...

解锁Linux终端上的媒体播放能力MPVlinuxmpv
媒体文件的控制也非常简单,使用以下命令即可控制:暂停\/播放:[space]循环播放:[enter]快进\/快退:[left arrow]\/[right arrow]向上\/向下快进\/快退:[up arrow]\/[down arrow]离开\/退出:[Ctrl+C]\/[q]MPV几乎支持终端中的所有尖端功能,它拥有清晰的支持体验,可以使用命令行处理媒体文件。尽管安装...

...一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法...
1. 安装配置作为非小白用户,你可能考虑使用深度Linux,它集成了QQ等常用软件,但如果你想深入编程,原版Ubuntu 16.04更合适。这里我们将安装原版并使用英文界面。2. 安装步骤Ubuntu的安装过程可自行搜索教程。使用U盘安装时,建议创建合理的分区,如\/30G, swap 8G, \/home留作数据存储,以便于日后重装。...

高清监控如何快速播放
我以前制作过监控的视频,用厂商自带播放器播放,用屏幕录像大师录像,然后就变成通用视频格式了,就可以进视频编辑软件了!问题五:怎样操作才能让监控画面播放时速度快3倍。 在你的显示器上一般都有快进功能,安装摄像头没必要都看啊,可以在需要的时候看重点的就行!问题六:怎样让远程监控播放我事先...

哪个视频播放器是免费的
VLC媒体播放器的界面简洁直观,用户可以轻松地进行基本的播放控制,如播放\/暂停、快进\/快退、音量调节等。此外,VLC还提供了许多高级功能,如字幕加载、音频轨道切换、视频滤镜等,使得用户可以根据个人需求进行定制化的播放体验。除了作为视频播放器外,VLC媒体播放器还可以作为流媒体服务器使用,支持网络流...

手机怎样控制电脑
注册账号登录。电脑里下载个向日葵客户端,用同一账号登录,刷新一下手机的主机列表就可以看见你的电脑啦,点击电脑名字选择桌面控制,就可以进入远程桌面、随你控制电脑啦!选择摄像头则能打开电脑的摄像头进行监控啦。选择远程文件则电脑手机之间远程传输文件!挺方便简单的···...

怎么可以用手机来操控我的电脑
1、在手机和电脑上分别下载安装TeamViewer软件。2、打开TeamViewer软件后,用邮箱注册一个用户。3、使用刚注册的用户在手机和台式机上分别登陆。4、在手机端的TeamViewer软件上点击右侧的电脑名称。5、提示正在连接,完成后手机就可以控制电脑了。TeamViewer是一个能在任何防火墙和NAT代理的后台用于远程控制,...

相似回答