Открыть сервис

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 →