26

Пытаясь заставить мой звук работать, я размышлял о роли ALSA и PulseAudio. Я установил оба, и мне было интересно, например, кто из них должен знать о моей звуковой карте.

Кажется, что оба могут использовать друг друга, есть плагин pulseaudio для ALSA, и в моей системе alsa отображается в качестве звуковой карты в pulseaudio.

Что из двух делает то, что они альтернативы или дополняют?

1 ответ1

29

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .