背景
我有一个在没有安装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的方式是什么?
答案 0 :(得分:0)
我终于有了解决方案,所以我在这里发布,以防有人有同样的问题。
我的理解是vlc需要在真正的tty下运行,而不是伪tty。我的解决方案由两部分组成。
第1部分:让vlc以守护进程模式运行。
Ex: list = "[1,2,3,4,5]"
Operation : Convert list which is string to a list
o/p: list = [1,2,3,4,5]
我在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
,Conflicts
,ExecStart
和StandardInput
部分。
StandardOutput
中,它会绕过默认的getty服务,否则应由Conflicts
手动停用。#systemctrl disable getty@tty1
中,不要使用-d开关,这意味着它将继续运行并占用VT 1,由 Alt - F1 。 ExecStart
启用远程连接接口。-rc
中,指定StandardInput/Output
作为输入和输出设备。第2部分:与守护进程远程通话,让它播放该文件。
当tty
指定本地端口时,我们需要首先ssh到服务器。然后,使用telnet与vlc进行交互(添加,播放,暂停)。
--rc-host