AVCapturedevice возвращает ноль, когда установлено - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь настроить 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.

...