如何在文本模式下运行的Linux服务器中通过SSH启动VLC-Nox



背景
我的Linux服务器以文本模式运行,没有安装X。我打算使用DirectFB向监视器(实际上是电视(展示视频和图像。我已经安装了VLC-Nox,如果在默认控制台(物理键盘(中调用它,则可以按预期运行。


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

directfb vout显示错误:无法创建主表面FB Vout显示错误:无法获得终端模式(设备不适当的IOCTL(核心视频输出错误:视频输出创建失败核心解码器错误:无法创建视频输出


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的方式是什么?

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

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

第1部分:让VLC以守护程序模式运行。

  1. 为守护程序创建用户并分配音频和视频特权。

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

  1. 使用TTY1
  2. 在启动时运行VLC

我已经在Ubuntu下的单元尝试了一下。

[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

请注意ConflictsExecStartStandardInputStandardOutput零件。

  • Conflicts中,它将绕过默认的盖蒂服务,否则应由#systemctrl disable getty@tty1手动禁用。
  • ExecStart中,请勿使用-D开关,这意味着它将继续运行和占用VT 1,该VT 1被 alt> Alt - f1 激活。-rc启用远程连接接口。
  • StandardInput/Output中,将tty指定为输入和输出设备。

第2部分:与守护程序的远程交谈,让它播放文件。

--rc-host指定本地端口时,我们需要先向服务器ssh。然后,使用telnet与VLC进行交互(添加,播放,暂停(。

telnet 127.0.0.1 8080
add /path/to/video/file

最新更新