在AVCaptureDevice上切换Flash需要停止并启动AVCaptureSEssion

在iOS 7中,当使用以下命令更改AVCaptureDevice的Flash状态时:

 if ([self.avCaptureDevice isFlashModeSupported:self.avCaptureFlashMode]) { NSError *error = nil; [self.avCaptureDevice lockForConfiguration:&error]; if (!error) [self.avCaptureDevice setFlashMode:self.avCaptureFlashMode]; [self.avCaptureDevice unlockForConfiguration]; } 

设备不会使用闪光灯,除非AVCaptureSessions停止并启动:

 [self.avCaptureSession stopRunning]; [self.avCaptureSession startRunning]; 

这会使相机短暂闪烁黑色。 是否可以切换闪光灯而不停止/开始会议?

我在iOS7中有一个类似的闪光相关的问题,如果会议有多个输出(仍然和videodata)和闪光灯被使用,仍然捕获将失败。 在https://devforums.apple.com/message/894764 (在调用captureStillImageAsynchronouslyFromConnection:completion之前除去第二个输出captureStillImageAsynchronouslyFromConnection:completion )find解决方法。 显然这也会暂停video,但是如果你有一个快门animation,它可能会更合适。