在stackoverflow成员用&#34回答之前;你不应该这样做。这是一个隐私侵犯行为"让我反驳为什么有合理的需要。
我有一个场景,用户可以通过左右滑动来更改相机设备。为了使这个动画看起来不像绝对的废话,我需要在制作这个动画之前抓住一个冻结帧。
我看到的唯一合理的答案是捕获AVCaptureVideoDataOutput
的缓冲区,这很好,但现在我无法让用户使用kCVPixelFormatType_420YpCbCr8BiPlanarFullRange拍摄视频/照片,这是一个噩梦,试图获取来自CGBitmapContextCreate
的CGImage请参阅How to convert a kCVPixelFormatType_420YpCbCr8BiPlanarFullRange buffer to UIImage in iOS
使用AVCaptureVideoDataOutput
代替AVCaptureStillImageOutput
时,拍摄静态照片时是否存在严重的质量问题?由于用户将同时拍摄视频和静态照片(不仅仅是定格预览静止图像)此外,还有一个人可以像我一样向我解释这些照片和#34;关于kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
/ kCVPixelFormatType_32BGRA
之间的差异,除了一个不能在旧硬件上工作之外?
答案 0 :(得分:-1)
我认为没有办法使用AVFoundation直接捕获预览图像。但是,您可以通过执行以下操作捕获预览图层:
UIGraphicsBeginImageContext(previewView.frame.size);
[previewLayer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
其中previewView.layer是 previewLayer是添加到previewView的AVCaptureVideoPreviewLayer。 “图像”从此图层渲染,可用于动画。