Как установить pipewire в ubuntu

Обновлено: 07.07.2024

21 июл 2021, 07:55

Пару дней назад я случайно заметил, что в Аrch пакет pulseeffects не работает, если у вас до сих пор pulseaudio используется в качестве звукового сервера.

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

Оказалось, что сопровождающий пакета pulseeffects стал собирать его с pipewire вместо pulseaudio.

Пруф:
ldd /usr/bin/pulseeffects|grep pipewire
libpipewire-0.3.so.0 => /usr/lib/libpipewire-0.3.so.0 (0x00007f10ed03b000)

Стал изучать зависимости пакета, когда запустил pulseeffects, а он внезапно не смог наложить эффекты на звук, транслируемый pulseaudio.

Вот так, внезапно, в дверь к прогрессивным любителям Linux Arch постучало будущее в лице pipewire.\
Решение проблемы
Замена PulseAudio и ALSA на PipeWire
Установка PipeWire

Для решения проблемы с не работающим pulseeffects в Arch выполняем

sudo pacman -Sy pipewire pipewire-alsa pipewire-pulse gst-plugin-pipewire
После ввода pacman предупредит что будет удалён pulseaudio server (y/n)
После чего перезагрузить ПК.

. info ‘Забавный факт’
Если у нас установлен pipewire-alsa – bluetooth должен запускаться автомататически. C pulseaudio это было не так, там звук через bluetooth добавлялся модулем из отдельного пакета.

Внимание! В процессе будет удалён pulseaudio и pulseaudio-bluetooth. Если для вас важны особенности кастомной настройки pulseaudio, а без них pipewire с pipewire-pulseaudio будет работать не так хорошо, как старый-добрый pulseaudio с кастомными настройками – вам лучше откатиться назад на pulseaudio.
Проверка получившей конфигурации

Проверяем, что получилось
pactl info

видим выхлоп вида со строками вида
Server Name: PulseAudio (on PipeWire 0.3.21)
Server Version: 14.0.0

После произведённого перехода на pipewire pulseeffects стал работать корректно.

Заодно, вместо pipewire и pulseaudio у меня теперь стоит только pipewire с модулями. Что удобно, так как один сервис лучше двух, а pipewire уже присутствует в системе у пользователей Gnome(и некоторых других DE), так как он используется для захвата видео при создании скринкастов и для организации расшаривания экрана в google meet, skype и OBS, и для с мультимедиа приложений из-под sanbox изоляции(faltpack).

Если после перехода на PipeWire у вас возникли задержки звука и искажения, необходимо открыть файл

vim /etc/pipewire/pipewire.conf
и привести параметры
default.clock.quantum = 64
default.clock.min-quantum = 32
default.clock.max-quantum = 512
к указанным выше значениям. Если не поможет, можно ещё уменьшить, при этом желательно указываться числа,
кратные 8.
Кстати, разработчики PipeWire починили корректную работу переключения профилей для Bluetooth. И добавили возможность выбора кодека при выборе профиля для Bluetooth-гарнитуры, что очень круто. Лично у меня переключение профиля не работало на PulseAudio уже очень давно, даже с установленными дополнительными сервисами, вроде oFono.

На этом повествование можно было бы и закончить, но некоторые, познакомившись с возможностями pulseeffects, захотят чего-то большего. Таким пользователям я рекомендую ознакомиться с такими вещами, как JACK Audio, и реализация его API поверх PipeWire в пакете pipewire-jack. Пост о pipewire-jack опубликую скоро в рамках продолжения данной темы будет опубликован отдельным постом, ввиду его объёма.
Андрей Гуцу


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

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

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

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

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

Проект поддерживается Gnome и уже активно используется в Fedora для записи скринкастов и демонстрации экрана в средах на основе Wayland.

Основные новые функции PipeWire 0.3

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

также API переработан и признан стабильным и планируется внести все дополнительные изменения в API без нарушения совместимости с существующими приложениями.

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

Со своей стороны, включенные библиотеки были улучшены для обеспечения совместимости с PulseAudio, JACK и ALSA, что позволяет использовать PipeWire с существующими приложениями, предназначенными для работы с другими звуковыми системами. Библиотека для ALSA почти полностью работоспособна, но библиотеки для JACK и PulseAudio все еще нуждаются в улучшении.

Наконец, упоминается, что включены некоторые плагины GStreamer для взаимодействия с PipeWire. Плагин pipewiresrc, который использует PipeWire в качестве источника звука, работает безупречно в большинстве ситуаций. Плагин pipewiresink для вывода звука через PipeWire пока не имеет некоторых известных проблем.

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

Как установить PipeWire на Ubuntu и производные?

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

Установка через репозитории осуществляется с помощью следующая команда:

sudo apt установить pipewire

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

Для этого мы должны скачать его с помощью:

И приступаем к компиляции и установке:

Вы можете протестировать PipeWire с помощью следующей команды:

Наконец, вы можете ознакомиться с документацией и другой информацией по адресу по следующей ссылке.

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

Полный путь к статье: Убунлог » ПО » Мультимедиа » PipeWire, мультимедийный фреймворк, призванный заменить PulseAudio, достиг версии 0.3.0.

Поскольку я установил 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:

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