PipeWire¶
PipeWire — это мультимедийная серверная среда с открытым исходным кодом, предназначенная для управления аудио- и видеопотоками в операционных системах семейства Linux. Она разрабатывается как замена PulseAudio и JACK, предоставляя унифицированный интерфейс для работы со звуком, захвата экрана и обработки видео в реальном времени. PipeWire поддерживает низкую задержку, безопасную изоляцию потоков и совместимость с существующими аудиосерверами.
¶История
Проект PipeWire был начат в 2015 году разработчиком Вильямом Мануэлем (Wim Taymans) из компании Red Hat. Первоначальная цель заключалась в создании системы для захвата видео с экрана и ретрансляции аудио в Flatpak-приложениях, где традиционные звуковые серверы (PulseAudio) не могли обеспечить должную изоляцию. Первая стабильная версия, PipeWire 0.2, вышла в 2017 году. В 2020 году проект был принят в качестве основного аудиосервера для дистрибутива Fedora 34, а затем и для других крупных дистрибутивов, включая Ubuntu, Arch Linux и openSUSE. Ключевым этапом стал релиз версии 0.3 в 2021 году, который добавил поддержку JACK-клиентов и низких задержек. В 2023 году PipeWire стал стандартным аудиосервером в большинстве современных дистрибутивов Linux.
¶Архитектура и принципы работы
PipeWire работает по модели клиент-сервер. Серверный процесс (pipewire) управляет потоками данных, а клиентские приложения подключаются к нему через протоколы связи. В основе архитектуры лежит граф обработки (graph), который представляет собой динамическую сеть узлов, отвечающих за захват, обработку и воспроизведение аудио- и видеоданных.
¶Основные компоненты
- pipewire — основной демон, управляющий потоками и узлами.
- pipewire-pulse — прослойка, эмулирующая API PulseAudio, что позволяет запускать приложения, написанные для PulseAudio, без изменений.
- pipewire-jack — прослойка для совместимости с JACK (Jack Audio Connection Kit), обеспечивающая низкую задержку для профессиональных аудиоприложений.
- wireplumber — менеджер сессий, отвечающий за конфигурацию звуковых устройств, управление маршрутизацией и обработку политик (например, автоматическое переключение на наушники при их подключении).
¶Ключевые особенности
- Низкая задержка (latency): PipeWire поддерживает задержки до 2–5 миллисекунд для аудио, что сравнимо с JACK и значительно ниже, чем у PulseAudio (обычно 20–50 мс).
- Изоляция потоков: Каждый поток обрабатывается в отдельном контексте, что предотвращает влияние одного приложения на другое при сбоях.
- Поддержка видео: PipeWire может захватывать и ретранслировать видеопотоки, например, для записи экрана или трансляции веб-камеры.
- Динамическое управление: Граф потоков может изменяться в реальном времени без перезапуска сервера.
¶Функциональность
¶Аудио
PipeWire обрабатывает все типы аудиопотоков: воспроизведение, запись, микширование, перенаправление. Он поддерживает:
- Многоканальный звук (до 32 каналов).
- Форматы с плавающей точкой (float32) для высокого динамического диапазона.
- Профессиональные сэмплы (до 192 кГц).
- ALSA (Advanced Linux Sound Architecture) для аппаратного доступа к звуковым картам.
- Bluetooth-аудио (A2DP, HSP/HFP, LDAC, aptX).
- Сетевую передачу аудио (через протоколы RAOP, RTP).
¶Видео
PipeWire предоставляет API для захвата видео с экрана, окон или веб-камер. Это используется в приложениях для записи скринкастов (OBS Studio, GNOME Screenshot), видеоконференций (Zoom, Discord) и виртуализации (Spice). Видеопотоки могут быть сжаты (например, H.264) или переданы в сыром виде.
¶Управление устройствами
WirePlumber автоматически обнаруживает подключение и отключение аудиоустройств (USB-гарнитуры, HDMI-мониторы, Bluetooth-наушники) и перенастраивает маршрутизацию. Пользователь может вручную изменять настройки через графические утилиты (например, pavucontrol или qpwgraph) или командную строку (pw-cli, wpctl).
¶Сравнение с PulseAudio и JACK
| Характеристика | PulseAudio | JACK | PipeWire |
|---|---|---|---|
| Задержка | 20–50 мс | 2–5 мс | 2–5 мс |
| Профессиональное аудио | Ограниченно | Полноценно | Полноценно |
| Изоляция потоков | Частично | Нет | Да |
| Поддержка видео | Нет | Нет | Да |
| Совместимость с Flatpak/Snap | Ограниченно | Нет | Да |
| Простота настройки | Высокая | Низкая | Высокая |
PipeWire объединяет лучшие черты обоих проектов: низкую задержку JACK и удобство PulseAudio, добавляя при этом поддержку видео и изоляцию.
¶Применение
PipeWire используется в следующих сценариях:
- Повседневное использование: воспроизведение музыки, видео, звук в играх, работа с микрофоном.
- Профессиональная аудиообработка: запись музыки, сведение, работа с DAW (Digital Audio Workstation) — например, Ardour, Reaper, Bitwig Studio.
- Захват экрана и трансляции: OBS Studio, GNOME Screen Recording, Wayland-совместимые приложения.
- Виртуализация и контейнеризация: PipeWire обеспечивает корректную работу звука в Flatpak, Snap и Docker-контейнерах.
- Встраиваемые системы: Raspberry Pi, автомобильные информационно-развлекательные системы.
¶Критика и ограничения
- Сложность конфигурации: Для продвинутых пользователей настройка WirePlumber может быть нетривиальной, особенно при работе с несколькими звуковыми картами.
- Неполная совместимость: Некоторые старые приложения, написанные под PulseAudio или JACK, могут работать с ошибками из-за различий в API.
- Потребление ресурсов: PipeWire потребляет больше оперативной памяти, чем PulseAudio, особенно при активном использовании видео.
- Отсутствие поддержки в некоторых дистрибутивах: Ряд консервативных дистрибутивов (например, Debian до версии 12) по-прежнему используют PulseAudio по умолчанию.
¶Примеры использования
- Запись экрана в GNOME: PipeWire используется как бэкенд для захвата видео в приложении «Запись экрана» (GNOME Screen Recorder).
- Подключение Bluetooth-наушников: При подключении гарнитуры WirePlumber автоматически переключает аудиовыход на неё, поддерживая кодеки LDAC и aptX.
- Работа с JACK-приложениями: Запуск Ardour с PipeWire-jack позволяет использовать низкую задержку без отдельного запуска сервера JACK.
¶Интересные факты
- PipeWire написан на языке C с использованием библиотеки GLib и фреймворка SPA (Simple Plugin API).
- Проект поддерживается компанией Red Hat, а также сообществом разработчиков GNOME и KDE.
- PipeWire может работать как в среде X11, так и в Wayland, но полная поддержка видео захвата реализована только в Wayland.
¶Источники
- Официальная документация PipeWire (pipewire.org)
- Статья «PipeWire: The new audio and video daemon» на сайте Red Hat
- Архив проекта на GitLab (gitlab.freedesktop.org/pipewire)
- Обсуждения на форумах Arch Linux и Fedora
- Сравнительный анализ PulseAudio, JACK и PipeWire в блоге «Linux Audio»
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


