AudioQueue以8 KHz录制,而不是每20 ms调用一次Callback

时间:2018-05-09 10:52:25

标签: ios avaudiosession audioqueue

iOS 10+ iPhone:5s& 6 Xcode:9 +

我使用 aLaw 编解码器以 8 KHz 采样率录制音频,样本大小 8位。我创建了一个像这样的AudioQueue:

// create the queue
XThrowIfError(AudioQueueNewInput(
                                 &mRecordFormat,
                                 MyInputBufferHandler,
                                 this /* userData */,
                                 NULL /* run loop */,
                                 kCFRunLoopCommonModes /* run loop mode */,
                                 0 /* flags */,
                                 &mQueue), "AudioQueueNewInput failed");

MyInputBufferHandler是每次填充缓冲区(每20 ms 160字节)时调用的回调。所以我希望回调被称为每20毫秒。但是当测试它时,每隔128毫秒,MyInputBufferHandler回调在一次突发中被调用6次。虽然我希望每20毫秒调用一次回调。 我的录音配置是:

mRecordFormat.mSampleRate = 8000.0; // 8 KHz
mRecordFormat.mChannelsPerFrame = 1;
mRecordFormat.mBytesPerFrame = 1;
mRecordFormat.mBitsPerChannel = 8;
mRecordFormat.mBytesPerPacket = 1;
mRecordFormat.mFramesPerPacket = 1;

有人可以帮帮我吗?为什么MyInputBufferHandler每128毫秒而不是20毫秒调用?采样率为8 KHz,缓冲区为160字节的记录,意味着每20 ms调用一次MyInputBufferHandler,而不是每隔128 ms!

0 个答案:

没有答案