Я пытаюсь настроить 2 устройства AVCapture: в частности, frontCamera и backCamera следующим образом:
override func viewDidLoad() {
super.viewDidLoad()
setCaptureSession()
setupDevice()
setUpInputOutput()
}
в viewDidLoad Я вызываю эти функции, которые соответственно делают это:
func setCaptureSession(){
captureSession.sessionPreset = AVCaptureSession.Preset.photo
}
func setupDevice(){
frontCamera = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .front)
backCamera = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back)
currentCamera = backCamera
}
Даже несмотря на то, что я правильно настроил заднюю камеру при запуске приложения, я получаю сообщение об ошибке в этой функции:
func setUpInputOutput(){
do{
let captureDeviceInput = try AVCaptureDeviceInput(device: currentCamera!)
captureSession.addInput(captureDeviceInput)
photoOutput?.setPreparedPhotoSettingsArray([AVCapturePhotoSettings(format: [AVVideoCodecKey : AVVideoCodecType.jpeg])], completionHandler: nil)
}catch{
print(error.localizedDescription)
}
}
В основном, когда я пытаюсь настроить AVCapturedeviceInput с устройством currentCamera Я получаю ошибку, потому что currentCamera равен нулю. Я не понимаю, почему это ноль и что я могу сделать, чтобы решить эту проблему.
Я использую Xcode 11 со Swift 4.