Linux замена pulseaudio на pipewire

Обновлено: 05.07.2024

[ON] Доступен мультимедийный сервер PipeWire 0.3, идущий на смену PulseAudio

[ON] Доступен мультимедийный сервер PipeWire 0.3, идущий на смену PulseAudio

Опубликован значительный выпуск проекта PipeWire 0.3.0, развивающего мультимедийный сервер нового поколения, идущий на замену PulseAudio. PipeWire расширяет возможности PulseAudio средствами для работы с потоками видео, возможностью обработки звука с минимальными задержками и новой моделью безопасности для управления доступом на уровне отдельных устройств и потоков. Проект поддерживается в GNOME и уже активно применяется в Fedora Linux для записи содержимого экрана (screencasting) и совместного доступа к экрану в окружениях на базе Wayland. Код проекта написан на языке Си и распространяется под лицензией LGPLv2.1.

  • Полностью переработан планировщик обработки потоков. Изменения позволили добиться возможности запуска прослойки для обеспечения совместимости со звуковым сервером JACK, производительность которой сравнима с JACK2.
  • Переработан и объявлен стабильным API. Все дальнейшие изменения в API планируется производить без нарушения обратной совместимости c существующими приложениями.
  • В состав включён менеджер сеансов, позволяющий управлять графом мультимедийных узлов в PipeWire, а также добавлять новые потоки. Пока менеджер лишь предоставляет простейший набор базовых функций и в будущем будет расширен или заменён на более функциональный и гибкий вариант, такой как WirePlumber.
  • Улучшены входящие в состав библиотеки для обеспечения совместимости с PulseAudio, JACK и ALSA, позволяющие использовать PipeWire с существующими приложениями, рассчитанными на работу с другими звуковыми системами. Библиотека для ALSA уже почти доведена до полной готовности, но библиотеки для JACK и PulseAudio ещё требуют доработки. PipeWire пока не готов для полной замены PulseAudio и JACK, но в следующих выпусках вопросам совместимости будет уделено первоочерёдное внимание.
  • В состав включены некоторые плагины GStreamer для взаимодействия с PipeWire. Плагин pipewiresrc, использующий PipeWire в качестве источника звука, в большинстве ситуаций работает без проблем. Плагин pipewiresink для вывода звука через PipeWire пока не лишён отдельных известных проблем.
  • Поддержка PipeWire 0.3 интегрирована в оконный менеджер Mutter, развиваемый проектом GNOME.

Напомним, PipeWire расширяет область применения PulseAudio обработкой любых мультимедийных потоков и способен смешивать и перенаправлять потоки с видео. PipeWire также предоставляет возможности для управления источниками видео, такими как устройства захвата видео, web-камеры или выводимое приложениями содержимое экрана. Например, PipeWire даёт возможность организовать совместную работу нескольких приложений с веб-камерой и решает проблемы с безопасным захватом содержимого экрана и удалённым доступом к экрану в окружении Wayland.

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

Поскольку я установил ubuntu 20.04 У меня возникли проблемы с микрофоном моей bluetooth-гарнитуры, который не определяется системой. Моя гарнитура отлично работала с Windows. Кроме того, я не могу переключиться на HFP с AD2P в ubuntu. Итак, моя последняя мысль - удалить pulseaudio и установить pipewire в надежде, что это решит мои проблемы.

Кто-нибудь может предоставить шаги, чтобы сделать то же самое? Я искал его несколько раз, но не смог найти правильные шаги.

1 ответ

Я столкнулся с той же проблемой с версией Oneplus Wireless Z Bass. Микрофон моей гарнитуры не был обнаружен PulseAudio, и проблема в том, что у моих наушников нет профиля HSP, только профиль HFP. После двух дней попыток я пришел к решению заменить PulseAudio звуковым сервером Pipewire, который сам по себе поддерживает HSP, HFP и A2DP. Таким образом, нет необходимости устанавливать какие-либо другие утилиты, такие как ofono , phonesim . Также следует отметить, что моя проблема не была решена даже после выполнения всех шагов по настройке ofono в PulseAudio. Итак, я придумал, как заменить PulseAudio на PipeWire.

