pulseaudio замораживает видео в браузере

Вопрос или проблема

Когда я запускаю (или перезапускаю) службу pulseaudio, используя pulseaudio -k, я получаю воспроизведение видео, и служба pulseaudio показывает следующее:

➜ systemctl --user status pulseaudio
● pulseaudio.service - Звуковая служба
     Загружено: загружено (/usr/lib/systemd/user/pulseaudio.service; отключено; предустановка от производителя: отключено)
    Drop-In: /usr/lib/systemd/user/pulseaudio.service.d
             └─00-uresourced.conf
     Активно: активно (работает) с пт 2022-03-25 13:42:07 CDT; 539ms назад
TriggeredBy: ● pulseaudio.socket
   Основной PID: 92526 (pulseaudio)
      Задачи: 5 (лимит: 308781)
     Память: 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]: Запуск звуковой службы...
Mar 25 13:42:07 fedora systemd[4316]: Звуковая служба запущена.

Затем, когда я прекращаю смотреть видео и переключаюсь на другие действия (например, запускаю команды CLI в оболочке), я получаю сообщение об ошибке в статусе, и видео замирает и не может быть воспроизведено. Мне нужно перезапустить pulseaudio с помощью pulseaudio -k

➜ systemctl --user status pulseaudio
● pulseaudio.service - Звуковая служба
     Загружено: загружено (/usr/lib/systemd/user/pulseaudio.service; отключено; предустановка от производителя: отключено)
    Drop-In: /usr/lib/systemd/user/pulseaudio.service.d
             └─00-uresourced.conf
     Активно: активно (работает) с пт 2022-03-25 13:42:07 CDT; 58s назад
TriggeredBy: ● pulseaudio.socket
   Основной PID: 92526 (pulseaudio)
      Задачи: 5 (лимит: 308781)
     Память: 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]: Запуск звуковой службы...
Mar 25 13:42:07 fedora systemd[4316]: Звуковая служба запущена.
Mar 25 13:42:32 fedora pulseaudio[92526]: GetManagedObjects() не удалось: org.freedesktop.DBus.Error.NoReply: Ответ не получен. Возможные причины: удаленное приложение не отправило ответ, политика безопасности шины сообщений заблокировала ответ, истекло время ожидания ответа или соединение с сетью было разорвано.
строки 1-16/16 (КОНЕЦ)

✗  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
#
# Этот файл является частью PulseAudio.
#
# PulseAudio является бесплатным программным обеспечением; вы можете перераспределять и/или изменять его
# на условиях GNU Lesser General Public License, опубликованной
# Free Software Foundation; либо версии 2 Лицензии, либо
# (по вашему выбору) любой более поздней версии.
#
# PulseAudio распространяется в надежде, что он будет полезен, но
# БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий
# ТОРГОВОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ. См. GNU
# Общую публичную лицензию для получения дополнительных деталей.
#
# Вы должны были получить копию GNU Lesser General Public License
# вместе с PulseAudio; если нет, смотрите <http://www.gnu.org/licenses/>.

# Этот скрипт запуска используется только в том случае, если PulseAudio запускается для пользователя
# (т.е. не в системном режиме)

.fail

### Автоматически восстанавливать громкость потоков и устройств
load-module module-device-restore
load-module module-stream-restore
load-module module-card-restore

### Автоматически дополнять информацию о свойствах из .desktop файлов
### хранящихся в /usr/share/application
load-module module-augment-properties

### Должен следовать за module-*-restore, но перед module-*-detect
load-module module-switch-on-port-available

### Статическая загрузка аудиодрайверов
### (скорее всего, лучше не загружать эти драйвера вручную, а вместо этого
### использовать module-udev-detect -- см. ниже -- для автоматической загрузки)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-null-sink
#load-module module-pipe-sink

### Автоматическая загрузка драйверных модулей в зависимости от доступного оборудования
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Использовать статический модуль обнаружения оборудования (для систем, которые не поддерживают udev)
load-module module-detect
.endif

### Автоматически подключать sink и source, если сервер JACK присутствует
.ifexists module-jackdbus-detect.so
.nofail
load-module module-jackdbus-detect channels=2
.fail
.endif

### Автоматическая загрузка драйверных модулей для оборудования Bluetooth
.ifexists module-bluetooth-policy.so
load-module module-bluetooth-policy
.endif

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif

### Загружать несколько протоколов
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix

### Сетевой доступ (можно настроить с помощью paprefs, поэтому оставьте это закомментированным
### здесь, если вы планируете использовать paprefs)
#load-module module-esound-protocol-tcp
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish

### Загружать модуль приёмника RTP (также настраивается через paprefs, см. выше)
#load-module module-rtp-recv

### Загружать модуль отправителя RTP (также настраивается через paprefs, см. выше)
#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

### Загружать дополнительные модули из GSettings. Это можно настроить с помощью инструмента paprefs.
### Пожалуйста, имейте в виду, что модули, настроенные с помощью paprefs, могут конфликтовать с вручную
### загруженными модулями.
.ifexists module-gsettings.so
.nofail
load-module module-gsettings
.fail
.endif

