如何使用 Pipewire 实现(自动)同步输出?

Rol*_*Xor 17 sound pulseaudio pipewire

我想让我的系统自动输出到所有可用的声音设备(最好使用 Pulseaudio 音量控制中的接收器)。单独使用 Pulseaudio 时这是可能的。

用 Pipewire 可以吗?如果是,您将如何实现这一目标?
是否可以将其设置为自动可用?

Rol*_*Xor 17

在报告错误并得到对我的问题的答复后,我终于找到了答案。解决方案非常简单:

跑步:

pactl load-module module-combine-sink
Run Code Online (Sandbox Code Playgroud)

您可以使用 PipeWire 获得相同的功能。

如果我正确理解这些说明,您可以通过复制并添加以下内容来使其永久/usr/share/pipewire/pipewire-pulse.conf~/.config/pipewire/pipewire-pulse.conf

context.exec = [
    { path = "pactl"  args = "load-module module-combine-sink" }
]
Run Code Online (Sandbox Code Playgroud)

然后保存文件。或者,您可以将第一个命令添加到启动应用程序中。


cyq*_*mon 6

这是为了补充OP的答案:

根据man pipewire.conf(以及一些推断),您可以使用插入文件达到相同的效果,因此这应该是 IMO 的首选方法。

这些目录适用/etc/pipewire/pipewire-pulse.conf.d/于全局和$XDG_CONFIG_HOME/pipewire/pipewire-pulse.conf.d/用户(~/.config/pipewire/pipewire-pulse.conf.d/如果$XDG_CONFIG_HOME未设置,则默认为)。


所以只需创建这个文件(mkdir -p如果目录不存在):

$XDG_CONFIG_HOME/pipewire/pipewire.conf.d/add-combined-sink.conf

context.exec = [
    { path = "pactl" args = "load-module module-combine-sink" }
]
Run Code Online (Sandbox Code Playgroud)

请注意,在我的测试中,如果我将插入文件放入 中/etc/pipewire/pipewire-pulse.conf.d/,组合输出会发生一些奇怪的情况(音调变得更高并引入常规的口吃)。

如果我必须猜测,这可能与模块的加载顺序有关:很可能有一种方法可以修复它,但我没有费心去调查。不过,把它放进去$XDG_CONFIG_HOME/pipewire/pipewire-pulse.conf.d/效果很好,所以这就是我所做的。