Objective c 带有VideoDataOutput和stillImageOutput的AVCaptureSession

Objective c 带有VideoDataOutput和stillImageOutput的AVCaptureSession,objective-c,ios,video,camera,avfoundation,Objective C,Ios,Video,Camera,Avfoundation,我正在编写一个应用程序,其中我使用AVCaptureSession和AVCaptureVideoDataOutput来获取样本缓冲区,进行点检测并实时显示 用户还可以捕获图像 问题是,因为我使用的是同一个会话,所以拍摄静止图像的图像质量与拍摄视频的图像质量相同 我使用captureOutput:didOutputSampleBuffer:fromConnection:delegate方法捕获帧,使用captureStillImageAsynchronouslyFromConnection:捕获静

我正在编写一个应用程序,其中我使用AVCaptureSession和AVCaptureVideoDataOutput来获取样本缓冲区,进行点检测并实时显示

用户还可以捕获图像

问题是,因为我使用的是同一个会话,所以拍摄静止图像的图像质量与拍摄视频的图像质量相同

我使用captureOutput:didOutputSampleBuffer:fromConnection:delegate方法捕获帧,使用captureStillImageAsynchronouslyFromConnection:捕获静止图像

我想知道是否有办法在AVCaptureSessionPresetMedium中捕获帧,在捕获图像时,切换到AVCaptureSessionPresetPhoto?

您可以在会话运行时更改会话的
sessionPreset
属性

在捕获图像之前,将其更改为
AVCaptureSessionPresetPhoto
,然后在
captureSystillImageAsynchronouslyfromConnection:completionHandler:
的完成块中返回到
AVCaptureSessionPresetMedium

请注意,更改预设会在相机切换时短暂清空相机,因此可能很难立即捕获特定帧的图片,但实际上从来没有任何保证,因为
AVCaptureStillImageOutput
captureStillImageAsynchronouslyFromConnection:
在完成时完成。:)