我想通过 SSH 在远程机器上播放声音,而无需 X11 参与。无论用户是否登录到控制台或 X,这都应该有效。
基本上,通过 ssh 登录后,命令行如下
mpg123 test.mp3
Run Code Online (Sandbox Code Playgroud)
应该在这台远程机器上播放 test.mp3。换句话说,一个穷人的公共广播系统。我在 paprefs 面板中允许通过网络进行无密码音频访问,但是当我尝试通过 ssh 播放时仍然没有声音。
实现这一目标的最简单和最可靠的方法是什么?
PS:过去的问题有低质量的答案,不能回答这个问题。
小智 6
设置DISPLAY变量来:0解决我的问题。尝试运行这样的命令:
$ DISPLAY=:0 mpg123 test.mp3
Run Code Online (Sandbox Code Playgroud)
对于最新的 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
Run Code Online (Sandbox Code Playgroud)
这确保了pulseaudio守护进程在用户脉冲启动时启动。由于开发人员强烈不鼓励这样做,因此临时使用的首选解决方案应该是通过 SSH 发布sudo pulseaudio --system -D。
如果pulseaudio实例已经在运行,则应将其终止以允许新实例发现硬件。这会影响所有登录用户的音频,应根据具体情况进行处理。
无论如何,登录的用户必须是脉冲访问组的一部分:
sudo usermod -a -G pulse-access userName
Run Code Online (Sandbox Code Playgroud)
现在可以通过 SSH 在远程系统( 或其他系统)上播放mpg123声音mpv。可以通过pactl list short sinks正确的音频接收器检测来检查是否成功。
| 归档时间: |
|
| 查看次数: |
15393 次 |
| 最近记录: |