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 -> Пользовательская область: app1, app2, app3
С помощью OSS пользовательские приложения взаимодействуют напрямую с OSS в ядре, которое смешивает потоки.
Итак, подведем итог: в вашей типичной системе в наши дни ALSA общается напрямую с вашими звуковыми картами, а Pulseaudio общается с вашими приложениями и программами и передает их в ALSA.