如何通过 pipewire 将音频从一个 Linux 系统传输到另一个 Linux 系统?

如何通过 pipewire 将音频从一个 Linux 系统传输到另一个 Linux 系统?

最近我已完全从 pulseaudio 切换到 pipewire。一切都很好,只是文档中关于如何设置网络流的说明不太清楚。

我的目标是:

  • 将麦克风音频从主系统传输到辅助系统
  • 从辅助设备获取音频输出并将其流回主设备。

许多人指出我Pipewire 文档,但他们根本没有解释这些命令实际上起什么作用。

我尝试过的:

在两台机器上创建~/.config/pipewire/pipewire.conf包含内容的文件。/usr/share/pipewire/pipewire.conf

将此模块添加到主机:

{   
    name = libpipewire-module-roc-source
    args = {
        local.ip = 0.0.0.0
        resampler.profile = medium
        sess.latency.msec = 5000
        local.source.port = 10001
        local.repair.port = 10002
        source.name = "ROC Source"
        source.props = {
           node.name = "roc-source"
        }
    }
}

然后将此模块添加到辅助机器:

{   
    name = libpipewire-module-roc-sink
    args = {
        local.ip = 0.0.0.0
        remote.ip = 192.168.0.xxx
        remote.source.port = 10001
        remote.repair.port = 10002
        sink.name = "ROC Sink"
        sink.props = {
          node.name = "roc-sink"
        }
    }
}

此配置有效并在辅助计算机上创建输出接收器并在主机上创建输入,但它无法传输其他设备,并且延迟根本无法使用。

我不确定在这种情况下 roc 是否是可行的方法,所以如果我错了,请纠正我。

pipewire-full-git roc-toolkit pipewire-full-roc-git在两台机器上使用 Arch Linux

答案1

从这里回答gist.github.com/savegame/pulse_sreaming.md

在服务器上,耳机已连接

pactl load-module module-native-protocol-tcp port=4656 listen=<Server_IP>

在播放音乐的客户端上

pactl load-module module-tunnel-sink server=tcp:<Server_IP>:4656

答案2

我正在寻找类似的设置。我在 KVM 中有虚拟机,我想将其连接到 pipewire。

我最终使用了本地桥接网络,并通过桥接器将 VM 上的 PulseAudio 连接到 pipewire 的 PulseAudio 套接字。

不过我认为应该可以用模块来实现这一点协议简单或者使用模块协议本机并用socat将其公开。

相关内容