Вот подробная статья, которую я написал для решения этой проблемы, шаги которой я также добавляю здесь. Вы можете следить за ним и, скорее всего, сможете решить свою проблему.

Откройте терминал и выполните следующие действия:

Мы будем использовать PPA для добавления Pipewire в Ubuntu 20.04, который регулярно поддерживается:

Чтобы обновить пакеты PPA в вашей системе, выполните:

Также необходимо установить зависимость с Pipewire, иначе вы столкнетесь с проблемой «Bluetooth гарнитура не подключается после установки проводки ». Установите зависимость:

Теперь, чтобы установить клиентские библиотеки:

Если вы используете Ubuntu 20.04, вам также необходимо «замаскировать» PulseAudio с помощью:

Я не уверен, но, если возможно, вы можете попробовать чтобы запустить это и в других версиях.
9. После нового обновления Pipewire вам также необходимо включить pipewire-media-session-service :

Вы можете убедиться, что Pipewire теперь работает через:

Эта команда выдаст следующий результат, в поле «Имя сервера» вы можете увидеть:

К настоящему времени все должно работать, и вы можете видеть свой микрофон.

Если он не отображается, попробуйте перезапустить Pipewire с помощью этой команды:

Изменить: Вам необходимо удалить ofono иphonesim из вашей системы, если они у вас установлены.

Если микрофон по-прежнему не отображается, попробуйте перезагрузить компьютер, а затем извлеките и снова подключите устройство Bluetooth, чтобы проверить, работает ли оно сейчас.

Надеюсь, я помог вам решить вашу проблему.

Если вы хотите отменить все внесенные нами изменения, вы можете сделать это, используя:

PipeWire это новый низкоуровневый мультимедийный фреймворк. Он предназначен для захвата и воспроизведения аудио и видео с минимальной задержкой и поддерживает PulseAudio (Русский), JACK, ALSA и приложения, использующие GStreamer.

Данный фреймворк может быть использован как звуковой сервер (с поддержкой функционала PulseAudio и JACK), так и для захвата экрана.

PipeWire также поддерживает контейнеры по типу Flatpak и не зависит от пользовательских групп audio и video, а использует модель безопасности основанную на Polkit для запроса у Flatpak или Wayland разрешений для записи экрана или захвата звука.

Contents

Установка

Установите pipewire из официальных репозиториев.

PipeWire использует systemd/User (Русский) для управления сервером и автоматической активации сокетов.

Опционально, вы можете установить pipewire-docs для просмотра документации. Другие пакеты, такие как pipewire-alsa , pipewire-pulse , и pipewire-jack используются PipeWire для управления вместо PulseAudio/JACK. Так же доступны 32-битные библиотеки lib32-pipewire и lib32-pipewire-jack .

Использование

Демонстрация экрана WebRTC

Большинство браузеров для работы WebRTC и захвата рабочего стола или отдельных приложений используют X11. На Wayland используется подход, основанный на механизме разрешений.

Для этого требуются пакет xdg-desktop-portal и один из следующий бэкэндов:

  • xdg-desktop-portal-gtk для GNOME.
  • xdg-desktop-portal-kde для KDE.
  • xdg-desktop-portal-wlr для оболочек, использующих композитор wlroots (напр. Sway, dwl)

Firefox (84+) поддерживает данный механизм по умолчанию. Для Chromium (73+) нужно активировать поддержку вручную включением экспериментального флага:

Для работы xdg-desktop-portal-wlr требуется установить pipewire-media-session [1] и удостовериться, что указаны переменные окружения XDG_CURRENT_DESKTOP=sway [2] и XDG_SESSION_TYPE=wayland [3].

