Как установить частоту дискретизации звука выше 44,1 кГц на платформе Linux / Android? - PullRequest
5 голосов
/ 11 августа 2011

Я заметил, что android.media.AudioRecord не работает при неправильном использовании sampleRateInHz

Воспроизведите

Вы также можете легко воспроизвести эту проблему использование pcmrecorder на Samsung Nexus S (от Google):

https://market.android.com/details?id=com.kohei.android.pcmrecorder

http://ko -yasui.com / дом / pcmrecorder /

То есть запись не выполняется на частоте 48 кГц, в то время как аппаратный аудиочип поддерживает частоту до 96 кГц:

http://www.wolfsonmicro.com/products/audio_hubs/WM8994/

Это ошибка устройства / прошивки или известное ограничение?

Обратите внимание, что платформа Android обеспечивает частоту около 44100 Гц (даже не 24 КГц)

http://developer.android.com/reference/android/media/AudioRecord.html

sampleRateInHz: частота дискретизации, выраженная в герцах. 44100 Гц в настоящее время является единственной скоростью это гарантированно работает на всех устройствах, но другие скорости, такие как 22050, 16000 и 11025, могут работать на некоторых устройствах.

ИСТОЧНИК КОД

Пример кода для воспроизведения этих проблем можно найти по адресу:

https://github.com/rzr/rzr-android-test/blob/api-android-media/src/fr/online/rzr/test/

ТРЕКИ

Как преодолеть это ограничение?

  • Можно ли использовать какой-либо другой API? opensl, alsa, openal? и как?

  • Может ли драйвер Alsa быть перенастроен со стороны пользователя быть в состоянии сэмплировать выше 44100 Гц? (.asoundrc)

  • Можно ли сделать такую ​​вещь без перепрошивки / рута / перезагрузки устройства

  • еще как обойти это? Эффективное повышение частоты дискретизации (интерполяция) с использованием собственного кода?

MORE

http://www.anddev.org/multimedia-problems-f28/how-to-set-audio-sampling-rate-higher-than-44-1hz-nexuss-t54722.html

http://en.androidwiki.com/wiki/Nexus_S

1 Ответ

2 голосов
/ 08 января 2012

Максимальная частота дискретизации, поддерживаемая для nexus s, составляет 44,1 кГц, звуковое оборудование выдает ошибку, когда платформа Android запрашивает установку частоты дискретизации 48 и выше. Чтобы ответить на ваш вопрос, ограничение частоты дискретизации определяется конкретным оборудованием, на котором работает программа. Я попробовал ваш код на своих nexus s и получил тот же результат, что и вы, но если бы я попробовал его на моем старом mytouch 3g, максимальная частота дискретизации, вероятно, составила бы 22,05 кГц. В основном вам нужно проверить, какой диапазон частот дискретизации поддерживается при инициализации конфигурации аудио.

...