在iPhone X上的ARKit ARSession期间从前置摄像头录制video
我正在使用ARSession
和ARFaceTrackingConfiguration
来跟踪我的脸部。 同时,我想从我的iPhone X的前置摄像头录制一个video。为此,我正在使用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
来录制video。 (这与从AVCaptureVideoDataOutput
录制video时使用的工作流基本相同…与AVCaptureMovieFileOutput
相比,这是一种较低级别的video录制方式。)
您还可以将ARKit相机像素缓冲区(请参阅ARFrame.capturedImage
)提供给其他与实时相机图像配合使用的技术,例如Vision框架。 Apple有一个示例代码项目,展示了这种用法。