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

2023-12-31

我正在使用一个ARSession结合一个ARFaceTrackingConfiguration来追踪我的脸。同时,我想从 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 https://developer.apple.com/documentation/arkit/arframe/2867984-capturedimage)到其他使用实时相机图像的技术,例如 Vision 框架。苹果有一个示例代码项目 https://developer.apple.com/documentation/arkit/using_vision_in_real_time_with_arkit展示了这样的用法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iPhone X 上的 ARKit ARSession 期间从前置摄像头录制视频 的相关文章

随机推荐