Совет: Для демонстрации отдельного монитора через xdg-desktop-portal-wlr необходимо использовать параметр --output=Monitor путем редактирования строки ExecStart= в юните systemd. Пример такой строки: ExecStart=@libexecdir@/xdg-desktop-portal-wlr --output=eDP-1

The factual accuracy of this article or section is disputed.

Reason: После внесения изменений в гит-репозитории следующее примечание, относящиеся к отдельным приложениям/демонстрации отдельных окон могут быть не действительны для xdg-desktop-portal-gtk . Подробнее можете узнать здесь [4]. (Discuss in Talk:PipeWire (Русский))

Обратите внимание, что захват поддерживается только демонстрация экрана, а не для отдельного окна/приложения [5][6].

Видео

Аудио

PipeWire может быть использован как звуковой сервер наподобие PulseAudio и JACK. Он нацелен их на полную замену путем предоставления реализации PulseAudio-совместимого сервера и ABI-совместимых библиотек для клиентов JACK. Подробнее смотерть здесь.

Поддержка ALSA/Legacy

Установите pipewire-alsa для перенаправления приложений, использующих ALSA API, через PipeWire.

Поддержка PulseAudio

Установите pipewire-pulse . Этот пакет заменит установленные pulseaudio и pulseaudio-bluetooth . Необходимо перезагрузиться или выполнить systemctl start --user pipewire-pulse.service для работы.

Как правило, этого достаточно для дальнейшей работы, так как сервис pipewire-pulse.socket должен быть автоматически включен. Для проверки работоспособности, выполните следующую команду и изучите вывод:

Если PipeWire не работает после запуска системы, убедитесь что systemd/User (Русский) сервисы pipewire-pulse.service , pipewire.service , и pipewire-media-session.service включены и работают. Имейте в виду, что pipewire-pulse.service и pipewire-pulse.socket используют ConditionUser , а не работают под рут пользователем.

Поддержка JACK

Установите pipewire-jack и используйте pw-jack для запуска JACK-совместимых приложений заместо libjack* :

Также вы можете использовать другой размер буфера путем установления нужного соотношения размера буфера и частоты дискретизации (что равно задержке в секнудах):

В качестве альтернативы, вы можете установить pipewire-jack-dropin AUR или удалить jack AUR / jack2 для автоматического использования библиотек приложениями использующими JACK.

Выполните ldd для проверки правильности линковки библиотек:

Bluetooth устройства

Для управления Bluetooth audio устройствами PipeWire использует pipewire-pulse . Говоря более конкретно, сервис PipeWire проверяет наличие /etc/pipewire/media-session.d/with-pulseaudio и подключает модуль bluez5 автоматически, если он установлен в системе.

Работа PipeWire поверх JACK

PipeWire также может работать как клиент JACK, если это необходимо. Подробнее смотреть здесь

Постобработка аудио

EasyEffects

EasyEffects (ранее PulseEffects) это GTK утилита предоставляющая большой набор аудио эффектов и фильтров для использования в потоках отдельных приложений и микрофона. Присутствуют большинство основных эффектов, таких как эквалайзер, выравнивание громкости, усиления низких частот, дэ-эссер и подавления шумов. Полный список эффектов и фильтров можно посмотреть на GitHub.

Для использования установите easyeffects . Так же можете посмотреть коллекцию пользовательских пресетов для настройки.

NoiseTorch

NoiseTorch это альтернативный способ для шумоподавления. Для использования установите noisetorch AUR , либо одну из этих версий пакета noisetorch-bin AUR noisetorch-git AUR

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

Плагины LADSPA, LV2 и VST

Если вы хотите использовать плагины LADSPA, LV2 и VST, вы можете применить их используя виртуальный аудиовход Pulseaudio и хост Jack Carla. Установите pipewire-pulse , pipewire-jack и carla . Для начала создайте новый аудиовход в Pulseaudio под названием default_null_sink .

