我正在使用AudioQueueServices记录一个连续的数据流。我的理解是,只有在缓冲区填充数据时才会调用回调。在实践中,第一个回调有一个完整的缓冲区,第二个回调是3/4满,第三个回调是满的,第四个回调是3/4满,等等。这些缓冲区是8000包(录音8khz音频)-所以我应该得到1s的音频回拨每次。我已经确认我的音频队列缓冲区大小是正确的(并且在某种程度上被行为所证实)。我做错了什么?我应该在AudioQueueNewInput中用不同的RunLoop做些什么吗?我试过了,但这似乎没什么区别.
顺便说一句,如果我在调试器中运行,每个回调都会有8000个示例--这让我觉得这是一个线程/计时问题。
发布于 2010-03-31 13:56:26
显然,从与其他人的讨论-和缺乏反应,这种行为是按照设计(或打破,但不可能被修复),即使不正确的记录。所做的工作是在必要时在回调中适当地缓冲您的示例,而不是期望缓冲区已满。如果您只是将数据写入文件,这根本不是问题,但是如果您希望对回调中大小一致的音频数据块进行操作,那么您必须自己确保这种一致性。
https://stackoverflow.com/questions/2521132
复制相似问题