我整晚都在想办法解决这个问题。我的代码与此处的 Apple 示例基本相同。但是,设备只播放队列中的第一个缓冲区(我在应用程序启动时听到第一个缓冲区的内容)。之后,设备根本不会发出声音。尽管 AQS 继续触发我的功能,但播放仍在运行AudioQueueOutputCallback
。此外,对 AQS 的每次调用都返回 0,因此没有失败。
现在,只要我AudioQueueEnqueueBuffer
从回调函数中调用,我就可以播放后续缓冲区。这不起作用,因为我只能从我的AudioFileStream_PacketsProc
回调中填充缓冲区并将其排入队列,因为数据来自套接字并进入AudioFileStreamParseBytes
.
其他人有这个问题吗?对我来说,这似乎是 AQS 中的一个错误......
谢谢,安德鲁