我正在寻找一种在使用TrueDepth摄像机录制视频时将深度信息(每一帧)保存到文件的方法。我找到了可以在拍照时保存深度数据的解决方案,但对于视频不可以。
我目前有用于录制视频并将其保存到文件并同时捕获深度数据的代码。但是,我不知道如何保存深度数据。基本上,我使用AVCaptureSession和AVCaptureMovieFileOutput保存录制的视频。我发现深度数据是由AVCaptureDepthDataOutput提供的,但是如何将其保存到文件中?
代码的主要部分:
let captureSession = AVCaptureSession()
let sessionOutput = AVCapturePhotoOutput()
let movieOutput = AVCaptureMovieFileOutput()
let depthDataOutput = AVCaptureDepthDataOutput()
if let device = AVCaptureDevice.default(.builtInTrueDepthCamera,
for: .video, position: .front) {
let input = try AVCaptureDeviceInput(device: device )
if captureSession.canAddInput(input){
captureSession.sessionPreset = AVCaptureSession.Preset.photo
captureSession.addInput(input)
if captureSession.canAddOutput(sessionOutput){
captureSession.addOutput(sessionOutput)
// Code for adding previewing the video
}
}
if captureSession.canAddOutput(depthDataOutput){
captureSession.addOutput(depthDataOutput)
}
if let connection = depthDataOutput.connection(with: .depthData) {
connection.isEnabled = true
depthDataOutput.isFilteringEnabled = false
print("Depth data working")
} else {
print("No AVCaptureConnection")
}
// Capture the video to a file
captureSession.addOutput(movieOutput)
captureSession.startRunning()
// ...
// How to store the depth data from AVCaptureDepthDataOutput ?
}
有什么想法吗?