需求
把AVAudioPCMBuffer转换层CMSampleBufferRef,同理也可以从AudioBufferList加上AudioStreamBasicDescription转换成CMSampleBufferRef
实现代码
实现代码如下:
1 |
|
内存释放
生成的CMSampleBufferRef引用计数为1,记得释放,类似:
1 |
|
AudioBufferList
关于AudioBufferList,需要说的是PCM中的双通道,对应到AudioBufferList就是mNumberBuffers
假定存在
AudioBufferList *ioData = …
AudioStreamBasicDescription asbd = …
如果ioData->mNumberBuffers为2,那么有以下几个推导:
- 1、ioData->mBuffers[0]有数据外,ioData->mBuffers[1]也有数据;
- 2、跟AudioBufferList对应的asbd->mChannelsPerFrame == 2
- 3、还要补充一点的是,asbd.mChannelsPerFrame == 2的时候,asbd.mBytesPerFrame并不会包含2个channel的数据
1 |
|
参考文档
CMSampleBuffer
iOS 音频采集 AudioBufferList转CMSampleBufferRef
CMSampleBufferSetDataBufferFromAudioBufferList returning -12731
osstatus