我正在使用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这样的应用程序允许用户同时记录和使用真实深度传感器,所以我想我所要求的是完全可行的。谢谢!
答案 0 :(得分:1)
ARKit运行自己的AVCaptureSession
,并且一次只能运行一个捕获会话-如果运行捕获会话,则会抢占ARKit,这会阻止ARKit正常工作。
但是,ARKit确实提供了对其从捕获会话中接收到的摄像机像素缓冲区的访问,因此您可以通过将这些采样缓冲区馈送到AVAssetWriter
来录制视频。 (基本上与从AVCaptureVideoDataOutput
录制视频时使用的工作流程相同,与AVCaptureMovieFileOutput
相比,这是一种较低级别的视频录制方法。)
您还可以将ARKit相机像素缓冲区(请参见ARFrame.capturedImage
)馈送至其他与实时相机图像配合使用的技术,例如Vision框架。苹果公司有sample code project演示了这种用法。