在iPhone X上的ARKit ARSession期间录制来自前置摄像头的视频



我正在使用ARSessionARFaceTrackingConfiguration来跟踪我的脸。同时,我想从iPhone X的前置摄像头录制视频。为此,我正在使用AVCaptureSession但是一旦我开始录制,ARSession就会中断。

这是两个代码片段:

// Face tracking
let configuration = ARFaceTrackingConfiguration()
configuration.isLightEstimationEnabled = false
let session = ARSession()
session.run(configuration, options: [.removeExistingAnchors, .resetTracking])
// Video recording
let camera = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .front)!
input = try! AVCaptureDeviceInput(device: camera)
session.addInput(input)
session.addOutput(output)

有谁知道如何同时做这两件事?像Snapchat这样的应用程序允许用户同时记录和使用真实深度传感器,所以我想我所要求的是完全可行的。谢谢!

> ARKit 运行自己的AVCaptureSession,一次只能运行一个捕获会话 — 如果您运行捕获会话,则会抢占 ARKit,这会阻止 ARKit 工作。

但是,ARKit 确实提供对从其捕获会话接收的相机像素缓冲区的访问,因此您可以通过将这些示例缓冲区馈送到AVAssetWriter来录制视频。(这基本上与您从AVCaptureVideoDataOutput录制视频时使用的工作流程相同......与AVCaptureMovieFileOutput相比,这是一种较低级别的视频录制方式。

您还可以将 ARKit 摄像机像素缓冲区(请参阅ARFrame.capturedImage(馈送到处理实时摄像机图像的其他技术,例如视觉框架。Apple 有一个示例代码项目来演示这种用法。

相关内容

最新更新