PipeWire中替代PulseAudio module-switch-on-port-available模块的功能是什么?
PipeWire中替代PulseAudio module-switch-on-port-available模块的功能是什么?
嘿,我来帮你搞定这个问题!我之前也碰到过类似的情况——插拔DAC后PipeWire不会自动重连,确实挺烦人的。
其实PipeWire里替代PulseAudio那个module-switch-on-port-available模块的功能,是由它的会话管理器来实现的,现在主流的会话管理器是WirePlumber(之前旧版用的是pipewire-media-session,现在大多发行版默认都换成WirePlumber了)。下面分两种情况给你说具体操作:
如果你用的是WirePlumber(绝大多数现代发行版默认)
先确认当前会话管理器是不是WirePlumber,打开终端输这个命令:
pipewire --info | grep "session manager"如果输出里有
WirePlumber就对了。接下来要调整WirePlumber的设备策略配置。你可以直接修改系统级的配置文件
/usr/share/wireplumber/main.lua.d/50-device.lua,或者更稳妥的是在用户目录下创建自己的配置(不会被系统更新覆盖):mkdir -p ~/.config/wireplumber/main.lua.d/ cp /usr/share/wireplumber/main.lua.d/50-device.lua ~/.config/wireplumber/main.lua.d/打开这个
50-device.lua文件,找到或者添加自动切换的规则。比如在文件末尾加上这段代码,开启音频设备的自动切换:-- 开启设备插拔时自动切换音频路由 rule = { matches = { { { "device.class", "matches", "audio" }, }, }, apply_properties = { ["device.routes.autoswitch"] = true, ["device.routes.autoswitch.priority"] = 100, -- 优先级越高越优先切换 }, } table.insert(alsa_monitor.rules, rule)保存文件后,重启WirePlumber服务让配置生效:
systemctl --user restart wireplumber.service
如果你还在使用旧版的pipewire-media-session
这种情况比较少见了,但还是给你提一下:
- 打开配置文件
/etc/pipewire/media-session.d/alsa-monitor.conf - 找到
audio.routing.autoswitch这一行,把它改成= true(如果注释掉了就去掉前面的#) - 重启服务:
systemctl --user restart pipewire-media-session.service
这样设置之后,下次你关闭再打开外部DAC,PipeWire应该就能自动识别并重新连接上了!
备注:内容来源于stack exchange,提问作者SupaKoopaTroopa64
相关产品推荐
相关产品推荐

