Мультимедиа сервер PipeWire

PipeWire есть новый аудио и видео сервер. В основном для Wayland. Должен заменить другие видео-серверы.

Содержание

1 Общая информация

2 Установка

2.1 Gentoo

  • Чтобы использовать PipeWire вместо PulseAudio для звукового сервера, включите USE-флаг USE=sound-server для media-video/pipewire и отключите USE-флаг USE=daemon для media-sound/pulseaudio.

  • Добавьте в файл /etc/portage/package.use:

    1media-video/pipewire sound-server
    2media-sound/pulseaudio -daemon
    
  • Удалите media-sound/pulseaudio-daemon:

    1emerge -Cv media-sound/pulseaudio-daemon
    2emerge -Cv media-sound/paprefs
    
  • Установить само приложение:

    1emerge media-video/pipewire
    2emerge media-video/wireplumber
    

3 Настройка пользовательской сессии

3.1 Права пользователя

  • Желательно добавить пользователя в группу audio:
    1usermod -aG audio <user>
    

3.2 Настройка запуска на уровне пользователя

  • По умолчанию PipeWire настроен на использование systemd.
  • Следует настроить его запуск для пользователя.
  • Флаг --now позволяет одновременно активировать и запускать сервис.
  • Отключите pulseaudio:
    1systemctl --user disable --now pulseaudio.socket pulseaudio.service
    
  • Для каждого пользователя можно установить активацию по обращению к сокету:
    1systemctl --user enable --now pipewire.socket pipewire-pulse.socket
    
  • В качестве альтернативы можно сразу запускать необходимый процесс:
    1systemctl --user enable --now pipewire.service pipewire-pulse.service
    
  • Отключите демон сессии pipewire-media-session.service и запустите wireplumber:
    1systemctl --user disable pipewire-media-session.service
    2systemctl --user --force enable --now wireplumber.service
    

3.3 Настройка запуска на уровне системы

  • Под пользователем root можно настроить запуск сервисов на уровне системы, заменив --user на --global:
    1systemctl --global enable pipewire.socket pipewire-pulse.socket
    2systemctl --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 для каждого пользователя:
    1systemctl --user disable --now pulseaudio.socket pulseaudio.service
    2systemctl --user enable --now pipewire.socket pipewire-pulse.socket wireplumber.service
    
  • Можно замаскировать PulseAudio (но он всё равно может стартовать автоматически):
    1systemctl --user mask pulseaudio.socket pulseaudio.service
    
  • Кроме того, рекомендуется удалить файлы, оставшиеся от PulseAudio:
    1rm -r ~/.config/pulse/
    

4.1.2 PulseAudio без поддержки запуска кок демон

  • Теперь PulseAudio рекомендуется собирать без поддержки демона.
  • В этом случае всё работает сразу.
  • Напомним, что на уровне пользователя следует подключить pipewire-pulse.socket:
    1systemctl --user disable --now pulseaudio.socket pulseaudio.service
    2systemctl --user enable --now pipewire.socket pipewire-pulse.socket wireplumber.service
    

4.2 Замена Jack

  • Для маршрутизации клиентов Jack через PipeWire в настоящее время предпочтительно запускать их через pw-jack, который использует LD_PRELOAD для использования библиотек PipeWire вместо Jack, например:

    1pw-jack <application>
    
  • Можно задать собственный размер буфера, установив размер_буфера/частота_дискретизации:

    1PIPEWIRE_LATENCY="128/48000" pw-jack <application>
    

5 Проверка работы

  • Для PipeWire возможно посмотреть информацию по серверу pipewire:

    1LANG=C pactl info | grep "Server Name"
    
    • В результате должна присутствовать строчка типа такой:
      1Server 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.

  1. В Gentoo это означает, что pulseaudio скомпилирован с флагом daemon↩︎


Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие