在 SSH 中转发类似 X 的音频

Aki*_*lan 32 ssh

虽然可以通过在 ssh 中使用 -X 开关远程使用 X 应用程序,但声音仅在远程机器的扬声器中播放。例如,如果我在 VLC/Totem 中观看电影,则只能看到视频而听不到音频。有没有办法转发音频?[没有深入研究 Pulse-audio 的设置,我的意思是;就像 ssh 如何理解 X 转发一样。]

如果有帮助,我只在 Ubuntu(在 9.10 到 10.10 的各种 Ubuntu 版本中)尝试过这个。

use*_*686 31

首先,运行paprefs,转到网络服务器并选中Enable network access to local sound devices。这将在 PulseAudio 中加载“module-native-protocol-tcp”。

您现在可以通过多种方式访问​​ PulseAudio 服务器:

通过 SSH 手动转发 TCP 连接

  1. 使用pax11publish来发现你的PulseAudio监听端口(通常是4713);
  2. 连接到另一台计算机ssh -R 24713:localhost:4713(远程端口'24713'是任意选择的);
  3. 将您的身份验证 cookie (~/.config/pulse/cookie) 复制到该计算机;
  4. 最后运行export PULSE_SERVER="tcp:localhost:24713"并测试pactl info

将自动直接连接与基于 X11 的发现结合使用

每当您启用 X11 转发的 SSH 时,PulseAudio 程序都会使用 X11 来发现您的声音服务器(使用pax11publishxprop -root PULSE_SERVER亲自查看)。他们将尝试与您的计算机建立直接(非 SSH、未加密)连接以进行音频流传输。

使用带有 DNS-SD 发现的自动直接连接

如果您安装了 avahi-daemon 和 pulseaudio-zeroconf,您可以激活“允许其他机器发现本地设备”。这将加载“module-zeroconf-publish”。

启用了“使可发现的网络设备在本地可用”选项的其他计算机(module-zeroconf-discover)将自动列出您的计算机导出的输出(接收器)。他们将使用直接(未加密)连接进行音频流传输。

此方法还要求 ~/.config/pulse/cookie 跨主机相同。

  • `~/.pulse_cookie` 在哪里存在?在远程还是本地? (2认同)
  • 两个都。它由pulseaudio守护进程生成,然后通过连接客户端(如密码)读取,因此您需要将其从服务器复制到客户端。(请注意,路径已更改为`~/.config/pulse/cookie`;如果一个不起作用,请尝试另一个。) (2认同)
  • 请注意,更改 paprefs 中的设置后,您必须至少手动重新启动pulseaudio。就我而言,在花了几个小时试图找出问题所在后,我只是重新启动,然后一切正常:)。 (2认同)
  • 您可以添加 `if test "$SSH_CLIENT" ;然后 pax11publish -i ;导出 PULSE_SERVER=tcp:localhost:24713 ;fi` 到远程 .bashrc :这将在您 ssh 时自动设置pulsecookie和env变量 (2认同)
  • 明确要在哪台机器上执行哪些过程非常重要。如果使用“客户端”和“服务器”这两个词,那么弄清楚它们是谁也很重要。对于 X,程序在 X 客户端上运行并在 X 服务器上显示,这与这两个词的直觉相反。那么谁是第一台计算机,谁是“另一台”呢? (2认同)