我有问题,希望你能帮助我.我在Linux上有一些超薄的终端,每次启动时它都会启动一个小脚本.这个脚本有一个cvlc命令行,它如下:
cvlc --quiet --fullscreen --no-osd --loop playlist.xspf
Run Code Online (Sandbox Code Playgroud)
这工作正常,因为终端启动X11环境,然后从autostart启动脚本; 它播放的视频和液晶显示效果很好.出于某种原因,我的问题出现了,我需要远程杀死cvlc进程并重新启动它.我用在X11环境中登录的同一用户ssh终端,我启动上面描述的代码行和视频播放,是的...但是在终端我登录了!
所以视频只以字符模式播放,它在我的控制台中呈现为文本; 当然在X11环境中看不到任何东西.所以我的问题是:如何启动我的cvlc命令并在X11中播放视频而不是在控制台本身?
如果我只是尝试播放没有选项,我得到以下输出:
$ cvlc playlist.xspf
VLC media player 1.1.4 The Luggage (revision exported)
Blocked: call to unsetenv("DBUS_ACTIVATION_ADDRESS")
Blocked: call to unsetenv("DBUS_ACTIVATION_BUS_TYPE")
[0x9cb1114] inhibit interface error: Failed to connect to the D-Bus session daemon: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.
[0x9cb1114] main interface error: no suitable interface module
[0x9cb0754] main interface error: no suitable interface module
[0x9c17914] main libvlc error: interface "globalhotkeys,none" initialization failed
[0x9caeca4] dummy interface: using the dummy interface module...
[0x9cabfa4] main playlist: stopping playback
[0x9dedb34] xcb_xv generic error: parent window not available
[0x9dedb34] xcb_x11 generic error: parent window not available
[0x9dedb34] xcb_glx generic error: parent window not available
[0x9dedb34] fb generic error: cannot get terminal mode (Invalid argument)
Blocked: call to signal(28, 0x60ae4e0)
Blocked: call to setlocale(6, "")
Blocked: call to sigaction(20, 0x46935e0, (nil))
Blocked: call to sigaction(2, 0xb730c948, (nil))
Blocked: call to sigaction(15, 0xb730c948, (nil))
Blocked: call to sigaction(28, 0xb730c948, (nil))
^C[0x9cae2b4] signals interface error: Caught Interrupt signal, exiting...
umboard@MB124205:~$
Run Code Online (Sandbox Code Playgroud)
所以问题是,当然,我无法从远程终端直接访问X11,那么如何使用cvlc或vlc从我的远程控制台播放视频?
请帮帮我,谢谢!
Met*_*iel 10
$ DISPLAY环境变量保存可以运行图形应用程序的X服务器实例的值.因此需要这个值:
echo $DISPLAY
:0
Run Code Online (Sandbox Code Playgroud)
然后,此值必须与cVLC --x11-display
选项一起使用,如:
cvlc --x11-display :0 video.mp4
Run Code Online (Sandbox Code Playgroud)
这样,即使在远程ssh会话中使用此命令,视频也将输出到X Server会话.但是,如果会话结束,视频将停止,因此您需要对作业进行后台处理,因此当您注销时,视频将继续播放:
cvlc --x11-display :0 video.mp4 &
Run Code Online (Sandbox Code Playgroud)
作为我的确切需求的参考,如果您需要在远程终端中运行视频并且需要它进行循环,没有可见的VLC接口,全屏并且在控制台中绝对没有输出,那么您可能会发现它很有用,因为如果如上例所示运行命令,可能会在同一用户的另一个SSH会话中抛出VLC输出,您需要以这种方式运行它:
cvlc -q --no-osd -L -f --no-video-title-show --x11-display :1 video.mp4 2&>1 >/dev/null &
Run Code Online (Sandbox Code Playgroud)
标准输出和错误不会以这种方式出现在会话中.
您需要设置DISPLAY变量.
例如:
export DISPLAY=:0
Run Code Online (Sandbox Code Playgroud)
您可能需要使用set而不是export(和/或更改:0到类似的东西,我现在无法测试,google用于DISPLAY变量),但这就是说出要显示窗口的输出显示的一般想法.
更新:正如您从下面的评论中看到的那样,OP找到了命令行选项:
--x11-display :0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
34150 次 |
最近记录: |