目标:在服务器上播放音乐,最好使用 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
我使用mpd
和ncmpcpp
来实现同样的事情。
mpd
在服务器上启动,然后用于ncmpcpp -h hostname_of_jukebox
从网络上的任何其他计算机控制它。
ssh
除了远程启动之外不需要mpd
(如果需要,可以作为服务/守护程序自动启动)。
mpd
您也可以使用其他程序来控制。