提高captureStillImageAsynchronouslyFromConnection的速度

时间:2017-05-09 02:22:32

标签: ios objective-c avfoundation

有什么方法可以提高captureStillImageAsynchronouslyFromConnection的速度吗?

我试图只关注输出的帧,如:captureOutput:didOutputSampleBuffer:fromConnection:,但这并没有真正解决问题。此外,我无法使用上述captureAsync方法从该委派方法获得相同的解决方案。

所以我的问题是,有什么办法可以提高captureAsync的回复速度吗?现在我在iPhone 7上平均每个约0.5秒。

也许禁用HDR等?如果有人有任何意见,我会永远感激。

1 个答案:

答案 0 :(得分:1)

您可能已经知道,从iOS 10中不推荐使用captureStillImageAsynchronouslyFromConnection:completionHandler:

根据苹果文档

  

在iOS 10.0中不推荐使用AVCaptureStillImageOutput类   不支持更新的相机捕捉功能,如RAW图像输出,   实时照片或宽色域。在iOS 10.0及更高版本中,使用   而是AVCapturePhotoOutput类。 (AVCaptureStillImageOutput   在macOS 10.12中仍然支持class。)

由于您定位的是iPhone 7,我建议您使用AVCapturePhotoOutput及其代理人AVCapturePhotoCaptureDelegate

有关详细信息,请查看我之前的SO answer

要提高速度,AFAIK唯一的方法是使用captureOutput:didOutputSampleBuffer:fromConnection:

  • 它为您提供Capture Device处理的帧。
  • 为确保获得高质量的图片,您需要添加正确的AVCapturePhotoSettings并获得高质量的图像数据。

根据我的处理速度测试结果,此方法可以为iPhone 6处理超过20帧/秒,在iPhone 7和7 plus上处理超过每秒50帧(注意它可能不是我的照片设置和图像的确切结果处理可能与您的处理不同)