Linux
如何在 Fedora 35 中使用 WirePlumber 在空閒時禁用音頻接收器掛起,以便在開始播放時不會延遲音頻?
在 Fedora 35 中,WirePlumber 已取代 pipewire-media-session 作為音頻會話管理器。Linux 上的許多內置音效卡上的音頻存在一個非常煩人的問題,其中音頻接收器在 3 秒內沒有播放任何內容後暫停。3 秒後恢復播放後,音頻延遲或彈出。我們如何解決此預設行為?
相關配置文件是
/usr/share/wireplumber/main.lua.d/50-alsa-config.lua
,但不要編輯它的系統版本!您需要將其複製到
/etc/wireplumber/main.lua.d/
(全域配置)或~/.config/wireplumber/main.lua.d/
(使用者配置)並進行必要的更改。最簡單的方法是將其複製到全域配置位置,以便應用於所有使用者帳戶:
sudo cp -a /usr/share/wireplumber/main.lua.d/50-alsa-config.lua /etc/wireplumber/main.lua.d/50-alsa-config.lua sudo nano /etc/wireplumber/main.lua.d/50-alsa-config.lua
然後,您需要向下滾動到該文件的底部,在該
apply_properties
部分內,並在那裡添加一行內容:["session.suspend-timeout-seconds"] = 0
我做了很多更改並為我自己的個人硬體定制了它。這是我的配置供參考,但此配置僅對我的確切設備有用。您實際上只需要上面的行來禁用自動掛起。將其添加到您自己的預設配置中。**不要複製我的配置。**我所做的其他更改是無關的。
alsa_monitor.properties = { ["alsa.jack-device"] = true, ["alsa.reserve"] = true, ["alsa.midi.monitoring"] = true } alsa_monitor.rules = { { matches = { { { "device.name", "matches", "alsa_card.*" } } }, apply_properties = { ["api.alsa.use-acp"] = true, ["api.acp.auto-profile"] = false, ["api.acp.auto-port"] = false } }, { matches = { { { "node.name", "matches", "alsa_output.pci-0000_0c_00.4.iec958-ac3-surround-51" } } }, apply_properties = { ["api.alsa.period-size"] = 128, ["api.alsa.headroom"] = 2048, ["session.suspend-timeout-seconds"] = 0 } }, { matches = { { { "node.name", "matches", "alsa_input.usb-BEHRINGER_UMC202HD_192k-00.analog-mono" } } }, apply_properties = { ["api.alsa.period-size"] = 128 } } }
設置該
session.suspend-timeout-seconds
屬性以0
防止掛起/睡眠行為。從 WirePlumber 的原始碼中可以看出,它完全禁用了該行為。必須重新啟動 WirePlumber 才能使更改生效:
systemctl --user restart wireplumber