Мультимедиа сервер PipeWire
PipeWire есть новый аудио и видео сервер. В основном для Wayland. Должен заменить другие видео-серверы.
Содержание
1 Общая информация
- Репозиторий проекта: https://gitlab.freedesktop.org/pipewire/pipewire
- Wiki проекта: https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home
2 Установка
2.1 Gentoo
Чтобы использовать PipeWire вместо PulseAudio для звукового сервера, включите USE-флаг
USE=sound-server
дляmedia-video/pipewire
и отключите USE-флагUSE=daemon
дляmedia-sound/pulseaudio
.Добавьте в файл
/etc/portage/package.use
:media-video/pipewire sound-server media-sound/pulseaudio -daemon
Удалите
media-sound/pulseaudio-daemon
:emerge -Cv media-sound/pulseaudio-daemon emerge -Cv media-sound/paprefs
Установить само приложение:
emerge media-video/pipewire emerge media-video/wireplumber
3 Настройка пользовательской сессии
3.1 Права пользователя
- Желательно добавить пользователя в группу
audio
:usermod -aG audio <user>
3.2 Настройка запуска на уровне пользователя
- По умолчанию PipeWire настроен на использование systemd.
- Следует настроить его запуск для пользователя.
- Флаг
--now
позволяет одновременно активировать и запускать сервис. - Отключите
pulseaudio
:systemctl --user disable --now pulseaudio.socket pulseaudio.service
- Для каждого пользователя можно установить активацию по обращению к сокету:
systemctl --user enable --now pipewire.socket pipewire-pulse.socket
- В качестве альтернативы можно сразу запускать необходимый процесс:
systemctl --user enable --now pipewire.service pipewire-pulse.service
- Отключите демон сессии
pipewire-media-session.service
и запуститеwireplumber
:systemctl --user disable pipewire-media-session.service systemctl --user --force enable --now wireplumber.service
3.3 Настройка запуска на уровне системы
- Под пользователем
root
можно настроить запуск сервисов на уровне системы, заменив--user
на--global
:systemctl --global enable pipewire.socket pipewire-pulse.socket systemctl --global --force enable wireplumber.service
- При выборе этого варианта службы должны быть запущены вручную под пользователем пользователем.
4 Использование с другими серверами
4.1 Замена PulseAudio
4.1.1 PulseAudio с поддержкой запуска как демон
- Ранее PulseAudio собиралась только с поддержкой запуска как демон.
- Если PulseAudio настроено с поддержкой запуска как демона1, то его необходимо отключить:
- запретить запуск
pulseaudio
; - отключить запуск в файле конфигурации:
- отредактируйте файл
/etc/pulse/daemon.conf
и заменитеdaemonize
наdaemonize = no
.
- отредактируйте файл
- запретить запуск
- Одновременно отключим PulseAudio и включим PipeWire для каждого пользователя:
systemctl --user disable --now pulseaudio.socket pulseaudio.service systemctl --user enable --now pipewire.socket pipewire-pulse.socket wireplumber.service
- Можно замаскировать PulseAudio (но он всё равно может стартовать автоматически):
systemctl --user mask pulseaudio.socket pulseaudio.service
- Кроме того, рекомендуется удалить файлы, оставшиеся от PulseAudio:
rm -r ~/.config/pulse/
4.1.2 PulseAudio без поддержки запуска кок демон
- Теперь PulseAudio рекомендуется собирать без поддержки демона.
- В этом случае всё работает сразу.
- Напомним, что на уровне пользователя следует подключить
pipewire-pulse.socket
:systemctl --user disable --now pulseaudio.socket pulseaudio.service systemctl --user enable --now pipewire.socket pipewire-pulse.socket wireplumber.service
4.2 Замена Jack
Для маршрутизации клиентов Jack через PipeWire в настоящее время предпочтительно запускать их через
pw-jack
, который используетLD_PRELOAD
для использования библиотек PipeWire вместо Jack, например:pw-jack <application>
Можно задать собственный размер буфера, установив размер_буфера/частота_дискретизации:
PIPEWIRE_LATENCY="128/48000" pw-jack <application>
5 Проверка работы
Для PipeWire возможно посмотреть информацию по серверу
pipewire
:LANG=C pactl info | grep "Server Name"
- В результате должна присутствовать строчка типа такой:
Server Name: PulseAudio (on PipeWire 0.3.56)
- В результате должна присутствовать строчка типа такой:
6 Конфигурация
6.1 Конфигурационные файлы
- Конфигурация, идущая в комплекте с дистрибутивом, находится в
/usr/share/pipewire
. - Для изменения параметров скопируйте файлы конфигурации в:
/etc/pipewire
: уровень системы;~/.config/pipewire
: уровень пользователя.
6.2 Профили устройств
- Профили устройств хранятся в каталоге
~/.local/state/pipewire/media-session.d/
. - При запуске в первый раз с подключёнными внешними устройствами (например, usb-устройствами), профили для них не создаются. Необходимо их переподключить в этом случае.
6.3 Изменение частоты дискретизации
- По умолчанию PipeWire глобально устанавливает частоту дискретизации равную 48 КГц.
- Для изменения нужно отредактировать строку
default.clock.rate = 48000
в файле конфигурации/etc/pipewire/pipewire.conf
или~/.config/pipewire/pipewire.conf
. - Например, если вы хотите частоту дискретизации в 192 КГц, раскомментируйте строку и поменяйте её на
default.clock.rate = 192000
.
В Gentoo это означает, что
pulseaudio
скомпилирован с флагомdaemon
. ↩︎