最近,我使用AudioQueue播放网络AAC数据。我的计划是,一旦接收到AAC数据,audioqueue将这个缓冲区排入队列,并立即播放。
当我启动audioQueue时,我会使用AudioQueueStart(audioQueue, NULL)尽快启动audioQueue。
然而,当我打印日志时,我注意到AudioQueueEnqueueBuffer(audioQueue, buffer, 0, NULL)立即将AAC缓冲区入队,但在将缓冲区入队后播放声音,这延迟了大约2-3秒。这意味着我在开始时接收了数据并将其排入队列,但第一个声音在2-3秒后开始。
我想知道是不是因为audioqueue服务将AAC解码为PCM本身,所以声音延迟了。如果是这样,我是否应该自己解码AAC,并使用音频单元代替?
我已经迷惑了一段时间,希望有人能给我点亮!
发布于 2018-07-31 19:38:55
我终于找到了原因。当AAC数据延迟时,我暂停audioQueue,并在数据到来时重新启动。暂停操作会导致播放延迟。
https://stackoverflow.com/questions/51539066
复制相似问题