快速如何打开自定义相机的闪光灯模式



当我构建自定义相机时,我通过以下代码设置当前设备的闪光模式:

try currentDevice.lockForConfiguration()
currentDevice.flashMode = .on
currentDevice.unlockForConfiguration()

我的捕获图片功能是默认的captureOutput功能(由AVCaptureVideoDataOutputSampleBufferDelegate覆盖),效果很好,但只有闪光灯模式不起作用。

func captureOutput(
_ output: AVCaptureOutput,
didOutput sampleBuffer: CMSampleBuffer,
from connection: AVCaptureConnection
) {
if !takePicture {
return
}
takePicture = false

guard let cvBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
return
}
let ciImage = CIImage(cvImageBuffer: cvBuffer)
let uiImage = UIImage(ciImage: ciImage)
savePicture(image: uiImage)
}

首先var flashMode: AVCaptureDevice.FlashMode { get set }已被弃用(Apple docs)

也许你的意思是这个flashMode它设置在AVCapturePhotoSettings上并取代了已弃用的那个。

但是,如果您需要打开LED背光,则应在AVCaptureDevice对象上使用.torchMode

为此,您需要确保currentDevice有可用的割炬。

guard currentDevice.isTorchAvailable else { ...fallbac... }

然后,您需要锁定设备以进行配置。

try currentDevice.lockForConfiguration()

并设置所需的手电筒模式。

currentDevice.torchMode = .on // or .off

请记住在完成配置后解锁设备

currentDevice.unlockForConfiguration()

如果您想以一定程度的强度设置手电筒模式,您可以使用此方法将其打开(而不是currentDevice.torchMode = .on)

try currentDevice.setTorchModeOn(level: 0.3)

最新更新