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

Met*_*iel 9 x11 video vlc

我有问题,希望你能帮助我.我在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)

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


zaf*_*zaf 8

您需要设置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)