我遇到了问题,希望你能帮助我。 我在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从远程控制台播放视频?
请帮帮我,谢谢!
答案 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