有没有办法通过 ssh 播放音频文件?
我设置了 x11 转发,以查看图像、视频(不带音频),但问题是我想要通过 ssh 播放声音,由于 x11 转发不支持音频,我已经使用了 pulseAudio,但它仍然不能通过 ssh 转发音频。
还有其他播放声音的可能性吗?或者有什么方法或技术可以在没有桌面环境的远程服务器上播放声音?
我将非常感激您的任何回复。
答案1
我已经使用了 pulseAudio,但它仍然无法通过 ssh 转发音频。
如果您通过 SSH 转发 PulseAudio 连接,则确实如此。这需要手动完成;没有与ssh -X
X11 内置选项等效的选项,尽管如果您的 SSH 客户端和服务器版本足够新,那么您至少可以使用-R
通用转发选项。
套接字位置通常为$XDG_RUNTIME_DIR/pulse/native
(或/run/user/$UID/pulse/native
)——请注意,如果您的 UID 在客户端和服务器之间不同,则路径也会不同。例如,如果您的偏僻的UID 是 1003,您可以使用:
本地 $ ssh -R /run/user/1003/pulse/native:$XDG_RUNTIME_DIR/pulse/native myserver 我的服务器$ pactl info
(语法是-R <remote>:<local>
。)
或者,指定自定义路径:
本地 $ ssh -R /tmp/mypulse:$XDG_RUNTIME_DIR/pulse/native myserver myserver$ export PULSE_SERVER=unix:/tmp/mypulse 我的服务器$ pactl info
请注意,PulseAudio 与 X11 非常相似,具有网络支持和“身份验证”要求。对于 X11,SSH 客户端会自动处理此问题;对于 PulseAudio,它可能在 X11 的帮助下自动工作(使用 pax11publish),但如果不这样做,那么您将需要手动~/.config/pulse/cookie
从本地系统传输到远程系统(X11/PA 客户端所在的位置),例如使用scp
。
此外,由于这会传输未压缩的 PCM 音频,因此它需要的带宽将比典型的音频流多得多。(这实际上与 X11 转发的情况相同,后者会传输未压缩的位图……)您可能还需要ssh -C
(压缩)选项。
更复杂的是,在某些 Linux 发行版中,“PulseAudio”实际上是由较新的 PipeWire 模拟的,它有自己的协议,但也使用 PA。幸运的是,它的行为就像一个普通的 PulseAudio 服务器;套接字和 cookie 路径是相同的。
所有其他替代方案都大体相同:即使不是 PulseAudio,它仍然需要某种可以以相同方式通过 SSH 转发的客户端/服务器协议。