PipeWire vs PulseAudio: В чем разница?
Если вы активны в сообществе Linux, вы часто сталкиваетесь с дискуссиями о том, что лучше: PipeWire или PulseAudio? Некоторые пользователи предпочитают PulseAudio, в то время как другие находят решение своих давних аудиопроблем с помощью PipeWire. Так в чем же разница между PipeWire и PulseAudio?
PipeWire — это относительно новая технология, и у нее есть свои премущества и цель, поэтому она заменяет последовательно заменяет PulseAudio во дистрибутивах Linux. Это не означает, что PulseAudio не работает вообще. Она хорошо служила и служит пользователям, и конечно, имеет свои плюсы и минусы.
Основы аудио в Linux
Сегодня каждая материнская плата (ПК/ноутбук) имеет встроенную звуковую карту — аппаратный компонент, используемый для преобразования аналоговых аудиосигналов в цифровые для записи и стриминга.
Конечно, некоторые имеют внешнюю звуковую карту, но сейчас это редкость.
Для взаимодействия с аппаратным обеспечением и работы с приложениями, такими как аудиоредакторы в Linux, нам нужен какой-то драйвер (или промежуточное ПО).
И здесь на сцену выходит ALSA (Advanced Linux Sound Architecture).
ALSA (встроенная в ядро Linux) предоставляет необходимые драйверы устройств для чтения и записи со звуковой карты. Вы найдете множество приложений, которые напрямую используют ALSA, например, таких как VLC для вывода и Audacity, который может напрямую записывать аудио через ALSA.
Суть в том, что многие приложения используют API ALSA напрямую, без необходимости в аудиосервере, таком как PulseAudio или PipeWire.
Но вы не можете полагаться на ALSA, так как она берет под контроль все звуковое устройство, поэтому вы можете использовать его только для обработки одного приложения за раз. Таким образом, нет аппаратного мультиплексирования.
По этой причине нам нужен аудиосервер, такой как PulseAudio или PipeWire.
Появление PulseAudio решило три основные проблемы, которые были с ALSA:
- Воспроизведение аудио из нескольких приложений одновременно.
- Наличие дополнительных функциями, таких как, смешивание нескольких аудиопотоков, аудиостриминг, управление громкостью для каждого приложения и т.д.
- Простота использования.
Исходя из вышеизложенного, базовая структура аудио в Linux выглядит так:
Теперь, когда у нас есть представление о том, как работает аудио в Linux, давайте углубимся в различия между двумя аудиосерверами, которые делают наш опыт использования Linux лучше.
Сравнение аудиосерверов: PipeWire vs PulseAudio
Для того, чтобы понять, в чем их различие, нам нужно знать, что они собой представляют, как они работают и их набор функций.
Конечно, самое простое объяснение заключается в том, что одна технология новее, а другая — старее.
Давайте более подробно рассмотрим остальные детали, включая информацию, связанную с аудиосерверами.
JACK (JACK Audio Connection Kit) - аудиосервер, созданный для профессиональных аудиохудожников, который решил одну проблему PulseAudio: перенаправление выхода на любой вход. Проще говоря, он работал как физическая коммутационная панель.
Это более старая технология по сравнению с PulseAudio. Причина, по которой она не получила популярности, заключается в том, что она была сложной в использовании и несовместимой с PulseAudio.
PulseAudio
PulseAudio — это суперпростой аудиосервер, разработанный для систем Linux. Изначально он был известен как «Polypaudio» и в последствии был переименован.
Он был создан как современная альтернатива ESD (Enlightened Sound Daemon). ESD был звуковым сервером, поддерживаемым в рамках проекта GNOME, как технология для унификации звуковых драйверов для всех видов архитектур.
Если это POSIX-совместимая операционная система (дистрибутив), то PulseAudio может быть для нее звуковым сервером.
Кроме того, PulseAudio поставляется с различными модулями плагинов, что делает его пригодным для многих вариантов использования. И не только в компьютерах, PulseAudio также используется в различных мобильных устройствах.
PipeWire: Объединение лучшего из PulseAudio и JACK
PipeWire - это мультимедийный фреймворк (и программа аудиосервера), который сумел обеспечить расширенные возможности для работы с современными аудиоустройствами и при этом стать простой утилитой для конечных пользователей.
Помните, что я говорил о JACK выше?
Он предлагал отличные возможности, но имел проблемы с совместимостью с существующей системой PulseAudio. Кроме того, использование JACK было сложным, поэтому сложно рекомендовать данный аудиосервер, если вы не являетесь профессионалом в области аудио. С другой стороны, PulseAudio был удобен в использовании и имел поддержку старых версий, но и у него были свои проблемы.
Поэтому нам нужна была простая утилита, совместимая с другими аудиосерверами, такими как PulseAudio, решающая все проблемы PulseAudio и предлагающая лучший набор функций.
Именно здесь на сцене появилась технолгия PipeWire.
PipeWire также разработан таким образом, чтобы обеспечить лучшую безопасность при взаимодействии с аудио/видео устройствами через контейнерные приложения, поддерживающие в первую очередь Flatpak.
Он не только обеспечивает лучшую совместимость с новыми пакетами, но и поддерживает Wayland.
Как они работают?
PulseAudio работает на основе архитектуры клиент/сервер, поддерживая различные клиенты с разными API, а также локальные и удаленные серверы. Вся система должна функционировать безупречно благодаря модулям. PulseAudio сам по себе представляет собой демон для API и хостинга модулей, без которых он не может полноценно работать.
По умолчанию PulseAudio использует системную конфигурацию, но вы можете создать собственный конфигурационный файл в домашнем каталоге, и при следующем запуске он будет использовать его.
PipeWire, в отличие от PulseAudio, не полагается на систему модулей. Вместо этого демон обрабатывает данные, а менеджер сессий использует граф медиа (информацию об устройствах, портах и узлах) для определения, как их связать.
PipeWire не ограничивается только потребительским аудио, как PulseAudio, он удовлетворяет требования к низкой задержке как обычных пользователей, так и профессионалов, служа альтернативой JACK.
В сообществе можно найти множество отзывов, где пользователи называют PipeWire достойной заменой JACK, отличающейся простотой использования и лучшей надежностью.
Таким образом, PipeWire с технической точки зрения является лучшим выбором для многих.
Ключевые функции
PulseAudio продолжает использоваться, несмотря на появление PipeWire. Вот некоторые из лучших особенностей, которые делают PulseAudio удобным для использования:
- Возможность регулировать громкость для каждого приложения независимо.
- Поддержка мультиплексирования аудио, позволяющая воспроизводить звук из нескольких приложений одновременно.
- Передача аудиопотока через TCP-сервер.
- Архитектура с нулевым копированием памяти, которая позволяет передавать аудиоданные между приложениями и аудиоустройствами без лишнего копирования или буферизации, что снижает задержку и улучшает управление ресурсами.
- Обеспечение совместимости для работы существующих приложений без необходимости их модификации.
- Разнообразие модулей для выполнения всех необходимых функций.
PipeWire предлагает более широкий набор функций, что делает его предпочтительным выбором по сравнению с PulseAudio. Вот некоторые из его ключевых особенностей:
- Единое решение, заменяющее как PulseAudio, так и JACK, и удовлетворяющее потребности как обычных пользователей, так и профессионалов.
- Улучшенная поддержка низких задержек.
- Совместимость с API PulseAudio и JACK.
- Поддержка всех кодеков Bluetooth по умолчанию.
- Эффективное объединение устройств и ресэмплинг.
- Возможность динамического переключения между различными размерами буфера для адаптации к требованиям различных аудиоприложений.
- Поддержка приложений Flatpak.
- Поддержка рабочего стола Wayland.