1

AudioQueueServices を使用してデータの連続ストリームを記録しています。バッファがデータでいっぱいになったときにのみコールバックが呼び出されることを理解しています。実際には、最初のコールバックはバッファがいっぱい、2 番目のコールバックは 3/4 いっぱい、3 番目のコールバックはいっぱい、4 番目は 3/4 いっぱい、というように続きます。これらのバッファは 8000 パケット (8khz オーディオを録音) であるため、毎回 1 秒のオーディオをコールバックに戻す必要があります。Audio Queue のバッファ サイズが正しいことを確認しました (動作によってある程度確認されています)。私は何を間違っていますか?別の RunLoop を使用して AudioQueueNewInput で何かを行う必要がありますか? 試してみましたが、これは違いを生むようには見えませんでした...

ちなみに、デバッガーで実行すると、各コールバック8000 個のサンプルでいっぱいです。これはスレッド化/タイミングの問題だと思います。

4

1 に答える 1

0

どうやら、他の人と議論したり、応答がないことから、不適切に文書化されていたとしても、この動作は設計どおり (または壊れているが修正される可能性は低い) です。回避策は、必要に応じてコールバックでサンプルを適切にバッファリングし、バッファがいっぱいになることを想定しないことです。データをファイルに書き込むだけであれば、これはまったく問題になりませんが、コールバックで一貫したサイズのオーディオ データ ブロックを操作する場合は、この一貫性を自分で確認する必要があります。

于 2010-03-31T13:56:26.760 に答える