LINUX.ORG.RU

Путеводитель по джунглям звуковых API в Linux

 ,


0

0

Программистам часто трудно решить, какие из звуковых API для каких целей использовать при создании аудиопрограмм для Linux. Леннарт Пёттеринг предлагает разобраться в этих джунглях.

>>> Подробности

Ответ на: комментарий от Fice

Вы - редкий счастливчик :) Ну а если на стареньком компе с 2 core 1.8 GHz даже в mplayer'e видно, что звук отстает, это как? При чем всякие там музыкальные прибамбасы со снесенным нафиг пульсаудио и поставленод джеке работают на ура и никакиз глюков, задержек и прочего?

Ладно, модные всякие BT и FW - хрен с ними, но как можно писать прогу, которая создает задержки в пол-секунды при заявленных 20мс? Не знаю шо там самое кривое, но точно не драйвер в алсе, потому что с джеком работает на ура с задержкой 5мс, а спульсом - полный аут.

Корень проблем, наверное, в багах программного моста из эмуляции алсы в пульс и обратно в алса. Или в алгоритме "безглючного звука"... Или в ДНК у Ленарда.

Бывают в линуховом бомонде такие моменты, когда толпа идет на поводу у одного-двух полудурков, и потом все долго плюются. Пульс - как раз тот случай.

Некоторые утверждения в статье ваще не выдерживают критики. Типа OSS мертв. Так какого ж хрена он прекрасно работает в xBSD или в солярке? Ну или десктопным приложениям не нужно друг другу звук передавать... Блин, тупо записать разговор по сипу или там по чему угодно - это никому не нужно?

Короче, ясное дело, что парень Ленард - свистопердун и попсовик, с очень узким лобиком. Не понимаю, чего так федоровцы за этот хлам горой стоят...

alukin
()
Ответ на: комментарий от AVL2

>пульс недолжен зависеть от проблем с альзой и, тем более, с esd. От альзы требуется просто вывести поток на устройство. Если она и это не может, то это не проблема, это неработающая альза. Esd вообще сбоку.

пока были нормальные звуковушки с аппаратными микшером и ресамплером - все было отлично. у меня до сих пор отлично работает YMF724VF+

а потом пришел вал говна, где из железа только ЦАП-АЦП. только с недавнего времени альса приспособилась к засилью этого вещества.

в конце концов для страдальцев есть OSSv4, а уж там апи - проще некуда

black7
()
Ответ на: комментарий от isden

Есть предположение, что лаги были из-за драйверов, т.к. Ленард писал, что пульс пользует те части альсы, которые вобще больше ничего не использует и драйвера могут криво реализовывать эту функциональность. Кстати, претензий к АЛСА у него целый список: http://pulseaudio.org/wiki/AlsaIssues.

Если интересно про лаги почитать, то просто набери в гугле ubuntu skype lags.

eugene2k
()
Ответ на: комментарий от duott

>Объясните пожалуйста, простому пользователю есть какой-нибудь смысл разбираться во всём этом зоопарке?

да нет там никакого зоопарка.

есть низкоуровневые API - oss/alsa, все остальное работает поверх.

pulse - способ унификации и стремление максимальной абстракции от устройств, jack - api для real-time работы со звуком, esd/arts - устаревшие звуковые серверы, решавшие проблему микширования множества аудиопотоков от разных приложений (пока oss/alsa этого неумели).

остальное экзотика

black7
()
Ответ на: комментарий от anonizmus

>ALSA дальше рулит всем звуком

альса хорошее, годное решение. но только не для intel-hda

из 3 разных железяк с ним, ни на одном альса нормально не завелась

OSSv4 тут вне конкуренции, только микшер у них - ossxmix - это торжество инопланетного разума. хоть свой пиши

black7
()
Ответ на: комментарий от alukin

>Не знаю шо там самое кривое, но точно не драйвер в алсе, потому что с джеком работает на ура с задержкой 5мс, а спульсом - полный аут.
А почему такая уверенность, что внутри пульс использует абсолютно те же интерфйсы альсы, что и джек?

eugene2k
()
Ответ на: комментарий от black7

спасибо за пояснения.

>остальное экзотика

а Phonon разве экзотика? насколько я понимаю, это дефолтный вариант для KDE, хотя в кубунте почему-то pulseaudio.

duott ★★★★★
()
Ответ на: комментарий от AVL2

>пульс недолжен зависеть от проблем с альзой и, тем более, с esd.
Зависит не пульс, а конечный результат. Вот если бы пульс падал, то можно было бы точно сказать, что пульс зависит, а так ведь ни ты ни я с дебаггером в пульсе не копались.

eugene2k
()
Ответ на: комментарий от alukin

