この警告メッセージを修正する方法を知っている人はいますか?
07-14 10:38:55.411 V/tracker-audiotest(22426):録音スレッド:: run():audioRecordの録音を開始します。 07-14 10:45:51.490 "W/AudioTrack(607):サンプルレートの不一致(44100対48000)のため、クライアントによってAUDIO_OUTPUT_FLAG_FASTが拒否されました"
Android 4.4でオーディオレイテンシをテストすると、この警告メッセージが表示された後、突然遅延が増加します。ただし、テスト中にサンプルレートを変更せず、初期設定は48kHz。この警告メッセージは、7分間の録音開始後に発生します。
必要に応じて、デバイスでこのプロジェクトをテストできます。プロジェクトはGitHubにあります:
AUDIO_OUTPUT_FLAG_FASTは、ハードウェアでサポートされているレートとは異なるレートを使用しているため、拒否されます。ハードウェアでサポートされているサンプリングレートを照会し、48kHzにハードコーディングするのではなく、そのレートで記録する必要があります。
Java関数インターフェイスを使用してみてください:
AudioManager myAudioMgr =(AudioManager)getSystemService(Context.AUDIO_SERVICE);
nativeSampleRate = myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);
電話機のハードウェアのデフォルトサンプルレートを取得するには、それを使用してプレーヤーを作成します。
次も使用してみてください:nativeSampleBufSize = myAudioMgr.getProperty(AudioManager.PROPERTY_OUTPUT_FRAMES_PER_BUFFER);
デフォルトのオーディオバッファサイズ(フレーム単位)を取得し、それを再生に使用します。
JNIに問題がなければ、JNIサンプルコード audio-echo を見ることができます。
でサンプルレートを変更してみてください
フレームワーク/ベース/
frameworks/av /
ハードウェア/ libhardware
場所。
デフォルトのサンプルレートは44100です。必要なサンプルレートを設定してみてください(オーディオファイルにあります)。それが動作します。
乾杯。