LINUX.ORG.RU

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

 ,


0

0

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

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

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

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

с стареньким АС97 проблем у альсы нет. там аппаратная регулировка и выходная частота на 48kHz, с остальным справляется dmix. это все прерогатива дистростроителя

жалобы вантузятников выбравших неподходящий дистрибутив, и одновременно немогущих прописать пару строк в .asoundrc - смешны и познавательны, в плане того, до какой степени тупости может опуститься хомо сапиенс

ладно я вот когда-то, 7 лет назад, мучался с kworld+gpio+lirc, там да, сакральное знание, а несуметь прописать настройку dmix - это финиш. таким да, только в вантуз, ежемесячно поднимать ворованое гуано из образа сделанного добрым знакомым и страдать вирусами

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

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

да, фонон я по невнимательности пропустил, каюсь. однако он - просто уровень абстракции созданый для кде. задуман был для независимости. чтобы скажем, некоторые части КДЕ, пускать под вантузом и не парится, что там внизу - pulse/alsa/oss или dsound

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

>Что мне может помочь в этой ситуации? Звуккарта - банальная AC97

lspci (и lspci -n для этой карты) в студию

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

>в версиях пульса 0.9.8 жестко сломали mplayer через alsa-emulation не идет картинка, через pulseaudio не работает перемотка.

сто мешало выводить с -ao oss
при включенной эмуляции alsa-oss?

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

>хотя сходив по ссылке http://pulseaudio.org/wiki/AlsaIssues я понимаю что работа хоть какого-то звука в linux вообще случайна

а то. мы тут все из астрала звук получаем уже много лет на разных конфах. читай первоисточники и много думай.

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

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

>+ мно-о-о-го


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

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

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

старые sb live были нормальными решениями с аппаратным микшером и ресамплером. а потом под этой маркой криэйтив начал гнать несусветное обкоцанное гуано, вроде AudigyLS. такое что в системе видится как USB-аудио, хотя пашет вполне на PCI. с таким только OSSv4 и может справится

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

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

ты вообще не в теме. абсолютно

ни о состоянии звуковой системы в линухе, ни о целях создания pulse

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

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

>старые sb live были нормальными решениями с аппаратным микшером и ресамплером. а потом под этой маркой криэйтив начал гнать несусветное обкоцанное гуано, вроде AudigyLS

Держал подобную хрень в руках, даже в комп вставлял, плевался от того, что она 5.1 не могла аппаратно выводить, а через dmix только один поток мог все 5.1 захватывать, заткнул пульсой попользовался, достали перпаментные странные баги, вернул старую добрую sb live! Да пожалуй Креатив и правда уже не торт. Кстати кто знает какие есть современные звуковухи дружащие с 5.1, Линуксом и 24 битами?

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

>воспроизводите звук через /dev/dsp и будет вам щастье

да это раньше было. sox в руки и вперёд. а сейчас там кучу ioctl нагородили. что поделаешь

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

> с стареньким АС97 проблем у альсы нет. там аппаратная регулировка и выходная частота на 48kHz, с остальным справляется dmix. это все прерогатива дистростроителя

Сталкивался с пробемой с AC'97 на VIA: искажения на высоких частотах. С виндой не сравнивал. Сначала подумал, что встроенная звуковуха настолько негодная, но закрались сомнения. Посмотрел документацию по модулю snd-via82xx, там сказано, что из-за DXS возможен шумный вывод по причине бага в BIOS. После установки для модуля параметра dxs_support (не помню в какое из значений, сейчас на этот компьютер не зайти, скорее всего 2 - disable), искажения пропали.

Fice ★★
()

а вот если у меня в вайне у игр задержки звука где-то 80-120 мс (что для меня важно), это исправимо или нет? и имеет ли это отношение к тупизму альсы?

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

Кроме этого ещё http://www.pulseaudio.org/wiki/BrokenSoundDrivers Человек взялся разгребать авгиевы конюшни и огреб по полной главным образом из-за низкого EQ. Идея Pulseaudio хорошая, но реализация пока хромает. У меня две звуковых карты, и динамическое управление потоками пульса очень выручает. Глюков со звуком не наблюдаю. Вместо того, чтобы холиварить, пишите патчи.

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

>Pulseaudio -- замена джеку? Вот уж не думал. Нет, ну правда.

Для тех, кому 20 мс не критичны - да, да и еще раз да. Пульсаудио именно для того и создавался.

>Теперь я понял. Все, сказанное тобой в этом треде -- ложь.