### Автоматически восстанавливать стандартный sink/source, когда они изменяются пользователем
### во время выполнения
### ПРИМЕЧАНИЕ: Это должно загружаться как можно раньше, чтобы последующие модули
### могли получить правильное значение стандартного sink/source
load-module module-default-device-restore

### Убедитесь, что у нас всегда есть sink, даже если это нулевой sink.
load-module module-always-sink

### Уважать назначенные свойства устройства
load-module module-intended-roles

### Автоматически приостанавливать sinks/sources, которые становятся неактивными слишком долго
load-module module-suspend-on-idle

### Если автовыход при бездействии включен, мы хотим быть уверенными, что выйдем
### только тогда, когда ни одна локальная сессия не нуждается в нас больше.
.ifexists module-console-kit.so
#load-module module-console-kit
.endif
.ifexists module-systemd-login.so
load-module module-systemd-login
.endif

### Включить позиционированные звуки событий
load-module module-position-event-sounds

### Приостанавливать музыкальные/видеопотоки, когда активен поток телефона
load-module module-role-cork

### Модули для автоматической загрузки фильтров (таких как отмена эха)
### по запросу. module-filter-heuristics пытается определить, какие фильтры
### имеют смысл, а module-filter-apply выполняет основную работу 
### по загрузке модулей и перераспределению потоков.
load-module module-filter-heuristics
load-module module-filter-apply

### Сделать некоторые устройства стандартными
#set-default-sink output
#set-default-source input

### Разрешить включение каталога default.pa.d, который, если он присутствует, может быть использован
### для дополнительных конфигурационных фрагментов.
.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 (на 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.

Я только что создал аккаунт, чтобы прокомментировать это (хотя для этого, я думаю, мне нужно 15 репутации). Но у меня была та же проблема на протяжении нескольких месяцев, и я просто жил с рабочим процессом “Запустить ПК”, “открыть управление громкостью”, “открыть терминал и ‘pulseaudio -k’, оставить управление громкостью открытым в фоновом режиме…

Решение Дмитрия Семенова также исправило это для меня.

Ответ или решение

Проблема с зависанием видео в браузере из-за PulseAudio

Если вы столкнулись с проблемой зависания видео в браузере, связанной с PulseAudio, это может быть вызвано несколькими факторами, которые влияют на корректную работу звуковой подсистемы как в приложениях, так и в системе в целом. Давайте по шагам разберем возможные причины и решения данной проблемы.

Описание проблемы

Согласно предоставленной информации, вы наблюдали зависание видео при использовании PulseAudio, которое решается перезапуском службы с помощью команды pulseaudio -k. При запуске службы PulseAudio, вы видите, что она работает нормально, однако при переключении на другие активности, например, выполнение команд в терминале, появляется ошибка, и видео замораживается. Ошибка, указанная в журнале, говорит о том, что PulseAudio не получает ответа в течение определенного времени:

GetManagedObjects() failed: org.freedesktop.DBus.Error.NoReply: Did not receive a reply.

Это может говорить о том, что PulseAudio лишается возможности взаимодействовать с другими приложениями, что может быть вызвано проблемами в конфигурации или конфликтами с другими службами.

Метод устранения проблемы

Решением данной проблемы, как было предложено вами и подтверждено другими пользователями, является переход на PipeWire, который более современен и лучше справляется с потоками аудио и видео. 예를 들어, вы можете выполнить следующие шаги, чтобы установить PipeWire и исключить проблемы с PulseAudio:

  1. Откройте терминал и выполните команду:

    sudo dnf install --allowerasing pipewire-pulseaudio
  2. После установки необходимо активировать службы PipeWire:

    systemctl --user start pipewire-pulse.service pipewire-pulse.socket
    systemctl --user enable pipewire-pulse.service pipewire-pulse.socket
  3. После этого выполните команду pactl info, чтобы убедиться, что PulseAudio теперь работает через PipeWire:

    pactl info

Проверка конфигурации PulseAudio

Если вы всё же предпочитаете продолжать использовать PulseAudio, вам стоит проверить конфигурационный файл default.pa. В нем могут быть строчки, которые вызывают конфликты или неправильное поведение системы. Например, обратите внимание на следующие модули:

  • module-suspend-on-idle — при неактивности источника и синка, отключает их.
  • module-role-cork — временно приостанавливает мультимедийные потоки, если активен телефонный поток.

Вы можете попробовать закомментировать их, добавив символ # перед строкой в вашем default.pa.

Заключение

Проблема зависания видео в браузере из-за PulseAudio может быть связана как с конфигурацией PulseAudio, так и с его взаимодействием с другими приложениями. Переход на PipeWire, как более современное решение, может значительно улучшить стабильность и производительность звуковой подсистемы на вашем компьютере. Если у вас возникнут дополнительные вопросы или проблемы, рекомендуется обратиться к сообществу пользователей или разработчиков для получения дополнительной помощи.

Оцените материал
Добавить комментарий

Капча загружается...