我正在使用 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
,并且一次只能运行一个捕获 session ——如果你运行一个捕获 session ,你会抢占 ARKit 的 session ,这会阻止 ARKit 工作。
但是,ARKit 确实提供了对其从捕获 session 接收的相机像素缓冲区的访问,因此您可以通过将这些样本缓冲区提供给 AVAssetWriter
来录制视频。 (这基本上与您从 AVCaptureVideoDataOutput
录制视频时使用的工作流程相同...与 AVCaptureMovieFileOutput
相比,这是一种较低级别的视频录制方式。)
您还可以将 ARKit 相机像素缓冲区(参见 ARFrame.capturedImage
)提供给其他使用实时相机图像的技术,例如 Vision 框架。 Apple 有一个 sample code project演示这种用法。
关于ios - 在 iPhone X 上的 ARKit ARSession 期间从前置摄像头录制视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50880868/