Фанатик дебьяна? Не, ничего не имею против стабильного и работоспособного дистра со стремлением к свободе. Но при чем тут звук и вообще мультимедиа, где патент на патенте и весь софт как раз нестабильный, не всегда свободный и, в общем, не очень работоспособный?

Это как я бы сказал - я тут в своем любимом дистре <подставить название> настроил отлично связку лайттпд->апач. Теперь задержки на отдачу страничек всего полчасика-сорок минут...

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

>а вот если у меня в вайне у игр задержки звука где-то 80-120 мс (что для меня важно), это исправимо или нет? и имеет ли это отношение к тупизму альсы?

Если напрямую альса, то это слишком много, а если пульсаудио, то рекомендую патч для поддержки пульса в вайне напрямую без альсы http://art.ified.ca/?page_id=40

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

>Для меня pulseaudio решил проблему вывода всего звука через firewire-интерфейс (приложения -> pulseaudio -> jackd+ffado).

ну а что мешало alsa -> jackd+ffado? и в параллель pulseaudio -> jackd+ffado, если где-то якобы появились приложения, работающие с пульсом и не знающие про альзу.

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

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

Ну джек же ну совсем для другого. Если пульса хватает, так и здорово же!

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

>Для того, чтобы можно было управлять потоками с приложений (перенаправлять на другие устройства, менять громкость), которые не поддерживают pulseaudio.

вот только чтобы оно хоть как-то работало, нужна такая икона и аскетизм, что не каждому дано...

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

Led, Fice, какому нормальному человеку придёт в голову заниматься обработкой звука через *bt*-гарнитуру или сеть?

В jack этих фичей скорее всего никогда не будет, т.к. они противоречат его основным принципам. Если очень надо - можно написать pulseaudio драйвер для jack.

(Или сделать pulseaudio jack-клиентом) ;)

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

> ну а что мешало alsa -> jackd+ffado? и в параллель pulseaudio -> jackd+ffado, если где-то якобы появились приложения, работающие с пульсом и не знающие про альзу.

При запуске jackd через qjackctl у меня запускается скрипт, подгружающий jack-модули для pulseaudio. В результате, приложения, которые были запущены до включения jackd и пытались выводить звук сразу становятся слышны через fw-интерфейс, как только jackd запустился. Через ALSA так не получится. Кроме того, этот вариант, начиная с какой-то версии pulseaudio, оказался максимально стабильным.

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

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

Может. Если уж очень интересно, как, настрой плагин alsa-jack (который заворачивает alsa в jackd) и запусти qjackctl и не задавай больше идиотских вопросов.

P. S. jack = pulseaudio = arts = УГ

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

>> Единственная проблема с которой я столкнулся - Jack использует разделяемую память и формат хранения данных разный для 64 бит и 32 бит.

>бла-бла-бла >http://www.linux.org.ru/view-message.jsp?msgid=3866901&lastmod=1247594913934

И точно - оказывается уже его усиленно пилят в направлении 32/64 бит совместимости. Но кажется, пока этот режим по умолчанию выключен http://trac.jackaudio.org/changeset/3462

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

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

>Ну джек же ну совсем для другого.

Естественно. С этим только воинствующие школьники спорят (злые они сейчас - каникулы заканчиваются):)

>Если пульса хватает, так и здорово же!

Хватает-нехватает... Это просто работает. Проблемы с pulsaudio? Конечно же они есть. Вот только ни одну из них вышеуказанные крикуны не озвучили.

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

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

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

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

eugene2k
()

> OSS не конвертирует, не перераспределяет или перекодирует типы дискретизации при необходимости

Правда что ли?

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

До такого извращения я не додумался. Это получается сколько уровней эмуляции??

oss->alsa->pulseaudio->alsa!

может это надо было пускать по вайном в виртуалбоксе?

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

CA0106 та еще песня. в 26 версии ядра которое я смотрел не работала запись, в итоге сижу на 24 ядре. может когда 30 упакуют в дебиан посмотрю, вдруг починили?

Пытался даже сам портировать драйвер альсы из 24 в 26. какими словами я тогда помянул линуса и стабильный апи...

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

То есть по вашему пульс разрабтчики дистрибутвов включают потому что страстно ненавидят своих пользователей?

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

> То есть по вашему пульс разрабтчики дистрибутивов включают потому что страстно ненавидят своих пользователей?

Не знаю про все дистрибутивы, но в Федору ее включили, чтобы отбетатестить на преданных пользователях. Так что скорее не ненавидят, а "страстно любят". Возможно, когда pulseaudio будет в RedHat - он будет работать.

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

> Фанатик дебьяна?

не угадал.

> Не, ничего не имею против стабильного и работоспособного дистра со стремлением к свободе.

