AVCaptureDevicePosition.front не работает

Это мой первый вопрос, поэтому, если он не объяснен, пожалуйста, дайте мне знать.

Поэтому я пытаюсь получить доступ к фронтальной камере с помощью этого кода:

 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)) возвращается false но когда я меняю положение на заднюю камеру, все работает как шарм. Я что-то пропустил?

1 ответ

Решение

Я не уверен, какое устройство вы используете, но на iPhone 6 / 6plus это предустановленное разрешение слишком высокое для фронтальной камеры.

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

Согласно документации Apple, на этих устройствах самое высокое разрешение захвата неподвижных изображений составляет 1280 x 960. Попробуйте использовать более низкие предустановки и посмотрите, работает ли оно на передней камере.

Это может объяснить, почему он хорошо работает на задней камере, потому что это поддерживает более высокое разрешение.

Другие вопросы по тегам