Запустите Carla через PipeWire pw-jack carla-rack . Во вкладке Rack добавьте плагины по желанию. Удостоверьтесь, что они имеют тип stereo. Вы можете поменять их очередность, в которой они будут работать, начиная с верха списка. После этого переместитесь во вкладку Patchbay и подключите default_null_sink к вводу Carla, а вывод Carla к нужному устройству воспроизведения (наушники, колонки, HDMI и т.п.). Сохраните конфигурацию в домашнюю директорию, напр. в

Для применения вышеописанных настроек, необходимо создать два пользовательских systemd юнита:

Затем измените сервис jack-carla-rack, указав полный путь к вашему сохраненному файлу конфигурации в строке Environment:

И наконец, включите созданные сервисы, указав default_null_sink как аргумент для сервиса pulseaudio-null-sink:

Обратите внимание, если вы установите default_null_sink как устройство по умолчанию, все приложения будут автоматически перенаправляться к этому аудиовходу и клавиши громкости будут менять его уровень, а не громкость устройств воспроизведения. Для того, чтобы изменять клавишами уровень громкости устройства, необходимо оставить его по умолчанию и перенаправлять аудиопоток приложения к default_null_sink через pavucontrol. (PipeWire запомнит перенаправление и использует его для последующих экземпляров приложений).

Шумоподавление для голоса

Решение проблем

This article or section is out of date.

PipeWire не видит микрофон

Затем перезапустите pipewire и проверьте доступные устройства:

Нет звука после подключения Bluetooth устройства

Маленькая громкость

После замены PulseAudio на Pipewire громкость была как задумано, но после перезагрузки звук невыносимо тихий.

Откройте alsamixer , нажимайте F6 для выбора нужной звуковой карты и удостоверьтесь, что уровень громкости стоит на 100%. alsactl должен сохранить настройки после перезагрузки.

Увеличение RLIMIT_MEMLOCK

Установите realtime-privileges и добавьте пользователя в группу realtime .

Также, увеличение memlock с 64кБ до 128кБ должно хватить для решение проблемы. Если вы запускаете pipewire-pulse через systemd/User (Русский), допишите:

Изменение частоты дискретизации

По умолчанию PipeWire глобально устанавливает частоту дискретизации равную 48КГц. Если вы хотите изменить ее (например если ваш ЦАП поддерживает более высокое значение) редактированием строки default.clock.rate = 48000 в файле конфигурации /etc/pipewire/pipewire.conf . Например, если вы хотите частоту дискретизации в 192КГц, раскомментируйте строку и поменяйте значение 48000 на default.clock.rate = 192000 .

Внешняя звуковая карта не включается после переподключения

/.config/pipewire-media-session/default-profile . Если присутствуют значения с стандартным профилем "off", удалите их. Если же это не поможет, удалите все файлы из

/.config/pipewire-media-session/ и перезапустите PipeWire используя systemctl --user restart pipewire.service .

Эта ошибка говорит о том, что приложение не может присоединиться к службе PipeWire-Pulse, удостоверьтесь что /etc/pipewire/pipewire-pulse.conf существует и файл не пустой, а после перезапустите PipeWire-Pulse используя systemctl --user restart pipewire-pulse.service .

Низкое качество звука через Bluetooth

В случае, если звук через Bluetooth заикается, проверьте pipewire.service используя systemctl --user status pipewire.service . Если у вас есть ошибки по типу:

проверьте используемый кодек командой pactl list sinks и попробуйте поменять его изменением bluez5.codecs на один из следующих sbc aac ldac aptx aptx_hd в

Также попробуйте включить поддержку mSBC (исправляет проблему с микрофоном на Sony 1000XM3):

Перезапустите PipeWire командой systemctl --user restart pipewire.service для применения изменений.

Нет обнаруженных устройств после обновления PipeWire и его перезагрузки (git / >=0.3.23)

В коммите 012a68f8[7] была добавлена новая служба, которая отключена по умолчанию. Что приводит к тому что pipewire-media-session не запускается после старта системы. Чтобы активировать службу, используйте команду systemctl --user enable --now pipewire-media-session.service

