如何在文本模式下运行的Linux服务器中通过ssh启动vlc-nox?

时间:2017-04-26 09:48:14

标签: linux ssh vlc

背景
我有一个在没有安装X的情况下以文本模式运行的Linux服务器。我打算使用directfb向显示器(实际上是电视)显示视频和图像。我已经安装了vlc-nox,如果在默认控制台(物理键盘)中调用它,它会按预期运行。


问题
通过SSH运行时,没有显示视频,但音频没问题。错误如下:

directfb vout display error: Cannot create primary surface
fb vout display error: cannot get terminal mode (Inappropriate ioctl for device)
core video output error: video output creation failed
core decoder error: failed to create video output


fbi的方式
我认为联邦调查局也面临同样的问题,因为它会引发如下错误:
ioctl VT_GETSTATE: Inappropriate ioctl for device (not a linux console?)
但是,fbi为这种情况提供了解决方案:-T -vt <arg> start on virtual console <arg>
因此,sudo fbi -T 1 /path/to/image/file会按预期显示图片。


问题 :vlc的方式是什么?

1 个答案:

答案 0 :(得分:0)

我终于有了解决方案,所以我在这里发布,以防有​​人有同样的问题。

我的理解是vlc需要在真正的tty下运行,而不是伪tty。我的解决方案由两部分组成。

第1部分:让vlc以守护进程模式运行。

  1. 为守护程序创建用户并分配音频和视频权限。
  2. Ex: list = "[1,2,3,4,5]" Operation : Convert list which is string to a list o/p: list = [1,2,3,4,5]

    1. 使用tty1
    2. 在启动时运行vlc

      我在ubuntu下尝试了这个单元。

      #useradd -c "VLC daemon" -d / -G audio,video -M -p \! -r -s /bin/false -u 75 -U vlcd

      请注意[Unit] Description=VLC server After=network.target auditd.service Conflicts=getty@tty1.service [Service] ExecStart=/usr/bin/vlc -I rc --rc-host 127.0.0.1:8080 ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartPreventExitStatus=255 User=vlcd Type=simple #StandardError=tty StandardOutput=tty StandardInput=tty RemainAfterExit=yes [Install] WantedBy=multi-user.target Alias=vlc.service ConflictsExecStartStandardInput部分。

      • StandardOutput中,它会绕过默认的getty服务,否则应由Conflicts手动停用。
      • #systemctrl disable getty@tty1中,不要使用-d开关,这意味着它将继续运行并占用VT 1,由 Alt - F1 。 ExecStart启用远程连接接口。
      • -rc中,指定StandardInput/Output作为输入和输出设备。

      第2部分:与守护进程远程通话,让它播放该文件。

      tty指定本地端口时,我们需要首先ssh到服务器。然后,使用telnet与vlc进行交互(添加,播放,暂停)。

      --rc-host