我尝试将样本缓冲区而不是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)] ];}
答案 0 :(得分:5)
为什么不直接使用CFArray并将CMSampleBufferRef对象直接放在那里?
答案 1 :(得分:3)
您可以使用CFArray,但您应该记住,CMSampleBufferRef不会被保留,并且“captureOutput:didOutputSampleBuffer:fromConnection:”使用内存池 - 当您不释放内存时,它会停止发送新样本(这就是为什么你只能得到13个样本),你可以阅读:captureOutput:didOutputSampleBuffer:fromConnection: