Я использую AVCaptureSession для захвата видео.
Я хочу зажечь факел в течение всего сеанса, но как только сеанс начнется, индикатор автоматически выключится.
ТамЗдесь много постов, показывающих, как включить факел.Это работает, если сеанс захвата не запущен .
вот способ, которым я начинаю сеанс
guard let camera = AVCaptureDevice.default(for: .video) else { return }
self.captureSession.beginConfiguration()
let deviceInput = try AVCaptureDeviceInput(device: camera)
self.captureSession.addInput(deviceInput)
let videoOutput = AVCaptureVideoDataOutput()
videoOutput.setSampleBufferDelegate(self, queue: DispatchQueue(label: "com.axelife.axcapturer.samplebufferdelegate"))
self.captureSession.addOutput(videoOutput)
try camera.setLight(on: true)
self.captureSession.commitConfiguration()
DispatchQueue(label: "capturesession").async {
self.captureSession.startRunning()
}
И мой код для включения света
extension AVCaptureDevice {
func setLight(on: Bool) throws {
try self.lockForConfiguration()
if on {
try self.setTorchModeOn(level: 1)
}
else {
self.torchMode = .off
}
self.unlockForConfiguration()
}
}
С этим кодом свет включается в течение <0,5 секунд и автоматически выключается. </p>