Android用のスタンドアロンWebRTC aecmモジュールの使用に成功しました。そしていくつかのヒントがあります:
1.最も重要なのは「遅延」と呼ばれるものです。その定義は次のディレクトリにあります。
..\src\modules\audio_processing\include\audio_processing.h
見積もり:
|遅延|を設定します AnalyzeReverseStream() が遠端フレームを受信してから、ProcessStream() が対応するエコーを含む近端フレームを受信するまでのミリ秒。クライアント側では、これは delay = (t_render - t_analyze) + (t_process - t_capture) として表すことができます。
どこ、
- t_analyze は、フレームが AnalyzeReverseStream() に渡される時間であり、t_render は、同じフレームの最初のサンプルがオーディオ ハードウェアによってレンダリングされる時間です。
- t_capture はフレームの最初のサンプルがオーディオ ハードウェアによってキャプチャされた時間であり、t_pull は同じフレームが
ProcessStream() に渡された時間です。
aecm モジュールをスタンドアロン モードで使用する場合は、必ずこのドキュメントに厳密に従ってください。
2.AudioRecord と AudioTrack は (最小化されたバッファー サイズのために) 時々ブロックするので、遅延を計算するときは、ブロック時間を追加することを忘れないでください。
3. aecm モジュールのコンパイル方法がわからない場合は、最初にAndroid NDKを学ぶことができます。モジュールの src パスは次のとおりです。
..\src\modules\audio_processing\aecm
ところで、このブログはネイティブ開発に大いに役立つかもしれません。そしてデバッグ。
http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/
http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-debugging/
これがあなたに役立つことを願っています。