在本地计算机上通过ssh播放声音/通知


9

因此,我有finch一个在我ssh进入的远程计算机上运行的命令行聊天客户端(例如pidgin)。finch具有通知声音,并且可以在发生某些事件时运行命令,使您可以将声音文件作为传递%s。例如mplayer %s

从远程计算机发出通知时,我可以运行哪种命令来播放%s本地计算机上的内容?

Answers:


7

如果您将Pulse-Audio用作声音服务器,则可以module-native-protocol-tcp用来接受来自远程计算机的TCP连接。

在以下示例中,我使用ssh隧道将音频请求从远程计算机转发到本地计算机。

在本地计算机上,执行以下操作:

pactl load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
ssh -R 9999:127.0.0.1:4713 you@remotehost

然后在远程计算机上,您可以使用 paplay

paplay -s 127.0.0.1:9999 soundfile.wav

另外,我发现该参数auth-ip-acl不接受localhost作为有效参数,因此必须使用127.0.0.1(或任何使用本地主机地址的计算机)。

编辑应该是ssh -R,而不是ssh -L(我们正在将远程端口转发到本地端口)。


如果您使用的是旧版本的Pulse-Audio(0.9.3之前的版本),则可以使用基于cookie的授权。

pactl load-module module-native-protocol-tcp auth-anonymous=1 auth-cookie-enabled=0
scp ~/.pulse-cookie you@remotehost:
ssh -R 9999:localhost:4713 you@remotehost

显然,您可以根本不对脉冲音频使用任何身份验证,但是我不建议您使用此解决方案。至少使用防火墙以避免远程连接。


在上显示“失败:模块初始化失败” pactl load-module module-native-protocol-tcp auth-ip-acl=localhost。我是否缺少依赖项?
测试人员

尝试pulseaudio --check ; echo $?检查Pulseaudio服务器是否正在运行。0如果正在运行,它将打印。
andcoz 2012年

在我的机器上(opensuse 12.1),该模块位于/usr/lib64/pulse-1.1/modules/module-native-protocol-tcp.so。您在哪个发行版上运行?
andcoz 2012年

我的本地计算机0正确地回应。.远程在ubuntu 11.10上,而我的本地在11.04上。我尝试直接在本地引用该模块, pactl load-module /usr/lib/pulse-0.9.22/modules/module-native-protocol-tcp.so auth-ip-acl=localhost 然后得到了Failure: Invalid argument。任何的想法?(btw感谢您的帮助)
测试人员

auth-ip-acl从版本0.9.3开始受支持。见freedesktop.org/wiki/Software/PulseAudio/Documentation/User/...
andcoz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.