我希望我的系统自动输出到所有可用的音频设备(最好使用 Pulseaudio Volume Control 中的接收器)。单独使用 Pulseaudio 时可以实现这一点。
使用 Pipewire 可以实现吗?如果可以,您将如何实现?
是否可以将其设置为自动可用?
答案1
跑步:
pactl load-module module-combine-sink
您可以通过 PipeWire 获得相同的功能。
如果我理解这些指示/usr/share/pipewire/pipewire-pulse.conf
正确地说,你可以通过复制并添加来使其永久生效~/.config/pipewire/pipewire-pulse.conf
:
context.exec = [
{ path = "pactl" args = "load-module module-combine-sink" }
]
然后保存文件。或者,您可以将第一个命令添加到启动应用程序中。
答案2
这是为了补充OP的答案:
根据man pipewire.conf
(和一点推断),您可以使用插入文件达到相同的效果,所以在我看来这应该是首选方法。
这些目录/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" }
]
请注意,在我的测试中,如果我将插入文件放入/etc/pipewire/pipewire-pulse.conf.d/
,组合输出会发生一些奇怪的事情(音调变得更高并引入规则的卡顿)。
如果一定要我猜的话,那可能与模块的加载顺序有关:很可能有办法修复它,但我还没费心去研究。$XDG_CONFIG_HOME/pipewire/pipewire-pulse.conf.d/
不过,把它放进去就没问题了,所以我就这么做了。
答案3
对于 PipeWire 版本 0.3.65,我们还有一个可用的本机模块:module-combine-stream
。
对于同步输出配置,您需要使用以下内容pipewire.conf
,改编自文档中的示例:
context.modules = [
{ name = libpipewire-module-combine-stream
args = {
combine.mode = sink
node.name = "my_combined_sink"
node.description = "My Combined Sink"
combine.props = {
audio.position = [ FL FR ]
}
stream.rules = [
{
matches = [
{
media.class = "Audio/Sink"
}
]
actions = {
create-stream = {
}
}
}
]
}
}
]
如果您只想组合特定的接收器,那么您当然可以向数组中添加更多条目matches
并指定node.name
,而不是匹配所有接收器。
如果您还不知道它们的名称,您可以通过 获取所有可用的接收器名称pw-link -o
。
答案4
您可以检查赫尔沃姆 接收器和源是否正确连接。