我正在使用 AudioQueueServices 记录连续的数据流。据我了解,只有当缓冲区充满数据时才会调用回调。在实践中,第一个回调有一个完整的缓冲区,第二个回调是 3/4 满,第三个回调是满的,第四个是 3/4 满,依此类推。这些缓冲区是 8000 个数据包(记录 8khz 音频) - 所以我应该每次都将 1s 的音频返回给回调。我已经确认我的音频队列缓冲区大小是正确的(并且在某种程度上被行为所证实)。我究竟做错了什么?我应该在 AudioQueueNewInput 中使用不同的 RunLoop 做某事吗?我试过了,但这似乎没有什么不同......
顺便说一句,如果我在调试器中运行,每个回调都充满了 8000 个样本——这让我觉得这是一个线程/计时的事情。