5

android.media.AudioRecord使い方を間違えると動かないことに気がついたsampleRateInHz

再現する

Samsung Nexus S (by Google) で pcmrecorder を使用して、その問題を簡単に再現することもできます。

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

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

そのため、ハードウェア オーディオ チップが最大 96KHz をサポートしているにもかかわらず、48Khz での録音に失敗します。

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

これはデバイス/ファームウェアのバグですか、それとも既知の制限ですか?

Android プラットフォームでは約 44100Hz (24KHz でさえありません) しか保証されないことに注意してください。

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

sampleRateInHz: ヘルツで表されるサンプルレート。44100Hz は現在、すべてのデバイスで動作することが保証されている唯一のレートですが、一部のデバイスでは 22050、16000、および 11025 などの他のレートが動作する可能性があります。

ソースコード

これらの問題を再現するためのサンプル コードは、次の場所にあります。

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

トラック

この制限を克服する方法は?

  • 他の API を使用できますか? opensl、alsa、openal ? そしてどうやって ?

  • 44100Hz以上でサンプリングできるように、ユーザー側からドライバーを再構成できますか? ( .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

4

1 に答える 1

2

nexus s でサポートされる最大サンプル レートは 44.1 kHz です。Android プラットフォームがサンプル レートを 48 以上に設定するよう要求すると、オーディオ ハードウェアがエラーをスローします。あなたの質問に答えるために、サンプル レートの制限は、プログラムを実行している特定のハードウェアによって決まります。nexus s でコードを試してみたところ、あなたと同じ結果が得られましたが、古い mytouch 3g で試してみると、最大サンプルレートはおそらく 22.05 kHz になります。基本的に、オーディオ構成を初期化するときに、サポートされているサンプル レートの範囲を確認する必要があります。

于 2012-01-08T04:40:55.510 に答える