Как соотносятся ALSA и PulseAudio?

30

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

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

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

Ханно Фиц
источник

Ответы:

32

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.

апаш
источник
2
На самом деле, каждый раз, когда я находил Pulseaudio, я обнаруживал ПРОБЛЕМЫ! Забавно, что кажется (по крайней мере, исходя из моего опыта) проблемы и с RT-версией ядра, то есть ... вы хотите, чтобы легкая среда linux для воспроизведения музыки? Вы думаете о новом UbuntuStudio? Ну, подумай еще раз ...: D
dag729
4
О, не думай. Графика - это тоже куча ... Linux НЕ для настольного использования, если говорить просто и прямо. Xorg - это X- сервер, поэтому вы в основном запускаете SERVER и смотрите его (что за чушь? Да). На MAC, Windows, Haiku, GUI запускается из ядра (ладно, внутри ядра). Что ж. Это имеет смысл, не так ли? Также нет родного интерфейса. Как и в Windows, Windows.Forms. На MAC какао. Здесь вы можете использовать только наборы инструментов FAT, такие как GTK, Qt. | Сеть согласована, она в ядре, все в порядке (хорошо, если производитель предоставляет хороший драйвер, как Intel) ... вот и все.
Apache
3
On MAC, Windows, Haiku, GUI runs from the kernel (okay its inside the kernel). Well. It would make sense doesnt it? На самом деле это не так. Помните старые дурные времена «видео драйверов NT 4, которые взломали систему»? Да, это то, что вызвало это - запуск дрянных драйверов в пространстве ядра. Как вы думаете, почему Microsoft неожиданно взбунтовалась по поводу загрузки подписанных драйверов в Windows? Бинго! Потому что отвратительные драйверы вызывали сбои системы. Подписать их означало, что их проверят , и карикатура QA пройдет долгий путь ...
Эйвери Пейн
1
Avery: Теперь он поддерживает выгружаемые модули. Так что, если он выйдет из строя, он просто перезагрузит модуль для графического адаптера. Но, насколько я знаю, они все еще являются модулями. (Не работает в пользовательском пространстве ... это невозможно). | О SDL: это s..ks. Каждый автор игр жалуется на это, потому что это приводит к низкой производительности, сложным проблемам и т. Д. (Я не буду перечислять их, проверю поиск). Даже транспортный магнат с открытым исходным кодом работает медленно с SDL.
Apache
2
@Skiki - я понимаю, что ответ устарел, но не могли бы вы предоставить ссылки, где Valve отказалась от Linux? Насколько я вижу, они все еще идут полным ходом, имейте в виду каламбур.
aggregate1166877