0

bufferList にアクセスしてオーディオを分析するために使用するオーディオ コールバックがあります。

この音声も録音する必要があります。まず、同じコールバックで録音を行うのが賢明でしょうか?

例えばmemcpy(void *dest, ioData->mBuffers[0].mData, int byteCount);

それとも、録音に独自のコールバックが必要ですか?

いずれにせよ、この memcpy はこれを行う正しい方法ですか?このオーディオをファイルに書き込むにはどうすればよいですか?

オーディオ入力が完了し、データをファイル ライターに渡すと、totalByteCount を void * dest のポインター演算で使用する必要がありますか?

コアオーディオレンダーコールバックでオーディオを録音する最良の方法は何ですか?

4

1 に答える 1

0

入力オーディオ ストリームと出力オーディオ ストリームの両方に対して、それぞれ 2 つの異なるコールバックを使用できると思います。通常、特定のストリームを開くときは、入力または出力である可能性があり、コールバックも指定します。コールバックでは、コールバックの期限に間に合うことができれば、すべてのオーディオ処理を行うことができます。そうしないと、オーディオ サンプルが失われる可能性があります。より良い方法は、ある種の循環バッファを使用することであり、コールバックでバッファを埋めるだけです。メインスレッドで他のすべての処理を行うことができます(記録とともに)。使用しているオーディオ フレームワークがわかりません。プロジェクトで portaudio を使用しましたが、問題なく動作しました。Portaudio は、スレッド ロック メカニズムを必要とせずにコールバック内で使用できる、ロック フリーの循環バッファも提供します。次のリンクが役立つ場合があります。

http://portaudio.com/docs/v19-doxydocs/paex__record_8c.html。

http://portaudio.com/docs/v19-doxydocs/paex_ocean_shore_8c.html _ _

于 2013-04-29T12:02:03.640 に答える