Как дублировать аудиопоток alsa?

#c 11 #audio #embedded #embedded-linux #alsa

#c 11 #Аудио #встроенный #встроенный-linux #alsa

Вопрос:

У меня есть только одно устройство, указанное ниже (p.s. Второе — всего лишь фиктивное) —

# aplay -l

**** Список устройств ВОСПРОИЗВЕДЕНИЯ ****

карта 0: tlv320aic32x4 [tlv320aic32x4], устройство 0: tlv320aic32x4-hifi tlv320aic32x4-hifi-0 [] Вспомогательные устройства: 1/1, вспомогательное устройство # 0: вспомогательное устройство # 0

карта 0: tlv320aic32x4 [tlv320aic32x4], устройство 1: e001d000.i2s-dummy-codec-1 [] Вспомогательные устройства: 1/1, вспомогательное устройство # 0: вспомогательное устройство # 0

У меня уже есть приложение, которое использует это устройство для потоковой передачи звука (поэтому любой аудиовход, поступающий на микрофон, выводится потоком). Теперь я должен добавить другое приложение, которое также использует тот же микрофон этого аудиоустройства. Таким образом, это приводит к конфликту за аудиоустройство. Как я могу избежать этого противоречия?

Я видел другой пост в stack overflow, где говорится о модуле alsa «type multi» для воспроизведения звука на двух разных устройствах «. Но моя проблема в другом. У меня нет двух разных устройств. У меня есть только это одно устройство.

Возможно ли дублировать аудиопоток в alsa? чтобы избежать такого рода конфликтов и различные приложения могли продолжать использовать аудиоинформацию с одного аудиоустройства.

Комментарии:

1. У вас есть несколько вариантов: демон pulseaudio, демультипликатор ALSA, аудиосервер jack.

2. Спасибо, Андрий. Есть ли у самого alsa какие-либо опции. какой-нибудь snd_pcm_xxx_yyyy, чтобы сделать то же самое. Вы знаете? вместо того, чтобы использовать отдельную библиотеку, такую как одна из предложенных вами. Просто для информации, мой вариант — работать на ARM.