iPhone上的音频队列服务仅播放第一个排队缓冲区?

iPhone上的音频队列服务仅播放第一个排队缓冲区?,iphone,audioqueueservices,Iphone,Audioqueueservices,我整晚都在想这个问题。我的代码与苹果的示例基本相同。但是,设备只播放队列中的第一个缓冲区(当应用程序启动时,我听到第一个缓冲区的内容)。之后,设备将不会发出任何声音。尽管AQS继续启动myAudioQueueOutputCallback函数,播放仍在运行。此外,对AQS的每个调用都返回0,因此没有失败 现在,只要我在回调函数中调用audioqueuenqueuebuffer,我就可以让后续的缓冲区播放。这不起作用,因为我只能将AudioFileStream\u PacketsProc回调中的缓冲

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

现在,只要我在回调函数中调用
audioqueuenqueuebuffer
,我就可以让后续的缓冲区播放。这不起作用,因为我只能将
AudioFileStream\u PacketsProc
回调中的缓冲区作为数据电影从套接字填充并排入
AudioFileStreamParseBytes

还有其他人有这个问题吗?对我来说好像是AQS中的一只虫子

谢谢,
安德鲁想出了办法,以防其他人有这个问题

我没有意识到AQ总是随着时间向前移动。因为我使用的是UDP数据流中的音频数据,所以由于数据包丢失,我会慢慢落后于AQ

我还不知道如何告诉AQ“现在”播放缓冲区。我的解决方法是在检测到丢弃的数据包时,只重置AQ。这并不理想,但目前仍然有效


安德鲁

我也有类似的问题,你能提供一些更深入的见解吗。