Command-Line

幾乎每個 CLI 音樂播放器都不起作用(在 SSH 終端中)

  • November 5, 2018

目標:在伺服器上播放音樂,最好使用 cmus,使用 SSH 進行播放器控制。

第一次嘗試:cmus

cmus在終端中執行,實際上沒有任何反應。它只是載入(我猜)。試過cmus -vvvvv- 也只是載入。試過這個這個- 沒有改變這個問題。**但是:**從電腦上的物理終端執行它可以工作!(既啟動cmus,又成功播放音頻)

第二次嘗試:MOC

執行mocp打開它,我也可以添加文件。嘗試播放歌曲時,會出現以下消息:can't open audio: device or resource busy MOC- 未找到可能的解決方案。

第三次嘗試:mp3blaster

開始。我可以添加文件。它不播放:Failed to open sound device

嘗試了Google的幾個建議(非常過時),沒有任何幫助。似乎在這方面幫助了許多其他人的是padsc mp3blaster- 但同樣,對我沒有幫助。

我將 ALSA 與 PulseAudio 一起使用。音頻本身工作正常。play或者mplayer兩者都可以正常工作,但它們不提供庫和播放列表。兩者都可以通過 SSH 正常工作。

我真的不知道在這裡做什麼,因為 cmus 不列印任何東西並且mplayer工作正常. 我檢查了一下alsamixer,沒有任何東西被靜音或禁用。只有一個音效卡。

不想在這裡提出一個廣泛的建議我的問題,我只是添加了其他玩家,因為它可能有助於找到問題,但問題的目的是專注於cmus開始工作。

我也嘗試DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus cmus過(在此處找到),結果相同。

編輯:要清楚:音樂在我通過 SSH 連接的機器上,我想從機器本地播放音樂,通過 SSH****控制CLI 音樂播放器。對困惑感到抱歉。我不想通過 SSH 流式傳輸音頻。我只想cmus在 SSH 終端中使用來播放我正在連接的伺服器上已經存在的音樂。

編輯:mplayer也不再起作用了,它一直使用到我剛剛嘗試過:

AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
[AO_ALSA] alsa-lib: pcm_hw.c:1602:(snd_pcm_hw_open) open '/dev/snd/pcmC0D0p' failed (-16): Device or resource busy
[AO_ALSA] alsa-lib: pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
[AO_ALSA] Playback open error: Device or resource busy
Failed to initialize audio driver 'alsa'
[AO SDL] Samplerate: 32000Hz Channels: Stereo Format s16le
[AO SDL] using aalib audio driver.
[AO SDL] Unable to open audio: No available audio device
Failed to initialize audio driver 'sdl:aalib'
Could not open/initialize audio device -> no sound.
Audio: no sound
Video: no video

同樣適用於play

ALSA lib pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
play FAIL formats: can't open output file `default': snd_pcm_open error: Device or resource busy

我也試過root了,結果一樣。**但是:**如果我以登錄到 X 會話的使用者身份執行(甚至通過 SSH),它可以工作。

我解決了這個問題,很明顯我一直錯過了這個問題。我必須允許其他使用者(不是登錄到執行 pulseaudio 守護程序的 X 會話的使用者)訪問 PA。

在 PA 守護程序執行的使用者上:

# create pulse config dir in $HOME if it doesn't exist yet
mkdir .pulse
# copy the default PA config file
cp /etc/pulse/default.pa .pulse/default.pa
# edit the file
nano .pulse/default.pa

然後在文件末尾添加:

# make PA accessible by all users
load-module module-native-protocol-unix auth-anonymous=1 socket=/tmp/acpulsesocket

然後,以您要播放音頻的使用者身份登錄:

# create pulse config dir in $HOME of the controlling user
mkdir .pulse
# create client configuration file
nano .pulse/client.conf

並將以下內容粘貼到文件中:

default-server = unix:/tmp/acpulsesocket

保存,重啟pulseaudio:pulseaudio -k

現在cmus,所有其他玩家都工作得很好。

引用自:https://unix.stackexchange.com/questions/479797