ALSA - это звуковой микшер уровня ядра, он управляет вашей звуковой картой напрямую. ALSA сама по себе может обрабатывать только одно приложение за раз. Конечно, есть dmix , который был написан для решения этой проблемы. (Это модуль ALSA.)
PulseAudio - это программный микшер, расположенный поверх пользовательской среды (как если бы вы запускали приложение). Когда он работает, он использует Alsa - без dmix - и управляет всеми видами микширования, устройствами, сетевыми устройствами, всем самому.
В 2014 году вы все еще можете запустить только ALSA. Но если вы не скомпилируете свои приложения для себя и не включите поддержку ALSA везде - или не используете дистрибутив на основе исходного кода, такой как Gentoo, - у вас могут возникнуть проблемы с микшированием. Предварительно скомпилированные приложения, которые поставляются с дистрибутивами, обычно создаются только с поддержкой Pulseaudio, а не чистого ALSA. Ubuntu, например, предпочитает PulseAudio. Он поставляется с PulseAudio по умолчанию, поэтому каждое приложение компилируется для использования только PulseAudio.
PulseAudio имеет свои преимущества. Люди говорят, что это хорошо для работы со звуком по сети, и это решает некоторые проблемы с многоканальными аудиопотоками, которые произошли в чистом ALSA. Также предположительно проще разрабатывать приложения для PA. Что касается конечного пользователя, то легко выбирать новые устройства, управлять громкостью с помощью приложения и т. Д.
Однако в конфигурации по умолчанию он добавляет незначительную задержку в миксе. Это большое преимущество для определенных типов задач, требующих малой задержки, таких как некоторые игры и программное обеспечение.
OSS является альтернативой им обоим, но он не лицензирован в соответствии с GPL, что делает маловероятным, что дистрибутивы получат широкое распространение.
Иллюстрация :
Типичные звуковые системы на базе PulseAudio, такие как Ubuntu:
Ядро: ALSA -> Пользователь: PulseAudio -> app1, app2, app3
В типичной системе Linux PulseAudio смешивает аудио из всех ваших различных приложений и передает их по цепочке в ALSA.
ALSA:
Ядро: ALSA -> dmix -> Пользовательская область: app1, app2, app3
Просто с ALSA вам нужен dmix для смешивания нескольких приложений. Без этого ALSA может одновременно воспроизводить аудиопоток только из одного приложения.
OSS:
Ядро: OSS -> Пользовательская область: app1, app2, app3
При использовании OSS пользовательские приложения взаимодействуют непосредственно с OSS в ядре, которое смешивает потоки самостоятельно.
Итак, подводя итог, в вашей типичной системе в наши дни ALSA общается напрямую с вашими звуковыми картами, а Pulseaudio общается с вашими приложениями и программами и передает их в ALSA.