Не работает захват глубины для задней камеры 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)
}
}