Если вы следите за всеми тенденциями в Linux-сообществе, вы наверняка сталкивались с дебатами о том, что лучше: PipeWire или PulseAudio?
Некоторые пользователи предпочитают вернуться к PulseAudio, в то время как другие находят решение своих десятилетних проблем с аудио в PipeWire. Поэтому вопрос заключается в следующем: какая разница между PipeWire и PulseAudio?
Конечно, PipeWire – относительно новая технология, у нее должна быть цель, и именно поэтому она заменяет PulseAudio во многих дистрибутивах Linux. Но это не значит, что PulseAudio плох. Он очень хорошо выполняет возложенные на него задачи, но, безусловно, имеет свои плюсы и минусы.
Основы аудио в Linux
В настоящее время каждая материнская плата (ПК/ноутбука) имеет встроенную звуковую карту – аппаратный компонент, который используется для преобразования аналоговых аудиосигналов в цифровые для записи и потоковой передачи.
Конечно, некоторые могут использовать внешнюю звуковую карту для воспроизведения звука, но это редкость.
Итак, нам нужен какой-то драйвер (или промежуточное ПО) для взаимодействия с аппаратным обеспечением и работы с такими приложениями, как аудиоредакторы в Linux, верно?
И именно здесь вступает в игру ALSA (Advanced Linux Sound Architecture).
ALSA (встроенная в ядро Linux) обеспечивает необходимые приводы устройств для чтения и записи со звуковой карты Вы найдете множество приложений, которые напрямую используют ALSA, например, VLC для вывода и Audacity который может напрямую записывать звук через ALSA.
Смысл в том, что многие приложения используют ALSA API напрямую, без необходимости использования аудиосервера, такого как PulseAudio или PipeWire.
Но вы не можете полагаться на ALSA, так как он берет под контроль все звуковое устройство, поэтому вы можете использовать его только для работы с одним приложением за один раз. Так что никакого аппаратного мультиплексирования. Именно по этой причине нам требуется аудиосервер, например PulseAudio или PipeWire.
Появление PulseAudio решило три основные проблемы, которые мы испытывали с ALSA:
- Воспроизведение звука из нескольких приложений одновременно.
- В нем появились расширенные возможности, такие как смешивание нескольких аудиопотоков, потоковая передача звука, управление громкостью для каждого приложения и т. д.
- Простота использования.
Вот как выглядит основная структура аудио на основе предыдущих объяснений:
Теперь, когда мы имеем представление о том, как работает аудио в 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. Кроме того, его использование было сложным, поэтому его трудно рекомендовать, если вы не являетесь профессионалом в области аудио. С другой стороны, PulseAudio был удобен в использовании и имел поддержку старых версий.
Поэтому нам нужна была простая утилита, совместимая с другими аудиосерверами, такими как PulseAudio, решающая все проблемы PulseAudio и предлагающая лучший набор функций.
Тогда на помощь пришла PipeWire.
PipeWire также разработан таким образом, чтобы обеспечить лучшую безопасность при взаимодействии с аудио/видео устройствами через контейнерные приложения, поддерживая в первую очередь Flatpak.
Не только обеспечивая лучшую совместимость с новыми пакетами, он также поддерживает Wayland
Как они работают?
PulseAudio использует архитектуру клиент/сервер для работы. Могут быть различные клиенты с различными API, а также локальные/удаленные серверы PulseAudio.
И все это должно работать безупречно с помощью модулей. Да, PulseAudio функционирует через свои модули, сам по себе он не так уж и много умеет, это просто демон для API и хостинга модулей.
По умолчанию PulseAudio использует конфигурацию, доступную во всей системе. Однако вы можете создать собственный конфигурационный файл в домашнем каталоге, и при следующей загрузке он будет использовать его.
PipeWire работает по-другому, не полагаясь в первую очередь на систему модулей. Демон отвечает за обработку, а менеджер сессий использует граф медиа (информацию об устройствах, портах и узлах), чтобы решить, как связать их всех.
В отличие от PulseAudio, предназначенного только для потребительского аудио, PipeWire удовлетворяет все виды требований к низкой задержке для обычных пользователей и профессионалов (как альтернатива JACK).
Я просмотрел сотни сообщений и отзывов в linux-сообществе, где пользователи хвалили PipeWire за устранение треска, или они нашли идеальный вариант для замены JACK с простотой использования и лучшей надежностью.
В общем, он работает так, как должен. И, с технической точки зрения, это лучший выбор для многих.
Ключевые особенности
PulseAudio все еще используется, даже если ему на смену пришел PipeWire.
Некоторые из лучших особенностей, которые делают PulseAudio полезной техникой, включают:
- Возможность регулировать громкость для каждой программы независимо.
- Поддержка мультиплексирования аудио, позволяющая пользователям воспроизводить аудио из нескольких приложений одновременно
- Потоковая передача аудио через TCP-сервер
- Архитектура PulseAudio с нулевым копированием памяти позволяет передавать аудиоданные между приложениями и аудиоустройствами без лишнего копирования или буферизации для снижения задержки и лучшего управления ресурсами
- Обеспечивает уровни совместимости для работы существующих приложений без каких-либо изменений
- Разнообразие модулей для обеспечения всех видов основных функций
PipeWire выигрывает по набору функций:
- Унифицированное решение, призванное заменить PulseAudio и JACK и обеспечить решение как для простых, так и для профессиональных пользователей
- Лучшая поддержка низкой задержки
- Совместимость с API PulseAudio и JACK.
- Виртуальная поддержка всех кодеков Bluetooth по умолчанию
- Эффективное объединение устройств и ресэмплинг
- Он может динамически переключаться между различными размерами буфера, чтобы адаптироваться к различным требованиям к задержке различных аудиоприложений
- Поддержка приложений Flatpak
- Поддержка рабочего стола Wayland
Что я думаю о PulseAudio против PipeWire?
Начну с того, что «Если ничего не сломалось, не стоит лезть чините».
Еще не все дистрибутивы Linux перешли на PipeWire, и некоторые пользователи наслаждаются аудио, как раньше, с PulseAudio. Я использую PulseAudio, поскольку он отлично работает с моей системой объемного звучания 5.1. Так что у меня нет причин для перехода.
Для пользователей с современными Bluetooth-наушниками или если у вас плохой звук с PulseAudio, вы можете перейти на PipeWire.
Самый простой способ сделать это – выбрать дистрибутив Linux, который предлагает PipeWire из коробки.
«ALSA (встроенная в ядро Linux) обеспечивает необходимые приводы устройств для чтения и записи со звуковой карты» — обеспечивает чем?