我在我的应用程序中使用音频队列服务。分配缓冲区时,我将缓冲区大小设置为 30000 个样本:
AudioQueueAllocateBuffer(mQueue, 30000, &mBuffers[i]);
但是回调的后续调用是使用以下inNumberPacketDescriptions 进行的:
30000
30000
30000
26928
30000
30000
它们并不总是等于 30000。为什么?
记录格式配置(使用CAStreamBasicDescription):
mRecordFormat.mSampleRate = kSampleRate;
mRecordFormat.mChannelsPerFrame = 1;
mRecordFormat.mFormatID = kAudioFormatLinearPCM;
mRecordFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
mRecordFormat.mBitsPerChannel = 16;
mRecordFormat.mBytesPerPacket = mRecordFormat.mBytesPerFrame = (mRecordFormat.mBitsPerChannel / 8) * mRecordFormat.mChannelsPerFrame;
mRecordFormat.mFramesPerPacket = 1;
使用了3 个缓冲区。