1

我整晚都在想办法解决这个问题。我的代码与此处的 Apple 示例基本相同。但是,设备只播放队列中的第一个缓冲区(我在应用程序启动时听到第一个缓冲区的内容)。之后,设备根本不会发出声音。尽管 AQS 继续触发我的功能,但播放仍在运行AudioQueueOutputCallback。此外,对 AQS 的每次调用都返回 0,因此没有失败。

现在,只要我AudioQueueEnqueueBuffer从回调函数中调用,我就可以播放后续缓冲区。这不起作用,因为我只能从我的AudioFileStream_PacketsProc回调中填充缓冲区并将其排入队列,因为数据来自套接字并进入AudioFileStreamParseBytes.

其他人有这个问题吗?对我来说,这似乎是 AQS 中的一个错误......

谢谢,安德鲁

4

1 回答 1

0

想通了,以防其他人有这个问题......

我没有意识到 AQ 总是及时前进。由于我使用的是来自 UDP 数据流的音频数据,我会因为丢包而慢慢落后于 AQ。

我无法弄清楚如何告诉 AQ “立即”播放缓冲区。我的解决方法是在检测到丢包时重置 AQ。这并不理想,但目前有效。

安德鲁

于 2010-02-08T17:49:34.903 回答