Не работает захват глубины для задней камеры iPhone X

Я столкнулся с проблемой, когда isDepthDataDeliveryEnabled неверно для меня на iPhone X и использую .builtInDualCamera.

Странно то, что это происходит только на одном конкретном iPhone X. Я тестировал на других iPhone Xs и iPhone 11s, и все работает, как ожидалось. Все устройства, на которых я тестировал, работают под управлением iOS 13.3.

Просто хотел узнать, может ли быть какая-то конкретная причина, по которой сбор данных глубины не может быть включен на устройстве.

     lazy var frontCamera: AVCaptureDevice? = {  
        let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes:  
            [.builtInDualCamera, .builtInDualWideCamera, .builtInUltraWideCamera, .builtInTelephotoCamera, .builtInWideAngleCamera, .builtInTrueDepthCamera, .builtInTripleCamera],  
        mediaType: .video, position: .back)  
        let devices = discoverySession.devices  
        for device in devices {  
            print("\(device) supports \(device.activeFormat.supportedDepthDataFormats)")  
        }  
        let depthSupportedDevices = devices.filter({ return $0.activeFormat.supportedDepthDataFormats.count != 0 })  
        print("depth supported devices are: \(depthSupportedDevices)")  

        return depthSupportedDevices.first  
    }()  

    func sessionPrepare() {  
        guard let captureDevice = frontCamera else { return }  

        do {  
            let deviceInput = try AVCaptureDeviceInput(device: captureDevice)  
            session.beginConfiguration()  
            session.sessionPreset = .photo  

            if session.canAddInput(deviceInput) {  
                session.addInput(deviceInput)  
            }  

            if session.canAddOutput(output) {  
                session.addOutput(output)  

                output.isDepthDataDeliveryEnabled = output.isDepthDataDeliverySupported  
                output.isPortraitEffectsMatteDeliveryEnabled = output.isPortraitEffectsMatteDeliverySupported  
            }  

            session.commitConfiguration()  
        } catch {  
            self.dismiss(animated: true, completion: nil)  
        }  
    }  

0 ответов

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