一、获取视频数据
- (NSData*)bufferToData:(CMSampleBufferRef)source
{ CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(source);
CVPixelBufferLockBaseAddress(imageBuffer,0);
size_tbytesPerRow =CVPixelBufferGetBytesPerRow(imageBuffer);//
size_twidth =CVPixelBufferGetWidth(imageBuffer);
size_theight =CVPixelBufferGetHeight(imageBuffer);
void*src_buff =CVPixelBufferGetBaseAddress(imageBuffer);
NSData*data = [NSDatadataWithBytes:src_bufflength:bytesPerRow * height];
CVPixelBufferUnlockBaseAddress(imageBuffer, 0);
return data;
}
二、音频数据
-(NSData*) getAudioData: (CMSampleBufferRef)sampleBuffer{
AudioBufferListaudioBufferList;
NSMutableData *videoData =[NSMutableData data];
CMBlockBufferRefblockBuffer;
CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer,NULL, &audioBufferList,sizeof(audioBufferList),NULL,NULL,0, &blockBuffer);
for(inty=0; y
AudioBufferaudioBuffer = audioBufferList.mBuffers[y];
//void* audio = audioBuffer.mData;//这里获取
NSData*data1 = [NSDatadataWithBytes: audioBuffer.mData length:audioBuffer.mDataByteSize];
[videoDataappendData:data1];
}
CFRelease(blockBuffer);
returnvideoData;
}
网友评论