在AVFoundation中,AVCapturePhotoSettings类使开发人员能够根据自己的需要配置照片捕获。
在AVCapturePhotoOutput内部,开发人员可以选择调用setPreparedPhotoSettingsArray(_:completionHandler:)方法,该方法将预先设置照片输出的捕获设置。这样做的目的是(从文档中):“防止照片捕获请求由于懒惰的资源分配而执行缓慢。”
设置捕获设置的另一种方法是在捕获时通过AVCapturePhotoOutput中的capturePhoto(with:delegate:)方法设置AVCapturePhotoSettings。
我想使用setPreparedPhotoSettingsArray(_:completionHandler:)预先设置某些捕获设置。这些设置是我知道我一定会使用的配置。
我也有一些可以切换的捕获设置,因此,我不能保证我会使用某些配置。我想在捕获时使用capturePhoto(with:delegate:)设置这些设置。我想知道我如何做到这一点。
通读苹果文档,我的解释是调用capturePhoto(with:delegate:)将覆盖我之前用setPreparedPhotoSettingsArray(_:completionHandler:)设置的preparedPhotoSettingsArray。我想将其他规范/设置附加到现有的preparedPhotoSettingsArray即席,而不是覆盖它们。
发布于 2020-03-28 15:57:02
据我所知,setPreparedPhotoSettingsArray实际上并不是在设置下一次捕获时要使用的设置,而是向系统提示您(可能)要使用哪些设置,以便它可以预先准备资源并加快实际捕获的速度。
这意味着您始终为当前捕获配置AVCapturePhotoSettings,而不管您之前使用setPreparedPhotoSettingsArray告诉系统什么。如果当前设置与您准备的设置不同,系统可能会花费更长的时间进行此捕获,因为它需要首先分配资源。
我想最好的做法是在用户更改界面中的捕获设置时立即调用setPreparedPhotoSettingsArray,假设他/她在更改设置和实际捕获之间需要一段时间,以便系统可以在此期间进行准备。
https://stackoverflow.com/questions/60874178
复制相似问题