linux — микширование аудио с плагином dmix от alsa в Stack Overflow

Я пытаюсь воспроизвести два файла WAV одновременно, используя Alsa. Обратите внимание, что файлы WAV имеют другую частоту дискретизации. Это возможно, и аудиопотоки микшируются и отправляются на аудиочип. (Я разрабатываю на встроенном устройстве Linux.) Но один поток проигрывается в пару раз быстрее, чем обычно. Так что я думаю, что есть проблема с пересчетом.

У меня есть устройство по умолчанию с включенным плагином dmix в /etc/asound.conf и я настроил частоту дискретизации 44100 Гц. Но, насколько я понимаю, ALSA повторно производит внутреннюю выборку всех потоков до 48 кГц и смешивает их, прежде чем снова понижать частоту до желаемой для меня скорости вывода, в моем случае 44,1 кГц.

Это правильно?

При использовании alsa-lib для воспроизведения аудиофайлов, нужно ли устанавливать все параметры для этого конкретного файла wav?

Например: 8000 Гц моно 16 бит

  • установите snd_pcm_hw_params_set_rate () в 8000hz
  • snd_pcm_hw_params_set_format до 16 бит LE / BE / подписанный / неподписанный
  • snd_pcm_hw_params_set_channels для моно

Меняет ли это аппаратные настройки устройства или только этот конкретный аудиопоток?

Любое разъяснение будет оценено.

РЕДАКТИРОВАТЬ:

Я мог неправильно истолковать следующее: [ALSA]

Когда включено микширование программного обеспечения, ALSA вынужден повторно сэмплировать все на одну частоту (по умолчанию 48000, если поддерживается). dmix использует плохой алгоритм пересэмплирования, который производит заметную потерю качества звука.

Итак, чтобы быть ясным, если я изменю скорость в asound.conf устройства dmix на 44100, все должно быть автоматически пересчитано до 44100 и смешано?

Таким образом, причина того, что один из двух моих смешанных аудиофайлов имеет неправильную скорость, вероятно, вызвана неправильными настройками потока с использованием alsa-lib?

Потому что, если я проигрываю один WAV-файл за раз, оба потока кажутся правильными.
Только когда проигрывается первый, и в то же время я смешиваю другой в потоке, скорость первого wav-файла изменяется. Обратите внимание, что настройки hw в это время одинаковы. Почему установка параметров hw (и воспроизведение) stream2 что-то меняет в stream1?

1

Решение

ALSA не имеет фиксированной частотой дискретизации 48 кГц.

dmix Устройство использует фиксированную частоту дискретизации и формат, но все устройства, использующие его, обычно используют plug Плагин для включения автоматических преобразований.

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

Разные потоки могут использовать разные параметры.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]