所以我有finch
一个命令行聊天客户端(想想 pidgin),在我ssh
进入的远程计算机上运行。finch
具有通知声音,并且可以在发生某些事件时运行命令,让您将声音文件作为%s
.例如mplayer %s
从远程计算机,当通知发生时,我可以运行什么样的命令来播放%s
本地计算机上的任何内容?
答案1
如果你使用脉冲音频作为声音服务器,您可以用来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
显然,您可以简单地不在脉冲音频中使用任何身份验证,但我不能推荐您这个解决方案。至少使用防火墙来避免远程连接。