Компы, о которых я писал далеко не современные - 2-х ядерных среди них нет. Почему у вас возникли проблемы я не знаю, может баг, может просто криво настроено, но, вместо того, чтобы необоснованно ругать Ленарта, лучше бы багрепорт написали: задержка в пол-секунды, очевидно, не предполагается при корректной работе программы.

Fice ★★
()
Ответ на: комментарий от eugene2k

>Пульс - это не замена джеку. У них вообще разные сферы применения.
Ой! Бабушке расскажете. Просто джек построен на здравой идее, умеет больше и правильнее это делает. Все-таки писан профессионалом для профессионалов. Послушать Ленарда - так ваще ничего кроме его убожеского детища не нужно.

Те, кто работают со звуком по уму, все строят на jack'e. И если устраивает задержка в 20мс, то она будет 20мс, а не пол-секунды. И при этом никаких xrun'ов и пропаданий звука, непочищенного бувера и прочей дряни, как с пульсом, даже на моем старом нотбуке с одной корой 1.8 ГГц.

Так что еще раз, слушать Ленарда - дело гнилое. И "суждения" в его статейке выдают его с головой как ламера и быдлокодера.

Извините уж за такую "активность", но меня эта бадяга с пульсом конкретно достала за 2 последних года.

alukin
()
Ответ на: комментарий от AVL2

"Фишка" в том, что напрямую с выводом звука на альсу работает мало приложений: используются уже указанные libcanberra/sdl/gstreamer. А их уже портировали с alsa на pulseaudio, так что в большинстве случаев эмуляция и не нужна вовсе (тем более, что её можно и отключить, и все приложения, которым "латентность" ой как нужна можно зарулить напрямую на альсу).
Ну а PA дала определённые плюсы, вроде возможности перенаправления потоков "на лету" и сетевой трансляции звука в пару кликов мыши.

Deleted
()
Ответ на: комментарий от Fice

>чтобы необоснованно ругать Ленарта, лучше бы багрепорт написали
Единственное, что я делаю с пульсом - сношу нафиг, как только обнаруживаю. И багрепоты писать на этот хлам - бесполезная трата времени. Там ошибка в ДНК.

Ругаю я его вполне обоснованно, Вы вот сами попробуйте запустить с пульсом утсновленным какой-нить редактор многодорожечный или секвенсор плюс синтезатор на саундфонте. И послушайте, что получается. При абсолютно правильной, имени Ленарда, так бы его перетак, настройки Федоры.

Если у Вас просто там скайп в гарнитуру работает, то это не звуковая подсистема, это баловство. Звуковая подсистема - это как в Маке - работает все и работает КАЧЕСТВЕННО и профессионально. За 2 года в Федоре по дефолту этот пульс так и не научился работать без глюков, при старте даже шипеть не перестал - лень чувачку ноликами буфер забить.

Какие тут багрепоты? Кому!

alukin
()
Ответ на: комментарий от alukin

Выше уже было объяснено, какие именно проблемы решает pulseaudio. Jack эти проблемы не решает. Jack не может работать сразу с несколькими устройствами, подключать их не лету и перенаправлять на них потоки с отдельных приложений (пример с bt и usb-наушниками). Кроме того, jack требует больше ресурсов (надолго аккумулятора в ноуте хватит, если все время jack будет работать?)

Идеальный вариант: иметь jackd для профессиональной работы со звуком и pulseaudio для desktop-приложений. Главное, чтобы оба сервера нормально взаимодействовали друг с другом: pulseaudio должен уметь автоматически перенаправлять потоки на jackd, когда тот занимает звуковое устройство.

Fice ★★
()
Ответ на: комментарий от alukin

> Вы вот сами попробуйте запустить с пульсом утсновленным какой-нить редактор многодорожечный или секвенсор плюс синтезатор на саундфонте. И послушайте, что получается.

Зачем? Pulseaudio существует не для этого. Для этого есть jackd.

Fice ★★
()
Ответ на: комментарий от Fice

Новый jackd тоже умеет кучу фишек, полюбобытствуйте. Дело не в том, что этот пульс там вроде б как делает, а в том, что он РЕАЛЬНО МЕШАЕТ. И это совсем неприемлемое решение, когда для качественного звука я должен запускать один звуковой сервер, а для дерьмового - другой. Идиотизм.
Верх идиотизма!

По поводу "прожорливости" jack - вранье. Никто не заставляет Вас использорвать его в режиме максимального разрешения и минимальной латентности. В "приемлемом" варианте с 20-50 мс жрет он не больше чем убогий пульс.

alukin
()
Ответ на: комментарий от alukin

> Новый jackd тоже умеет кучу фишек, полюбобытствуйте. Дело не в том, что этот пульс там вроде б как делает, а в том, что он РЕАЛЬНО МЕШАЕТ. И это совсем неприемлемое решение, когда для качественного звука я должен запускать один звуковой сервер, а для дерьмового - другой. Идиотизм.

