我正在尝试使用AudioQueue获取原始PCM音频数据,但是当程序运行时,它将首先调用四个回调,间隔为0.001s(似乎同时发生),然后0.5秒它将反复调用接下来的四个回调。有没有人遇到过这种情况?
注意:我参考了一个例子(SpeakHere);
我将缓冲区大小设置为2048字节; 这是我的计划的一部分:
_recordFormat.mSampleRate = 8000;
_recordFormat.mChannelsPerFrame = 1;
_recordFormat.mFormatID = kAudioFormatLinearPCM;
if (inFormatID == kAudioFormatLinearPCM){
_recordFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
_recordFormat.mBitsPerChannel = 16;
_recordFormat.mBytesPerPacket = _recordFormat.mBytesPerFrame = (_recordFormat.mBitsPerChannel / 8) * _recordFormat.mChannelsPerFrame;
_recordFormat.mFramesPerPacket = 1;
}
当我运行APP时,打印显示如下:(记下时间)
2015-07-20 16:45:53.235 HelloWorld [4115:239431] bufferByteSize是:2048
2015-07-20 16:45:53.291 HelloWorld [4115:239431]我们一定会开始录制
2015-07-20 16:45:53.802 HelloWorld [4115:239511]我们正在回调
2015-07-20 16:45:53.803 HelloWorld [4115:239511]我们正在回调
2015-07-20 16:45:53.803 HelloWorld [4115:239511]我们正在回调
2015-07-20 16:45:53.803 HelloWorld [4115:239511]我们正在回调
2015-07-20 16:45:54.313 HelloWorld [4115:239511]我们正在回调
2015-07-20 16:45:54.313 HelloWorld [4115:239511]我们正在回调
2015-07-20 16:45:54.314 HelloWorld [4115:239511]我们正在回调
2015-07-20 16:45:54.314 HelloWorld [4115:239511]我们正在回调
2015-07-20 16:45:54.824 HelloWorld [4115:239511]我们正在回调