LINUX.ORG.RU

Воспроизведение mp3 в разные аудиокарты

 ,


0

1

Всем привет. Есть линуксовый комп, есть несколько аудиокарт, подключенных через USB. 3 аудиокарты, 6 колонок. (по 2 колонки на один стереовыход каждой аудиокарты).

Задача такая чтобы воспроизводить различные звуки/проигрыши на разных колонках. Например на нулевой карте в левый канал отдавать звук бьющегося стекла, а на первую карту в правый канал отдавать звуки природы. С возможностью одновременного вывода различных звуков на все каналы не зависимо друг от друга (полагаю, запуск 6 экземпляров аудиоплеера).

Я смотрел в сторону mpg123. Но задавая ему параметры -0 или -1 - имеется ввиду, что он от стереодорожки отсекает правый или левый канал и воспроизводит его в моно режиме сразу на две колонки.

Может быть есть что-то еще? Сейчас смотрю глубже в сторону консольного cvlc. Параллельно задав здесь вопрос - продолжаю поиски. Гугл ничего не подсказал мне, увы.

В идеале иметь возможность нечто вроде такого:

$ ./my_player --channel=left --audio_device=1 file.mp3

Буду рад советам. Спасибо!

=============================================================

Решение которое я нашел:

$ mplayer -ao alsa:device=hw=0.0

А список всех alsa девайсов беру из команды:

$ aplay -l

где первая цифра для параметра hw это номер аудиокарты, а вторая цифра - device.номер. Пока что остановлюсь на этом.

Правда моя аудиокарта ZOOM UAC-2 совсем не хочет через ALSA запускаться. Ей нужен только PulseAudio. И даже пока я не поставлю пульсаудио, она вообще не работает даже если я ее вручную выбираю в alsa-mixer. Ну да ладно, это проф аудиокарта, она специфическая, что оказалось под рукой - на том и пробовал. Там где я собираю эту многоколоночную штуку - будут самые простейшие линукс-совместимые ЮЗБ аудиокарты.

==========================================================

Решение №2 через PulseAudio (намного удобней)

Командой:

$ pactl list cards short

смотрим все доступные аудиокарты.

Запускаем, допустим, на нулевую аудиокарту (нумерация карт с нуля) звук:

$ mplayer -ao pulse::0 file.mp3

PROFIT!:3

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

mplayer точно может, ищи опции ao и af.

Спасибо! Покопаюсь в этом направлении. В принципе мне обёртка не важна, я без проблем могу вызвать из кода с любым количеством параметров.

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

PulseAudio тебе в помощь.

Мне нужно одновременно воспроизводить разные звуки на разные карты. Чем мне поможет пульсаудио? Я знаю что у него есть консольная утилита которой можно переключать поток вывода или же после старта плеера уже потом в пульсаудио переназначить ему куда выводить. Но это не очень удобно. И я не знаю как мне идентифицировать нужный звук чтобы направить его в нужную колонку если будет запущено сразу 6 одинаковых плееров...

Ну или направь меня в нужном направлении. Спасибо

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

mplayer точно может, ищи опции ao и af. http://www.mplayerhq.hu/DOCS/HTML/en/advaudio-channels.html

Спасибо тебе, добрый человек :) Распишу для гуглящих:

удалось порешать все вот такой командой:

$ mplayer 2.mp3 -af channels=2:2:0:0:1:0

первая двойка: это количество выходных каналов (их собственно и будет 2, так как мр3 двухканальная стерео, просто я их смещу в итоге в один канал)

вторая двойка: это количество перемещений которые надо сделать (количество пар следующих цифр что куда перемещать), то есть левый роутим в левый, правый роутим в правый

ну и дальше попарно перемещения: 0:0 - левый в левый 1:0 - правый в левый

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

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