При чем тут вообще качество звука? Качество одинаковое. Разница в том, что десктоп-приложение и профессиональные средства для работы со звуком предоставляют к звуковой подсистеме принципиально разные требования. Чтобы удовлетворять разным требованиям, нужны разные решения. В Windows, кстати, тоже есть два API: ASIO и DirectSound.

> По поводу "прожорливости" jack - вранье. Никто не заставляет Вас использорвать его в режиме максимального разрешения и минимальной латентности. В "приемлемом" варианте с 20-50 мс жрет он не больше чем убогий пульс.

В любом случае, он будет непрерывно гнать поток данных с/на звуковую карту, не давая ей перейти в спящий режим, даже если звук реально не выводится.

Fice ★★
()
Ответ на: комментарий от Fice

ASIO появилось в следствие абсолютной кривости родной подсистемы, чтоб звуковые программы хоть как-то могли работать в винде. И если дизайн офотопика для Вас - пример, то флаг вам в руки.

Ну и по поводу "будет постоянно гнать поток" - тоже вранье. Может Вы ваще имеете в виду Jack1 вместо Jack2?

alukin
()
Ответ на: комментарий от alukin

PS. Jackd разработан в полном соответсвии с духом Юникса - звуковые проги могут становиться в конвеер и делать свои простые дела. Шо было в голове у разработчика пульса кроме первозданного хаоса, сказать трудно.

alukin
()
Ответ на: комментарий от alukin

а этот ваш jackd умеет перенаправить вывод только от скайпа или только от плеера в bluetooth гарнитуру, не затрагивая остальной софт?

isden ★★★★★
()
Ответ на: комментарий от alukin

PPS. Если звуковая подсистема в современной ОС не нравится музыканту, она нафиг не нужна. Потому что это прошлый век и полный отстой.

alukin
()
Ответ на: комментарий от alukin

> ASIO появилось в следствие абсолютной кривости родной подсистемы, чтоб звуковые программы хоть как-то могли работать в винде.

Так и есть, но будучи заточено под про-аудио, оно старую подсистему собой не заменило.

> Ну и по поводу "будет постоянно гнать поток" - тоже вранье.

Обоснуйте.

> Может Вы ваще имеете в виду Jack1 вместо Jack2?

В данном случае, не важно. Я в курсе насчет возможностей jack2: сам его использую.

Fice ★★
()

Почитал тему, вы меня убедили.

Прихожу домой и сношу пульс нафиг. Сейчас он у меня просто задизабленый.

Да, и еще. Звук у меня под линуксом реально хуже, чем под виндой. Просто хуже качество звучания при обычном, банальном проигрывании мп3шек (играю через Сонату, хотя не суть важно, везде звук посредственный). Что мне может помочь в этой ситуации? Звуккарта - банальная AC97.

YogSagot ★★☆
()
Ответ на: комментарий от YogSagot

>Что мне может помочь в этой ситуации?
Не знаю, у меня тоже AC97, но только винды нет, не с чем сравнить. Звук неплохой. Не такой, конечно, как на Бластере, но... Попробуйте плеер с эквалайзером. Наверняка, в винде у вас предустановочка с поднятыми низами и самым верхом.

alukin
()
Ответ на: комментарий от YogSagot

> Прихожу домой и сношу пульс нафиг. Сейчас он у меня просто задизабленый.

Никто не заставляет его использовать. Лично для себя я нашел его полезным.

> Да, и еще. Звук у меня под линуксом реально хуже, чем под виндой.
Просто хуже качество звучания при обычном, банальном проигрывании мп3шек (играю через Сонату, хотя не суть важно, везде звук посредственный). Что мне может помочь в этой ситуации? Звуккарта - банальная AC97.

Сталкивался похожей проблемой с via82xx. Решалось установкой другого значения параметра dxs_support модуля snd-via82xx.

Fice ★★
()
Ответ на: комментарий от YogSagot

попробуй покрутить ползунки на PCM в alsa-mixer'е

isden ★★★★★
()
Ответ на: комментарий от Fice

>В данном случае, не важно.
Важно, в федоре, например, старый Jack1 стоит, как специально! Чтоб новый поставить, надо подключить репозиторий CCRMA.

http://ccrma.stanford.edu/planetccrma/software/

Вэб-страничка старая, но репозиторий под 11-ю живой. Хоть и не такой активный сечас проект. Наверняка, и их Ленард достал по полной. :)
Там же есть rt ядро.

alukin
()
Ответ на: комментарий от Fice

>Так и есть, но будучи заточено под про-аудио, оно старую подсистему собой не заменило

