1

AVCaptureSessionのセッションがローカルのNSMutableArrayに実行されているときに画像をキャプチャしているときに、didReceiveMemoryWarning呼び出しを受け取ります。少しテストしたところ、ARRAYが特定のカウントに達したときに発生することがわかりました。

配列に追加するオブジェクトのタイプとしてUIImageを使用しているためだと思います。それらの画像を保存するのに最適な形式は何ですか?

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {

CVPixelBufferRef pixel_buffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pixel_buffer];
CGImageRef ref = [self.context createCGImage:ciImage fromRect:ciImage.extent]; 

UIImage *image = [UIImage imageWithCGImage:ref scale:1.0 orientation:UIImageOrientationRight];

CGImageRelease(ref);

[self.capturingImageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES];
if (saveImages == YES) { //this a BOOL value that becomes YES when the user clicks the RECORDING button.
    [dImagesArray addObject:image];
}
}
4

2 に答える 2

1

なんらかのフィルタリングを行っていない限り、AVCaptureVideoPreviewLayer を使用しないのはなぜですか? パフォーマンス上の理由から、デリゲート メソッドのイメージをレンダリングするために OpenGL を使用することをお勧めしcaptureOutput:didOutputSampleBuffer:fromConnection:ます

于 2014-09-10T03:46:33.860 に答える