我正在尝试通过 ssh 连接将 .wav 声音从 Linux 服务器转发到本地 Windows 笔记本电脑。我通过 MobaXTerm 进行 ssh,X11 转发已打开。
目标是在我的本地扬声器上输出在 Linux 盒子上运行的程序的声音。目前,直接播放声音就足够了。
$ papplay sound.wav 不会产生任何错误。
Pulse 配置为使用 paprefs 来查找本地发言人...但事实并非如此。
通过安装目录,然后使用 Windows 本机播放器播放,wav 文件可以在本地计算机上正常播放。
MobaXTerm 是否有插件支持音频转发?如何在 Windows 计算机上捕获转发的声音来修复我认为当前有效但未完全执行的解决方案?
答案1
SSH 本身没有图形或声音转发功能。 X11 协议是网络就绪的,它允许 GUI 应用程序非常轻松地通过网络转发:SSH 所要做的就是转发网络连接。应用程序显示端必须有X11服务器;除了作为 SSH 客户端之外,MobaXterm 还包括终端仿真器和 X11 服务器。
声音不能以这种方式工作,但您可以通过使用声音服务器使其以这种方式工作](http://en.wikipedia.org/wiki/Sound_server)。这意味着指示发声应用程序使用网络协议,指示 SSH 转发网络连接,并让应用程序播放通过客户端网络连接接收到的声音。 MobaXterm 不包含声音播放部分,Windows 本身也不包含(当然不包含),因此您需要安装一个。
paplay
与脉冲音频声音服务器,您可以通过 SSH 转发该连接。在远程计算机上,运行
pacmd load-module module-native-protocol-tcp
(它可能已经在系统范围内启用)。您也可以通过 paprefs 来完成此操作。您现在应该有一个名为~/.pulse-cookie
或的文件,~/.config/pulse/cookie
具体取决于您的发行版。将该文件复制到 Windows 计算机。
通过 SSH 连接,将端口转发到服务器上的端口 4713,例如 4714。(您可以在两侧选择 4713;在服务器端,它必须是 PulseAudio 正在侦听的端口,默认情况下为 4713。)(使用OpenSSH 命令行,你会这样做ssh -L 4714:localhost:4713
)。
在 Windows 上,安装PulseAudio 端口。我不知道它们是如何工作的,因为我从未使用过它们;您需要将它们指向 cookie 文件和转发的连接(端口 4714)。
也可以看看官方说明(并不是那么有帮助)和grawity 在超级用户上的帖子它还解释了如何在不使用 SSH 的情况下传输 PulseAudio 连接(这意味着更少的延迟,但不安全并且可能被防火墙阻止)。
我的意思是,它首先使用的协议是网络通信协议。