А как бы ASIO заменило кусок винды, если его разработал консорциум звуковиков, ан не мелкомягкие? Шутить изволите, барин! :)

alukin
()
Ответ на: комментарий от alukin

Спасибо, я в курсе: уже несколько лет на PlanetCCRMA, сейчас именно на Fedora 11. Я видел где-то упоминание о работе по интеграции с репозиторием Fedora extras.

Fice ★★
()
Ответ на: комментарий от Fice

>Никто не заставляет его использовать.

А вот это как раз та махровая брехня, которая меня так возмущает!!! ЗАСТАВЛЯЮТ, потому что эта дрянь вкючена по дефолту в бубунте и в федоре и еще хрен его знает где.

alukin
()
Ответ на: комментарий от isden

> а этот ваш jackd умеет перенаправить вывод только от скайпа или только от плеера в bluetooth гарнитуру, не затрагивая остальной софт?

Этот наш jackd может даже перенаправить вывод от плеера в скайп... Когда скайп научится работать с jack.

naryl ★★★★★
()
Ответ на: комментарий от alukin

> А вот это как раз та махровая брехня, которая меня так возмущает!!! ЗАСТАВЛЯЮТ, потому что эта дрянь вкючена по дефолту в бубунте и в федоре и еще хрен его знает где.

"По умолчанию" никогда всех не устраивает. Не нравиться - отключайте. А новые пользователи не должны обламываться при попытке, например, воспользоваться bt-наушниками.

Fice ★★
()
Ответ на: комментарий от naryl

> Этот наш jackd может даже перенаправить вывод от плеера в скайп... Когда скайп научится работать с jack.

Это-то он может, а просили "от скайпа или только от плеера в bluetooth гарнитуру, не затрагивая остальной софт". Чувствуете разницу?

Fice ★★
()
Ответ на: комментарий от alukin

Ну и последнее на сегодня. Нужно сказать спасибо Ленарду, что написал такое дерьмо и федоровцам, что его проталкивают, потому что из-за полной убогости в плане звука этого решения наконец-то поднялась ШИРОКАЯ дискуссия о плачевном состоянии звуковой подсистемы в Линухе.

alukin
()
Ответ на: комментарий от alukin

Ленарту спасибо за то, что он _начал решать_ проблему плачевного состоянии звуковой подсистемы.

Fice ★★
()
Ответ на: комментарий от YogSagot

> Звук у меня под линуксом реально хуже, чем под виндой. Просто хуже качество звучания при обычном, банальном проигрывании мп3шек (играю через Сонату, хотя не суть важно, везде звук посредственный). Что мне может помочь в этой ситуации? Звуккарта - банальная AC97.

Ответ очевиден: используйте венду, зачем вам линукс?

Led ★★★☆☆
()
Ответ на: комментарий от alukin

>Если звуковая подсистема в современной ОС не нравится музыканту, она нафиг не нужна. Потому что это прошлый век и полный отстой.

Есть мнение, что 99% современных т.н. "музыкантов" - полный отстой.

Led ★★★☆☆
()
Ответ на: комментарий от alukin

>Jackd разработан в полном соответсвии с духом Юникса - звуковые проги могут становиться в конвеер и делать свои простые дела.

Это здорово. расскажите, как мне с помощью jackd получить (прозрачно) звук на тонком клиенте. С pulsaudio это уже как минимум 2,5 года работает, без мифических "задержек в mplayer" на клиенте с процессором 200 МГц.

Led ★★★☆☆
()
Ответ на: комментарий от naryl

> Когда скайп научится работать с jack.

ололо!

isden ★★★★★
()
Ответ на: комментарий от Led

> Ответ очевиден: используйте венду, зачем вам линукс?

Напрасно вы так. С AC97 действительно бывают проблемы с alsa-драйвером, приводящие к явным искажениям звука (не из области аудиофильских придирок). Я выше уже описал случай.

Fice ★★
()

в версиях пульса 0.9.8 жестко сломали mplayer через alsa-emulation не идет картинка, через pulseaudio не работает перемотка. Пришлось на дебиане откатиться на alsa. К моему удивлению за 2 года пользования пульсом работа нескольких прог одновременно в альсе стала пригодной. Вообще от пульса остались исключительно плохие впечатления, так как запись в mencoder через пульсаудио так и не заработала.

farafonoff ★★
()
Ответ на: комментарий от YogSagot

>Звук у меня под линуксом реально хуже, чем под виндой. Просто хуже качество звучания при обычном, банальном проигрывании мп3шек

+ мно-о-о-го

ramon13666 ★★★
()
Ответ на: комментарий от matich

У меня на старенькой sound blaster live звук в лине по крайней мере не хуже, чем в Винде, а во многом даже лучше, ибо креативщики забили писать прямые дрова под винду

Gorthauer ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.