低AVCaptureSessionPreset我几乎下面这一个同样的问题:的iOS拍摄高分辨率的照片,而使用视频输出
Switching AVCaptureSession preset when capturing a photo
然而,问题是,(个体经营)答案不帮助我一点。我想知道是否有人知道如何做到这一点。
我捕获的视频帧,所以我可以处理它们,并与他们做些事情。为此,我使用的是AVCaptureSessionPrese640x480
,因为我需要获得所需的所有帧速率,同时获得适合计算的体面帧。现在,当用户想要拍摄照片时,我希望他能够以最高分辨率拍摄照片。为此,我不赞成:
[captureSession beginConfiguration];
captureSession.sessionPreset = <some_preset>
[captureSession commitConfiguration];
我试过这个,我在某些情况下得到一个错误;但由于某种原因屏幕上仍然存在一定的滞后,我不再相信这一点。
当以非常低的分辨率(例如640x480)捕获视频输出时,是否有确定的方式从相机获取高分辨率图像?
您可能想尝试将一些工作放到单独的线程中。 commitConfiguration可能会由于设备同步而暂停线程,如果可能的话将其放入单独的线程(可能工作或不工作)。无论如何,在调用此方法后,您应该期望下一帧仍可能处于低分辨率状态,因此您需要检查每帧的样本。一旦你收到一个高分辨率的样本,你应该再次使用一个单独的线程来生成图像或你正在做的任何事情,也可能锁定“拍照”按钮/触发器。 –
感谢您的建议,但这将是可怕的应用程序。配置也重新聚焦,所以我永远不会让用户专注和点击。我想知道是否有一种标准的做事方式,因为很多人可能都需要这样做。 – p0lAris
我相信在这一点上你已经走到了尽头(尽管我可能是错的)。也许如果可能的话,您可以简单地捕获高分辨率采样,然后在将它们提供给视频输入之前自行降采样。为了获得一些性能,你可以尝试把它放到GPU上,但不能保证它会获得任何性能。我希望你找到一个好的解决方案,并在这里发布。 –