在 Ubuntu / Linux 上通过 ssh 在远程机器上播放声音

在 Ubuntu / Linux 上通过 ssh 在远程机器上播放声音

我想通过 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 在远程系统( 或其他)上播放声音mpg123mpv可以通过pactl list short sinks正确检测音频接收器来检查是否成功。

相关内容