2009-12-28 68 views
1

我整晚都在努力想办法解决这个问题。我的代码基本上与Apple的示例here相同。但是,该设备仅播放放置在队列中的FIRST缓冲区(我听到应用程序启动时第一个缓冲区的内容)。之后,设备根本没有声音。由于AQS继续激活我的AudioQueueOutputCallback功能,播放仍在继续。此外,每次对AQS的呼叫返回0,因此没有任何失败。iPhone上的音频队列服务仅播放第一个入队缓冲区?

现在,只要我从WITHIN我的回调函数调用AudioQueueEnqueueBuffer,我就可以获得随后的缓冲区。这不会起作用,因为我只能填充队列中的缓冲区,并将其从我的AudioFileStream_PacketsProc回调中排除,因为数据线从套接字到​​。

任何人都有这个问题?好像在AQS给我一个bug ......

感谢, 安德鲁

回答

0

想通了的情况下,任何人有这个问题...

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

我一直无法弄清楚如何告诉AQ播放缓冲区“现在正确”。我的解决方法是只在检测到丢包时重置AQ。这并不理想,但现在起作用。

Andrew

+2

我也有类似的问题,请您提供一些更多的见解。 – Amitg2k12 2011-06-02 13:43:10