我想通过 SSH 在远程机器上播放声音,无需 X11 参与。无论用户是否登录到控制台或 X,这都应该可以工作。
基本上,通过 ssh 登录后,命令行如下
mpg123 test.mp3
应该在这台远程机器上播放 test.mp3。换句话说,一个穷人的 PA 系统。我在 paprefs 面板中允许通过网络进行无密码音频访问,但当我尝试通过 ssh 播放时仍然没有声音。
实现这一目标的最简单、最可靠的方法是什么?
附言:过去的问题的答案质量很低,没有回答这个问题。
答案1
设置DISPLAY
变量可以:0
帮我解决问题。尝试运行以下命令:
$ DISPLAY=:0 mpg123 test.mp3
答案2
对于最近的 Ubuntu 系统(在本例中为 17.10),有必要pulseaudio
在系统启动时运行或手动运行以通过 ssh 获取音频。pulseaudio
默认情况下,按用户启动,因此如果没有人登录,您只会获得 SSH 登录的空接收器,其中所有音频都会悄悄消失。
对于永久的解决方案,可以创建一个 systemd 服务:
cat <<EOF >/etc/systemd/system/pulseaudio.service
[Unit]
Description=Pulse Audio
[Service]
Type=simple
ExecStart=/usr/bin/pulseaudio --system --disallow-exit --disable-shm --exit-idle-time=-1
[Install]
WantedBy=multi-user.target
EOF
这确保 pulseaudio 守护进程在启动时随着用户脉冲启动。由于开发人员强烈反对这种做法,临时使用的首选方案应该是sudo pulseaudio --system -D
通过 SSH 发出。
如果 pulseaudio 实例已在运行,则应将其终止,以允许新实例发现硬件。这会影响所有登录用户的音频,应根据具体情况进行处理。
无论如何,登录的用户需要成为脉冲访问组的一部分:
sudo usermod -a -G pulse-access userName
现在可以通过 SSH 在远程系统( 或其他)上播放声音mpg123
。mpv
可以通过pactl list short sinks
正确检测音频接收器来检查是否成功。