Добрый, начитался разных статей, обзоров и т.п. по звуку в linux. И теперь пытаюсь уложить в голове полученную кашу, буду благодарен, если поможете.
Правильно ли я понимаю, что на данный момент есть одна звуковая система alsa и три звуковых сервера: pulseaudio, pipewire и jack. Еще есть OSS, но как я понимаю, для linux ее можно не рассматривать?
Alsa отвечает за общение между процессором и звуковой картой. Главный минус в одноканальности, т.е. она может одновременно работать только с одним приложением. Правильно ли я понимаю, что в гипотетическом примере: разговор в микрофон с воспроизведением в колонках. Если используется одна программа, то будут работать оба устройства, а если используются разные программы, то только что-то одно?
Pulseaudio звуковой сервер, который выполняет роль коммутации между разными источниками и разными потребителями. Выполняет смешивание разных источников, если у них разная частота дискретизации, то делает преобразование. В минусах, задержка в сигнале и заикания? Это задержка постоянная или плавающая?
Jack это больше для профессионального аудио. Помогает избежать задержек и настроить прямые коммутации. Если нет надобности в записи аудио, то смысла немного?
Pipewire более новый звуковой сервер. По одним источникам, должен заменить сразу и пульсу и джек, по другим только частично, и то, только в отношении пульсы. В плюсах, меньшие задержки по сранению с пульсой, отсутствуют заикания. В минусах, не весь функционал и какие-то проблемы с преобразованием частот. Пульса, вроде как, ориентируется на источники, а пайпы на конфиг, из-за чего делает преобразование там, где не надо?
На компьютере можно организовать следующие режимы работы:
- звук <-> alsa <-> pulse/pipe <-> приложение
- звук <-> alsa <-> приложение, но только одно
С первым понятно, алса в ядре, к ней доустаналиваются ее утилиты и библиотеки, поверх чего устанавливается нужный сервер.
А как реализовывать второй вариант? Так, чтобы звуковой сервер не пришел по зависимостям. Я экспериментирую на арче, и, к примеру, при установке минимальной плазмы (plasma-desktop), мне уже подтягивают pipewire. Две пары зависимости: pipewire-jack или jack2 и pipewire-session-manager или wireplumber. У которых в свою очередь зависимость на pipewire.
Пока писал, пришло в голову, возможно мне поможет apulse? Если я ее устанавлю перед плазмой, будет ли последняя считать, что у меня стоит пульсаудио, поэтому отсутствует надобность в трубах? Или, как советуют в одной из тем, надо ставить пульсу, а потом ее отключать?
З.Ы. Вообще, после прочитанного, я склоняюсь к варианту алса+пульсаудио. Но в процессе экспериментов, словил заикания музыки. Поэтому думаю о возможности, как бы собрать три варианта и сравнить.