Если пользователь или пакетный менеджер не исправил конфигурационные файлы после обновления, то скорее всего другой экземпляр pipewire-media-session запущен в pipewire.service. Чтобы проверить это, используйте: systemctl --user status pipewire.service

Если вывод говорит о том, что pipewire и pipewire-media-session запущены, обновите системные и/или пользовательские конфигурации:

Заметная задержка звука при воспроизведении

Обычно это происходит после отключения узла в период неактивности. Плановое отключение можно отключить, отредактировав /etc/pipewire/media-session.d/*-monitor.conf в зависимости от того, где происходит задержка, заменив значение на 0 или экспериментами с другими значениями. Либо же закомментируйте строку suspend-node в /etc/pipewire/media-session.d/media-session.conf . После перезагрузите службы pipewire и pipewire-pulse для применения изменений, или перезагрузитесь.

Проподание звука при проигрывании других потоков

Обычно проблему можно диагностировать командой journalctl --user -b -u pipewire-pulse и присутствуют такие строки:

Согласно официальному гайду PipeWire по решению проблем, нужно отредактировать /etc/pipewire/media-session.d/alsa-monitor.conf , раскомментировать строку api.alsa.headroom = 0 и поменять значение на 1024 .

Искаженный звук

  • Для микрофонов, найдите проблемную звуковую карту в alsamixer и уменьшите уровень "Mic Boost" или "Internal Mic Boost".
  • Раскомментируйте строку default.clock.rate = 48000 в /etc/pipewire/pipewire.conf и уменьшите значение до 44100 .

Различные проблемы после простоя

Если звук пропал или исказился после пробуждения системы после сна, возможно потребуется реинициализировать ALSA:

Трубопровод

Команда разработчиков Red Hat Он не перестает трудолюбивым от обновлений и поддержки, в центр внимания создания новых инструментов для улучшения экосистемы Linux. Таково, что у них есть амбициозный новый проект под названием Pipewire.

Стремится улучшить обработку аудио и видео в Linux. Pipewire был рожден благодаря инициативе, что он мог поддерживать аудио и видео в едином процессе синхронизированным способом, и эта идея была Создано рукой Вима Тайманса соавтор GStreamer.

Одной из больших проблем, стоящих перед проектом Pipewire, будет синхронизация аудио и видео в одном и том же процессе, как я привык работать в GStreamer.

Таким образом можно быть уверенным, что аудио и видео хорошо работают вместе, так как таким образом было бы намного проще для таких фреймворков, как GStreamer, и, следовательно, для их работы потребовалось бы гораздо меньше тяжелой работы.

Импульс Этот новый инструмент будет уделять особое внимание поддержке Wayland и Flatpak.Они хотят продвигать последнюю как стандартную технологию будущего в GNU / Linux.

В в планах на будущее, которые есть в проекте, - включение декодеров на основе ffmpeg и демультиплексоров. для создания воспроизводящих конвейеров. А также добавлена ​​поддержка браузеров Chrome и Firefox, чтобы вы могли делиться своим рабочим столом Wayland через такие системы, как Blue Jeans.

Разработка трубопровода

Как уже было сказано, проект все еще находится в стадии разработки, так как он уже несколько раз тестировал его. С помощью которых были улучшены различные функции, на которых сосредоточился Wayland, такова сила обработки снимков экрана на нем, поскольку в X это очень небезопасно.

Вот почему была проделана работа по созданию API для поддержки захвата экрана и захвата одного кадра, локальной записи рабочего стола и протоколов удаленного доступа.

Момент проект начнет набирать силу в бета-версии Fedora Workstation 27 где вы можете попытаться внести свой вклад в обнаружение ошибок и продолжить полировку.

Если вы хотите узнать немного больше о проекте, вы можете проверить его Официальный веб-сайт.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Читайте также: