录制音频时,AudioQueueServices回调意外的行为

时间:2010-03-26 04:23:46

标签: objective-c core-audio audioqueueservices

我正在使用AudioQueueServices录制连续的数据流。据我所知,只有在缓冲区填充数据时才会调用回调。实际上,第一个回调有一个完整的缓冲区,第二个回调是3/4满,第三个回调是满的,第四个回调是3/4满,依此类推。这些缓冲区是8000个数据包(记录8khz音频) - 所以每次我应该回收1s音频到回调。我已经确认我的音频队列缓冲区大小是正确的(并且在某种程度上已经被行为确认)。我究竟做错了什么?我应该使用不同的RunLoop在AudioQueueNewInput中做些什么吗?我试过但这似乎没有什么区别......

顺便说一句,如果我在调试器中运行,每个回调 已满8000个样本 - 让我觉得这是一个线程/计时的事情。

1 个答案:

答案 0 :(得分:0)

显然,通过与他人讨论 - 以及缺乏回应,这种行为是设计的(或破坏但不太可能被修复),即使记录不当。解决方法是在必要时在回调中适当地缓冲样本,而不是期望缓冲区已满。如果您只是将数据写入文件,这根本不是问题,但如果您希望在回调中操作一致大小的音频数据块,则必须自己确保这种一致性。