PulseAudio¶
PulseAudio — это звуковой сервер, работающий на уровне пользователя, предназначенный для управления аудиопотоками в операционных системах на базе ядра Linux и других Unix-подобных системах. Он выступает в роли посредника между аудиоприложениями и аппаратным обеспечением (звуковыми картами, микрофонами, колонками), обеспечивая маршрутизацию, микширование, преобразование форматов и передачу звука по сети. PulseAudio является свободным программным обеспечением с открытым исходным кодом, распространяемым под лицензией LGPL 2.1 (или более поздней версией).
¶История
PulseAudio был создан в 2004 году финским разработчиком Леннартом Поттерингом (Lennart Poettering) как альтернатива существовавшим на тот момент звуковым системам, таким как OSS (Open Sound System) и ALSA (Advanced Linux Sound Architecture). Основной целью было создание более гибкой и функциональной системы, способной обрабатывать несколько аудиопотоков одновременно, управлять громкостью каждого приложения независимо и перенаправлять звук между устройствами.
Первоначально проект назывался «Polypaudio» (от греческого «poly» — много и латинского «audio» — слышу). В 2006 году, после значительной переработки кода и изменения архитектуры, проект был переименован в PulseAudio. В 2008 году PulseAudio стал звуковым сервером по умолчанию в дистрибутиве Fedora 9, а затем и в других крупных дистрибутивах, включая Ubuntu (начиная с версии 8.04 «Hardy Heron»), openSUSE и Debian.
В 2010-х годах PulseAudio подвергался критике за сложность конфигурации, нестабильность на некоторых конфигурациях и задержки при воспроизведении звука, особенно в профессиональных аудиоприложениях. В ответ на это разработчики выпустили ряд обновлений, улучшивших производительность и стабильность. В 2015 году была выпущена версия 6.0, которая представила поддержку Bluetooth-аудиоустройств и улучшенную обработку многоканального звука. В 2020-х годах PulseAudio начал постепенно вытесняться более современной системой PipeWire, которая объединяет функции звукового сервера и обработки видео, однако PulseAudio остаётся широко распространённым, особенно в дистрибутивах с длительным циклом поддержки (LTS).
¶Архитектура и принцип работы
PulseAudio работает по клиент-серверной модели. Звуковой сервер (демон pulseaudio) запускается в фоновом режиме и управляет всеми аудиоустройствами и потоками. Приложения-клиенты (например, медиаплееры, браузеры, игры) подключаются к серверу через сокеты и передают ему аудиоданные. Сервер, в свою очередь, микширует эти потоки, применяет к ним преобразования (изменение громкости, перекодирование, пространственную обработку) и выводит результирующий звук на устройство вывода (колонки, наушники) или передаёт на устройство ввода (микрофон).
¶Основные компоненты
- Демон PulseAudio (pulseaudio): Основной процесс, который выполняет всю работу по управлению звуком.
- Библиотека libpulse: Клиентская библиотека, используемая приложениями для взаимодействия с сервером.
- Модули: PulseAudio построен на модульной архитектуре. Модули загружаются в демон и предоставляют различные функции, такие как работа с конкретными типами устройств (ALSA, OSS, Bluetooth), сетевая передача звука, создание виртуальных устройств, обработка эффектов и т.д.
- Протокол: PulseAudio использует собственный протокол для связи между клиентом и сервером. Он может работать через локальные сокеты (Unix-сокеты) или через TCP/IP для сетевой передачи звука.
¶Управление аудиопотоками
PulseAudio поддерживает концепцию «потоков» (streams) и «устройств» (sinks и sources). Поток — это аудиоданные, передаваемые от приложения к серверу или от сервера к приложению. Устройство вывода (sink) — это конечная точка, куда направляется звук (например, звуковая карта, виртуальное устройство записи). Устройство ввода (source) — это источник звука (например, микрофон, линейный вход).
Сервер автоматически управляет маршрутизацией потоков, но пользователь может перенаправлять их вручную с помощью утилит командной строки (pavucontrol, pactl, pamixer) или графических интерфейсов (pavucontrol, pulseaudio-equalizer).
¶Функциональные возможности
¶Микширование и управление громкостью
PulseAudio позволяет микшировать несколько аудиопотоков в один, что даёт возможность одновременно воспроизводить звук из разных приложений (например, музыку из плеера и звук из браузера). Громкость каждого потока регулируется независимо, что позволяет, например, приглушить звук уведомлений, не снижая громкость музыки.
¶Перекодирование и преобразование форматов
Сервер может автоматически перекодировать аудиоданные между различными форматами (например, из 16-битного в 24-битное, из стерео в моно, с частотой дискретизации 44100 Гц в 48000 Гц). Это необходимо, когда приложение использует формат, не поддерживаемый аппаратным устройством.
¶Сетевая передача звука
PulseAudio поддерживает передачу звука по сети. Это позволяет, например, воспроизводить музыку с одного компьютера на колонках, подключённых к другому компьютеру в той же локальной сети. Для этого используется модуль module-raop-discover (для устройств Apple AirPlay) или module-simple-protocol-tcp.
¶Поддержка Bluetooth
Начиная с версии 6.0, PulseAudio имеет встроенную поддержку Bluetooth-аудиоустройств через модули module-bluetooth-discover, module-bluetooth-policy и module-bluetooth-sink. Поддерживаются профили A2DP (стерео-воспроизведение высокого качества) и HSP/HFP (гарнитура для звонков).
¶Виртуальные устройства
PulseAudio позволяет создавать виртуальные устройства вывода и ввода. Например, можно создать виртуальный микрофон, который будет записывать звук, воспроизводимый системой (loopback). Это полезно для записи стримов или подкастов.
¶Обработка эффектов
С помощью модулей PulseAudio можно применять к аудиопотокам различные эффекты, такие как эквалайзер (module-equalizer-sink), реверберация, пространственная обработка (surround sound). Однако эти возможности менее развиты, чем в специализированных профессиональных системах.
¶Критика и недостатки
PulseAudio неоднократно подвергался критике по нескольким причинам:
- Сложность конфигурации: Настройка PulseAudio через конфигурационные файлы (
default.pa,daemon.conf) может быть нетривиальной для обычного пользователя. Многие параметры скрыты и не документированы в полной мере. - Задержки (latency): В некоторых сценариях, особенно в профессиональной аудиозаписи и живом исполнении, PulseAudio вносит заметные задержки (десятки миллисекунд), что делает его непригодным для работы с низкой задержкой (low-latency). Для таких задач обычно используется JACK Audio Connection Kit.
- Нестабильность: На некоторых конфигурациях оборудования PulseAudio может работать нестабильно, вызывая щелчки, треск или полное отсутствие звука. Особенно это было характерно для ранних версий.
- Избыточность: Критики утверждают, что для многих пользователей функциональность PulseAudio избыточна, а его сложность не оправдана, так как базовые возможности ALSA (микширование, управление громкостью) вполне достаточны.
¶Сравнение с альтернативами
- ALSA: Является низкоуровневым интерфейсом к звуковым картам. PulseAudio работает поверх ALSA и предоставляет более высокоуровневые функции. ALSA не поддерживает управление громкостью отдельных приложений и сетевую передачу звука.
- JACK: Профессиональная звуковая система с низкой задержкой, предназначенная для аудиозаписи и обработки в реальном времени. JACK сложнее в настройке и использовании, чем PulseAudio, но обеспечивает гораздо меньшие задержки.
- PipeWire: Современная система, разработанная для замены как PulseAudio, так и JACK. PipeWire предлагает низкую задержку, управление потоками и поддержку видео. С 2021 года PipeWire стал звуковым сервером по умолчанию в Fedora, а затем и в других дистрибутивах, постепенно вытесняя PulseAudio.
¶Применение
PulseAudio используется по умолчанию в большинстве дистрибутивов Linux, включая Ubuntu, Debian, Fedora (до перехода на PipeWire), openSUSE, Manjaro и многие другие. Он также применяется в некоторых встраиваемых системах и на устройствах с ОС Linux, таких как Chromebook (в режиме разработчика).
¶Интересные факты
- Леннарт Поттеринг, создатель PulseAudio, также является автором других важных компонентов Linux, таких как systemd, Avahi и D-Bus.
- Название «PulseAudio» происходит от латинского слова «pulsus» (удар, пульс) и «audio» (слышу), что отражает идею обработки звуковых импульсов.
- В 2010 году разработчики PulseAudio выпустили версию 0.9.22, которая включала поддержку звуковых профилей (например, «аналоговый стерео» или «цифровой 5.1»), что упростило настройку многоканального звука.
¶Источники
- Официальная документация PulseAudio (freedesktop.org)
- Статья «PulseAudio» в ArchWiki
- Статья «PulseAudio» в English Wikipedia
- Блог Леннарта Поттеринга (0pointer.de)
- Материалы конференций Linux Audio Conference (LAC)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


