簡體   English   中英

如何在以文本模式運行的Linux服務器中通過ssh啟動vlc-nox?

[英]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作為守護程序模式運行。

  1. 為守護程序創建一個用戶並分配音頻和視頻特權。

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

  1. 使用tty1在啟動時運行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 ,它將繞過默認的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM