首页 > 解决方案 > 设置时 AVCapturedevice 返回 nil

问题描述

我正在尝试通过以下方式设置 2 个 AVCapturedevices:特别是 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)
    }
}

基本上,当我尝试使用设备currentCamera设置 AVCapturedeviceInput 时,我收到一个错误,因为 currentCamera 为零。我不明白为什么它是 nil 以及我能做些什么来解决这个问题。

我将 Xcode 11 与 Swift 4 一起使用。

标签: iosswiftavfoundationavcapturedevice

解决方案


推荐阅读