Я пытаюсь воспроизвести два файла WAV одновременно, используя Alsa. Обратите внимание, что файлы WAV имеют другую частоту дискретизации. Это возможно, и аудиопотоки микшируются и отправляются на аудиочип. (Я разрабатываю на встроенном устройстве Linux.) Но один поток проигрывается в пару раз быстрее, чем обычно. Так что я думаю, что есть проблема с пересчетом.
У меня есть устройство по умолчанию с включенным плагином dmix в /etc/asound.conf и я настроил частоту дискретизации 44100 Гц. Но, насколько я понимаю, ALSA повторно производит внутреннюю выборку всех потоков до 48 кГц и смешивает их, прежде чем снова понижать частоту до желаемой для меня скорости вывода, в моем случае 44,1 кГц.
Это правильно?
При использовании alsa-lib для воспроизведения аудиофайлов, нужно ли устанавливать все параметры для этого конкретного файла wav?
Например: 8000 Гц моно 16 бит
Меняет ли это аппаратные настройки устройства или только этот конкретный аудиопоток?
Любое разъяснение будет оценено.
РЕДАКТИРОВАТЬ:
Я мог неправильно истолковать следующее: [ALSA]
Когда включено микширование программного обеспечения, ALSA вынужден повторно сэмплировать все на одну частоту (по умолчанию 48000, если поддерживается). dmix использует плохой алгоритм пересэмплирования, который производит заметную потерю качества звука.
Итак, чтобы быть ясным, если я изменю скорость в asound.conf устройства dmix на 44100, все должно быть автоматически пересчитано до 44100 и смешано?
Таким образом, причина того, что один из двух моих смешанных аудиофайлов имеет неправильную скорость, вероятно, вызвана неправильными настройками потока с использованием alsa-lib?
Потому что, если я проигрываю один WAV-файл за раз, оба потока кажутся правильными.
Только когда проигрывается первый, и в то же время я смешиваю другой в потоке, скорость первого wav-файла изменяется. Обратите внимание, что настройки hw в это время одинаковы. Почему установка параметров hw (и воспроизведение) stream2 что-то меняет в stream1?
ALSA не имеет фиксированной частотой дискретизации 48 кГц.
dmix
Устройство использует фиксированную частоту дискретизации и формат, но все устройства, использующие его, обычно используют plug
Плагин для включения автоматических преобразований.
При использовании alsa-lib вы должны установить все важные для вас параметры; для любых параметров, явно не установленных, alsa-lib выбирает несколько случайное значение.
Разные потоки могут использовать разные параметры.
Других решений пока нет …