将sampleBuffer保存在数组中(AVFoundation)

时间:2011-10-06 13:27:12

标签: iphone objective-c avfoundation

我尝试将样本缓冲区而不是UIImage保存到数组中,以便稍后进行转换。这样可以加快图像捕获速度,也可能无法获得内存警告。我只是无法弄清楚如何将它保存到数组然后再次使用它来调用[self imageFromSampleBuffer:sampleBuffer]。我试过这样的东西,但是如何将数据转换回CMSampleBufferRef对象?

- (void)captureOutput:(AVCaptureOutput *)captureOutput 
    didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 
   fromConnection:(AVCaptureConnection *)connection { 
// Create a UIImage from the sample buffer data
//      UIImage *image = [self imageFromSampleBuffer:sampleBuffer];
//      [arrCaptures addObject:image];

[arrImageBuffer addObject:[NSData dataWithBytes:sampleBuffer length:sizeof(sampleBuffer)] ];}

2 个答案:

答案 0 :(得分:5)

为什么不直接使用CFArray并将CMSampleBufferRef对象直接放在那里?

答案 1 :(得分:3)

您可以使用CFArray,但您应该记住,CMSampleBufferRef不会被保留,并且“captureOutput:didOutputSampleBuffer:fromConnection:”使用内存池 - 当您不释放内存时,它会停止发送新样本(这就是为什么你只能得到13个样本),你可以阅读:captureOutput:didOutputSampleBuffer:fromConnection: