1

私はこれを理解しようとして一晩中起きていました。私のコードは、Apple の例hereと基本的に同じです。ただし、デバイスはキューに配置された最初のバッファーのみを再生します (アプリの起動時に最初のバッファーの内容が聞こえます)。その後、デバイスからまったく音が出なくなります。AQS が関数を起動し続けているため、再生はまだ実行されていAudioQueueOutputCallbackます。さらに、AQS を呼び出すたびに 0 が返されるため、何も失敗しません。

AudioQueueEnqueueBufferこれで、 WITHIN コールバック関数から呼び出す限り、後続のバッファーを再生できます。AudioFileStream_PacketsProcこれは機能しません。データがソケットから にシネマとしてコールバック内からバッファを埋めてキューに入れることしかできないからAudioFileStreamParseBytesです。

他の誰かがこの問題を抱えていますか?私にはAQSのバグのようです...

ありがとう、アンドリュー

4

1 に答える 1

0

他の誰かがこの問題を抱えている場合に備えて、それを考え出しました...

AQ が常に時間の経過とともに進んでいるとは知りませんでした。UDP データ ストリームからのオーディオ データを使用していたため、パケットの損失により、AQ に徐々に遅れをとっていました。

「今すぐ」バッファを再生するように AQ に指示する方法を理解できませんでした。私の回避策は、ドロップされたパケットを検出したときに AQ をリセットすることです。これは理想的ではありませんが、今のところ機能します。

アンドリュー

于 2010-02-08T17:49:34.903 に答える