AVCaptureDevicePosition.front 不工作

AVCaptureDevicePosition.front is not working

这是我的第一个问题,如果没有解释清楚,请告诉我。

所以基本上我正在尝试使用此代码访问前置摄像头:

 captureSession = AVCaptureSession()
    captureSession?.sessionPreset = AVCaptureSessionPreset1920x1080

    let cameraDevice = AVCaptureDevice.defaultDevice(withDeviceType: AVCaptureDeviceType.builtInWideAngleCamera , mediaType: AVMediaTypeVideo, position: AVCaptureDevicePosition.front)
   print(cameraDevice!)


    let error: NSError? = nil

    do{
    let input = try AVCaptureDeviceInput(device: cameraDevice)

        print(captureSession.canAddInput(input))

        if error == nil && captureSession.canAddInput(input){
            captureSession?.addInput(input)

            stillImageOutput = AVCaptureStillImageOutput()
            if captureSession.canAddOutput(stillImageOutput){
                captureSession.addOutput(stillImageOutput)
                previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
                previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect
                previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait
                cameraView.layer.addSublayer(previewLayer!)
                stillImageOutput?.outputSettings = [AVVideoCodecKey:AVVideoCodecJPEG]

                captureSession?.startRunning()



            }

        }

使用该代码 print(captureSession.canAddInput(input)) returns false 但是当我将位置更改为后置摄像头时,一切都很顺利。我错过了什么吗?

我不确定您使用的是什么设备,但是在 iPhone 6 / 6plus 上,该预设分辨率对于前置摄像头来说太高了。

https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/Cameras/Cameras.html

根据 Apple 文档,在这些设备上,静态图像捕获的最高分辨率为 1280 x 960。尝试使用较低的预设,看看它是否适用于前置摄像头。

这可以解释为什么它在后置摄像头上工作正常,因为它支持更高分辨率。