Fedora
pulseaudio 使瀏覽器中的影片凍結
當我使用啟動(或重新啟動)pulseaudio 服務時,
pulseaudio -k
我會播放影片,並且 pulseaudio 服務顯示:➜ systemctl --user status pulseaudio ● pulseaudio.service - Sound Service Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; disabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/user/pulseaudio.service.d └─00-uresourced.conf Active: active (running) since Fri 2022-03-25 13:42:07 CDT; 539ms ago TriggeredBy: ● pulseaudio.socket Main PID: 92526 (pulseaudio) Tasks: 5 (limit: 308781) Memory: 7.7M CPU: 276ms CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pulseaudio.service └─92526 /usr/bin/pulseaudio --daemonize=no --log-target=journal Mar 25 13:42:07 fedora systemd[4316]: Starting Sound Service... Mar 25 13:42:07 fedora systemd[4316]: Started Sound Service.
然後當我停止觀看影片並切換到其他活動(如在 shell 中執行 CLI 命令)時,我在狀態中收到一條錯誤消息,並且我的影片被凍結並且無法播放。我必須重新啟動pulseaudio
pulseaudio -k
➜ systemctl --user status pulseaudio ● pulseaudio.service - Sound Service Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; disabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/user/pulseaudio.service.d └─00-uresourced.conf Active: active (running) since Fri 2022-03-25 13:42:07 CDT; 58s ago TriggeredBy: ● pulseaudio.socket Main PID: 92526 (pulseaudio) Tasks: 5 (limit: 308781) Memory: 7.7M CPU: 641ms CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pulseaudio.service └─92526 /usr/bin/pulseaudio --daemonize=no --log-target=journal Mar 25 13:42:07 fedora systemd[4316]: Starting Sound Service... Mar 25 13:42:07 fedora systemd[4316]: Started Sound Service. Mar 25 13:42:32 fedora pulseaudio[92526]: GetManagedObjects() failed: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. lines 1-16/16 (END)
✗ pactl list short 0 module-device-restore 1 module-stream-restore 2 module-card-restore 3 module-augment-properties 4 module-switch-on-port-available 5 module-udev-detect 6 module-alsa-card device_id="0" name="pci-0000_00_1f.3" card_name="alsa_card.pci-0000_00_1f.3" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1" 7 module-alsa-card device_id="2" name="pci-0000_17_00.1" card_name="alsa_card.pci-0000_17_00.1" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1" 8 module-alsa-card device_id="1" name="usb-046d_HD_Pro_Webcam_C920_2BB3701F-02" card_name="alsa_card.usb-046d_HD_Pro_Webcam_C920_2BB3701F-02" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1" 9 module-alsa-card device_id="3" name="usb-Lenovo_ThinkPad_USB-C_Dock_Gen2_USB_Audio_000000000000-00" card_name="alsa_card.usb-Lenovo_ThinkPad_USB-C_Dock_Gen2_USB_Audio_000000000000-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1" 10 module-bluetooth-policy 11 module-bluetooth-discover 12 module-bluez5-discover 13 module-native-protocol-unix 14 module-default-device-restore 15 module-always-sink 16 module-intended-roles 17 module-suspend-on-idle 18 module-systemd-login 19 module-position-event-sounds 20 module-role-cork 21 module-filter-heuristics 22 module-filter-apply 0 alsa_output.pci-0000_00_1f.3.analog-stereo module-alsa-card.c s16le 2ch 44100Hz SUSPENDED 1 alsa_output.pci-0000_17_00.1.hdmi-stereo-extra1 module-alsa-card.c s16le 2ch 44100Hz SUSPENDED 0 alsa_output.pci-0000_00_1f.3.analog-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz SUSPENDED 1 alsa_output.pci-0000_17_00.1.hdmi-stereo-extra1.monitor module-alsa-card.c s16le 2ch 44100Hz SUSPENDED 2 alsa_input.usb-046d_HD_Pro_Webcam_C920_2BB3701F-02.analog-stereo module-alsa-card.c s16le 2ch 32000Hz SUSPENDED 3 alsa_input.usb-Lenovo_ThinkPad_USB-C_Dock_Gen2_USB_Audio_000000000000-00.mono-fallback module-alsa-card.c s16le 1ch 44100Hz SUSPENDED 0 module-systemd-login.c (null) 2 protocol-native.c gnome-shell 3 protocol-native.c gsd-media-keys 6 protocol-native.c pactl 0 alsa_card.pci-0000_00_1f.3 module-alsa-card.c 1 alsa_card.pci-0000_17_00.1 module-alsa-card.c 2 alsa_card.usb-046d_HD_Pro_Webcam_C920_2BB3701F-02 module-alsa-card.c 3 alsa_card.usb-Lenovo_ThinkPad_USB-C_Dock_Gen2_USB_Audio_000000000000-00 module-alsa-card.c
這是我的default.pa
#!/usr/bin/pulseaudio -nF # # This file is part of PulseAudio. # # PulseAudio is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # PulseAudio is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. # This startup script is used only if PulseAudio is started per-user # (i.e. not in system mode) .fail ### Automatically restore the volume of streams and devices load-module module-device-restore load-module module-stream-restore load-module module-card-restore ### Automatically augment property information from .desktop files ### stored in /usr/share/application load-module module-augment-properties ### Should be after module-*-restore but before module-*-detect load-module module-switch-on-port-available ### Load audio drivers statically ### (it's probably better to not load these drivers manually, but instead ### use module-udev-detect -- see below -- for doing this automatically) #load-module module-alsa-sink #load-module module-alsa-source device=hw:1,0 #load-module module-null-sink #load-module module-pipe-sink ### Automatically load driver modules depending on the hardware available .ifexists module-udev-detect.so load-module module-udev-detect .else ### Use the static hardware detection module (for systems that lack udev support) load-module module-detect .endif ### Automatically connect sink and source if JACK server is present .ifexists module-jackdbus-detect.so .nofail load-module module-jackdbus-detect channels=2 .fail .endif ### Automatically load driver modules for Bluetooth hardware .ifexists module-bluetooth-policy.so load-module module-bluetooth-policy .endif .ifexists module-bluetooth-discover.so load-module module-bluetooth-discover .endif ### Load several protocols .ifexists module-esound-protocol-unix.so load-module module-esound-protocol-unix .endif load-module module-native-protocol-unix ### Network access (may be configured with paprefs, so leave this commented ### here if you plan to use paprefs) #load-module module-esound-protocol-tcp #load-module module-native-protocol-tcp #load-module module-zeroconf-publish ### Load the RTP receiver module (also configured via paprefs, see above) #load-module module-rtp-recv ### Load the RTP sender module (also configured via paprefs, see above) #load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'" #load-module module-rtp-send source=rtp.monitor ### Load additional modules from GSettings. This can be configured with the paprefs tool. ### Please keep in mind that the modules configured by paprefs might conflict with manually ### loaded modules. .ifexists module-gsettings.so .nofail load-module module-gsettings .fail .endif ### Automatically restore the default sink/source when changed by the user ### during runtime ### NOTE: This should be loaded as early as possible so that subsequent modules ### that look up the default sink/source get the right value load-module module-default-device-restore ### Make sure we always have a sink around, even if it is a null sink. load-module module-always-sink ### Honour intended role device property load-module module-intended-roles ### Automatically suspend sinks/sources that become idle for too long load-module module-suspend-on-idle ### If autoexit on idle is enabled we want to make sure we only quit ### when no local session needs us anymore. .ifexists module-console-kit.so #load-module module-console-kit .endif .ifexists module-systemd-login.so load-module module-systemd-login .endif ### Enable positioned event sounds load-module module-position-event-sounds ### Cork music/video streams when a phone stream is active load-module module-role-cork ### Modules to allow autoloading of filters (such as echo cancellation) ### on demand. module-filter-heuristics tries to determine what filters ### make sense, and module-filter-apply does the heavy-lifting of ### loading modules and rerouting streams. load-module module-filter-heuristics load-module module-filter-apply ### Make some devices default #set-default-sink output #set-default-source input ### Allow including a default.pa.d directory, which if present, can be used ### for additional configuration snippets. .nofail .include /etc/pulse/default.pa.d
我的日記中也有這些錯誤日誌
✗ journalctl --user -ef Mar 25 13:48:47 fedora google-chrome.desktop[7682]: [8205:8205:0325/134847.035653:ERROR:pulse_util.cc(345)] pa_operation is nullptr. Mar 25 13:48:47 fedora google-chrome.desktop[7682]: [8205:8205:0325/134847.036838:ERROR:pulse_util.cc(345)] pa_operation is nullptr.
好的,所以修復是
sudo dnf install --allowerasing pipewire-pulseaudio systemctl --user start pipewire-pulse.service pipewire-pulse.socket systemctl --user enable pipewire-pulse.service pipewire-pulse.socket ➜ pactl info Server String: /run/user/1000/pulse/native Library Protocol Version: 35 Server Protocol Version: 35 Is Local: yes Client Index: 117 Tile Size: 65472 User Name: dmitry Host Name: fedora Server Name: PulseAudio (on PipeWire 0.3.48) Server Version: 15.0.0 Default Sample Specification: float32le 2ch 48000Hz Default Channel Map: front-left,front-right Default Sink: alsa_output.pci-0000_17_00.1.hdmi-stereo-extra1 Default Source: alsa_input.usb-046d_HD_Pro_Webcam_C920_2BB3701F-02.analog-stereo Cookie: d884:a022
所以在FC35中我們應該在pipewire上。