首先,您需要使用双摄像头,否则您将不会获得任何深度数据。
let device = AVCaptureDevice.default(.builtInDualCamera, for: .video, position: .back)
并保留对您队列的引用
let dataOutputQueue = DispatchQueue(label: "data queue", qos: .userInitiated, attributes: [], autoreleaseFrequency: .workItem)
您可能还想同步视频和深度数据
var outputSynchronizer: AVCaptureDataOutputSynchronizer?
然后,您可以像这样在viewDidLoad()方法中同步两个输出
if sessionOutput?.isDepthDataDeliverySupported {
sessionOutput?.isDepthDataDeliveryEnabled = true
depthDataOutput?.connection(with: .depthData)!.isEnabled = true
depthDataOutput?.isFilteringEnabled = true
outputSynchronizer = AVCaptureDataOutputSynchronizer(dataOutputs: [sessionOutput!, depthDataOutput!])
outputSynchronizer!.setDelegate(self, queue: self.dataOutputQueue)
}
我建议您观看WWDC会话507-他们还提供了完全符合您想要的功能的示例应用程序。