[英]How to start vlc-nox via ssh in a Linux server running in text mode?
背景
我有一台未安裝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
聯邦調查局的方式
我認為聯邦調查局也面臨着同樣的問題,因為它會引發如下錯誤:
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作為守護程序模式運行。
#useradd -c "VLC daemon" -d / -G audio,video -M -p \\! -r -s /bin/false -u 75 -U vlcd
我已經在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
請注意Conflicts
, ExecStart
, StandardInput
和StandardOutput
部分。
Conflicts
,它將繞過默認的getty服務,否則應通過#systemctrl disable getty@tty1
手動將其禁用。 ExecStart
,請勿使用-d開關,這意味着它將繼續運行並占用由Alt - F1激活的VT 1。 -rc
啟用遠程連接接口。 StandardInput/Output
,將tty
指定為輸入和輸出設備。 第2部分 :與守護程序進行遠程對話,以使其播放文件。
由於--rc-host
指定了本地端口,因此我們需要先ssh到服務器。 然后,使用telnet與vlc進行交互(添加,播放,暫停)。
telnet 127.0.0.1 8080
add /path/to/video/file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.