我正在开发适用于 IOS (13) 的相机应用程序。为此,我将 AVCaptureSession 与 AVCaptureVideoPreviewLayer 结合使用。到目前为止一切正常。
现在我想让用户从给定的典型快门速度值数组(以 1/3 曝光停止)中选择和设置自定义快门速度(曝光持续时间)作为 [Int32]:
let shutterSpeedValues: [Int32] = [1, 2, 3, 4, 5, 6, 8, 10, 13, 15, 20, 25, 30, 40, 50, 60, 80, 100, 125, 160, 200, 250, 320, 400, 500, 640, 800, 1000, 1250, 1600, 2000, 2500, 3200, 4000, 5000, 6400, 8000, 10000, 12800, 16000, 20000, 2400]
Run Code Online (Sandbox Code Playgroud)
我设置了所需的曝光 - 据我所知 - 唯一可能的方法是使用以下功能:
captureDevice?.setExposureModeCustom(duration: CMTimeMake(value: 1, timescale: shutterSpeedValues[index]), iso: AVCaptureDevice.currentISO, completionHandler: nil)
Run Code Online (Sandbox Code Playgroud)
检查 AVCaptureDevice 的 ExposureDuration 值表明,这为较慢的快门速度(高达 1/200 秒)提供了完全准确的结果。选择的曝光持续时间越快,差异越大。例如:
1/250th …Run Code Online (Sandbox Code Playgroud)