гм.. ты же говорил, что дебиан -- отстой.

> Но при чем тут звук и вообще мультимедиа

в треде статью обсуждают, там про звук.

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

>обязательно примени языческие ритуалы

уже готовлю твою куклу.

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

>гм.. ты же говорил, что дебиан -- отстой.

Все хорошо на своем месте.

В плане мультимедиа и вообще свежего софта дебиан неапликабелен.

AVL2 ★★★★★
()

Я как-то и без ПульсАудии обхожусь, ALSA+JACK за глаза хватает. А вот с PA были неведомые проблемы и задержки. Плохая идея его по умолчанию ставить.

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

> Может. Если уж очень интересно, как, настрой плагин alsa-jack (который заворачивает alsa в jackd) и запусти qjackctl и не задавай больше идиотских вопросов.

И как вы сделаете, чтобы jackd одновременно передавал часть потоков на звуковую карту, а часть на гарнитуру (когда та включена), при том, что гарнитура может быть в любой момент отключена или подключена? Ну не для этого существует jackd!

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

> В плане мультимедиа и вообще свежего софта дебиан неапликабелен.

Свежий софт в анстейбл-ветке. Такие дела..

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

>И как вы сделаете, чтобы jackd одновременно передавал часть потоков на звуковую карту, а часть на гарнитуру (когда та включена)

Ну вообще-то не понял, в чем тут вопрос? есть источники сигнала, это выход приложения, есть приемники сигнала, это все входы, которые видит джек. Коммутируй мышкой и все...

AVL2 ★★★★★
()

Пульсоненавистникам: каким образом записать поток, например, с радио?
С pulse это так:

#!/bin/sh

if test "$1" = "-h" || test "$1" = "--help"
then
    echo "record Sound"
    echo "run $0 [param oggenc]"
    exit
fi

device=`pactl list | grep monitor | awk '{print $2}'`

date=`date +%Y%m%d-%H:%m:%S`

parec -d $device  --channels 2 --rate 48000 --format s16le | \
    oggenc --raw          -C 2     -R 48000       -B 16 \
    $@ \
    - -o $date.ogg

Paul_N
()

Хотя pulse подводит иногда. К примеру, VirtualBox не работает как следует с pulse - только напрямую в alsa.

Paul_N
()

Вместо путеводителей лучше бы перестали строить пирамиды из костылей и написал ОДИН API. Не два, не три, не друг на друге, а один.

В kubuntu 8.10 был у меня нормальный звук. Зто в 9.04 поломали. Начинаешь проигрывать какое-нить видео или mp3 и через некоторое случайное время наступает писец в виде цикличного заикания. Если напрямую через альсу - раньше. Если через пульс - позже.

Но он неумолим...

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

>Пульсоненавистникам: каким образом записать поток, например, с радио?

Раньше же писали и ничего. Даже через OSS.

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

> каким образом записать поток, например, с радио?

Примерно так:
$ arecord 123.wav
если с теми же параметрами, то:
$ arecord --channels 2 --rate 48000 --format S16_LE 123.wav

PS: parec слизан с ALSA-вого arecord :)

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

>Хватает-нехватает... Это просто работает. Проблемы с pulsaudio? Конечно же они есть. Вот только ни одну из них вышеуказанные крикуны не озвучили.

Кстати, вышеозвученная мной фигня с заикающимся звуком наблюдалась и в Fedora на последних ядрах, однако ее я починил. А вот на убунте способ лечения не прошел...

P.S. Кваклайф бы заработал со звуком...

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

> а несуметь прописать настройку dmix - это финиш. таким да, только в вантуз

Финиш, да? А можно ссылку на документацию по параметрам dmix-а? А то мне уже надоело угадывать, когда надо писать `period_time 0`, а когда `period_time -1`. Очень хочется узнать, какой же параметр что означает.

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

> Примерно так: $ arecord 123.wav

И как это поможет записать поток какого-либо приложения? Интернет радио, например? Вы предлагаете микрофон подставлять, что ли?

У alsa нет "монитора". Можно намертво прописать вывод потока в файл - неудобно, ибо нужно это время от времени. Либо нужна особая карта у которой ест поддержка ввода звука с выхода.

http://www.linux.org.ru/view-message.jsp?msgid=3257075#comment-3259579

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

> Пульсоненавистникам: каким образом записать поток, например, с радио?

$ jack_record --channels 2 --port [записываемый порт] -f [формат]

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

Естественно он будет работать когда его в RHEL всунут :)
Этож не каноникал, которая сырой продукт в ЛТС вставляет и даже в этом случае недопиливает его нормального уровня интегрированности :)

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