我使用了Apple的SpeakHere示例代码。
这是我的mRecordFormat:

mRecordFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
mRecordFormat.mChannelsPerFrame = 1;
mRecordFormat.mBitsPerChannel = 16;
mRecordFormat.mBytesPerPacket = mRecordFormat.mBytesPerFrame = (mRecordFormat.mBitsPerChannel / 8) * mRecordFormat.mChannelsPerFrame;
mRecordFormat.mFramesPerPacket = 1;
mRecordFormat.mSampleRate = 11025.0;

我正在录制7秒,我想我会收到
总共7 * 2 * 11025字节(或7 * 11025短)。
实际上,我总共收到的更多:154784个而不是154350个字节(增加434个字节)。此数字有所不同。为什么会改变?

有人可以解释一下为什么我得到的字节数超出了我的期望吗?
我是错了还是错过了什么?

顺便说一句:如果有帮助,我正在以.wav格式录制。

最佳答案

AudioQueue为您提供一定大小的音频块。选择大小以适合实现。这就解释了为什么您在停止队列时看到的东西比预期的多(或少)。

如果您想录制准确的7秒钟音频,请在收到恰好7秒钟的样本后停止队列,并丢弃所有剩余的音频。

关于ios - 录音期间音频队列接收的总字节数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29721021/

10-12 16:58