从远程终端在X11中使用VLC播放视频

时间:2012-03-09 15:04:45

标签: video x11 vlc

我遇到了问题,希望你能帮助我。 我在Linux上有一些超薄的终端,每次启动时它都会启动一个小脚本。这个脚本有一个cvlc命令行,如下所示:

cvlc --quiet --fullscreen --no-osd --loop playlist.xspf

这可以正常工作,因为终端启动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:~$ 

所以问题是,当然,我无法从远程终端直接访问X11,那么如何使用cvlc或vlc从远程控制台播放视频?

请帮帮我,谢谢!

2 个答案:

答案 0 :(得分:8)

$ DISPLAY环境变量保存可以运行图形应用程序的X服务器实例的值。因此需要这个值:

echo $DISPLAY
:0

然后,此值必须与cVLC --x11-display选项一起使用,如:

cvlc --x11-display :0 video.mp4

这样,即使在远程ssh会话中使用此命令,视频也会输出到X Server会话。但是,如果会话结束,视频将停止,因此您需要对作业进行后台处理,因此当您退出时,视频将继续播放:

cvlc --x11-display :0 video.mp4 &

作为我的确切需求的参考,如果您需要在远程终端中运行视频并且需要它进行循环,没有可见的VLC界面,全屏并且在控制台中绝对没有输出,那么您可能会发现它很有用,因为如果你运行上一个例子中的命令,可能会在同一个用户的另一个SSH会话中抛出VLC输出,你需要以这种方式运行它:

cvlc -q --no-osd -L -f --no-video-title-show --x11-display :1 video.mp4 2&>1 >/dev/null &

标准输出和错误不会以这种方式出现在会话中。

答案 1 :(得分:7)

您需要设置DISPLAY变量。

例如:

export DISPLAY=:0

您可能需要使用set而不是export(和/或更改:0到类似的东西,我现在无法测试,谷歌搜索DISPLAY变量)但这是一般的想法,说明你想要哪个输出显示窗口出现。

更新:从下面的评论中可以看出,OP找到了命令行选项:

--x11-display :0
相关问题