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

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

ВОСПРОИЗВЕДЕНИЕ

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

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

http://ko-yasui.com/home/pcmrecorder/

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

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

Является ли это ошибкой устройства/прошивки или известным ограничением?

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

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

sampleRateInHz: частота дискретизации, выраженная в герцах. 44 100 Гц в настоящее время является единственной частотой, которая гарантированно работает на всех устройствах, но другие частоты, такие как 22 050, 16 000 и 11 025, могут работать на некоторых устройствах.

ИСХОДНЫЙ КОД

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

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

ТРЕК

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

  • можно ли использовать любой другой API? опенсл, альса, опенал? и как ?

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

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

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

БОЛЕЕ

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


person RzR    schedule 11.08.2011    source источник


Ответы (1)


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

person Anthony    schedule 08.01.2012
comment
спасибо за комментарий, я чувствовал себя одиноким ... Я думаю, мне придется покопаться в исходниках ОС и найти, где это ограничение жестко закодировано, потому что аппаратное обеспечение имеет более высокие возможности ... Что касается mytouch 3, это не соответствует спецификациям. , где-то сообщается об ошибке? - person RzR; 11.01.2012