pulseaudio 使浏览器中的视频冻结

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/[email protected]/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 命令)时,我会在状态中收到一条错误消息,并且我的视频被冻结且无法播放。我必须重新启动pulseaudiopulseaudio -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/[email protected]/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

这是我的默认.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.

答案1

好的,解决办法是

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 中我们应该在 pipeline 上。

相关内容