几乎所有 CLI 音乐播放器都无法工作(在 SSH 终端中)

几乎所有 CLI 音乐播放器都无法工作(在 SSH 终端中)

目标:在服务器上播放音乐,最好使用 cmus,使用 SSH 进行播放器控制。

第一次尝试:cmus
cmus在终端中运行,实际上什么也没发生。它只是加载(我猜)。尝试过cmus -vvvvv- 也只是加载。尝试过- 问题没有改变。但:从计算机上的物理终端运行它是可行的! (均启动cmus,并成功播放音频)

第二次尝试:MOC
运行mocp打开它,我也可以添加文件。尝试播放歌曲时,出现以下消息:can't open audio: device or resource busy MOC- 找不到可能的解决方案。

第三次尝试:mp3blaster
开始。我可以添加文件。它无法播放:Failed to open sound device
尝试了谷歌的一些建议(非常过时),但没有任何帮助。似乎对许多其他人有帮助的人是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),它就可以工作。

答案1

我用我一直错过的一些相当明显的东西解决了这个问题。我不得不允许其他用户(不是登录到运行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,其他所有球员都工作得很好。

答案2

我使用mpdncmpcpp来实现同样的事情。

mpd在服务器上启动,然后用于ncmpcpp -h hostname_of_jukebox从网络上的任何其他计算机控制它。

ssh除了远程启动之外不需要mpd(如果需要,可以作为服务/守护程序自动启动)。

mpd您也可以使用其他程序来控制。

相关内容