在 iPhone X 上的 ARKit ARSession 期间从前置摄像头录制视频
Record video from front facing camera during ARKit ARSession on iPhone X
我正在使用 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
,一次只能有一个捕获会话 运行ning — 如果你 运行 一个捕获会话,你抢占 ARKit,这会阻止 ARKit 工作。
但是,ARKit 确实提供了对其从捕获会话接收的相机像素缓冲区的访问,因此您可以通过将这些样本缓冲区提供给 AVAssetWriter
来录制视频。 (这与从 AVCaptureVideoDataOutput
录制视频时使用的工作流程基本相同...与 AVCaptureMovieFileOutput
相比,这是一种较低级别的视频录制方式。)
您还可以为 ARKit 相机像素缓冲区提供数据(请参阅 ARFrame.capturedImage
) to other technologies that work with live camera imagery, like the Vision framework. Apple has a sample code project 演示此类用法。
我正在使用 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
,一次只能有一个捕获会话 运行ning — 如果你 运行 一个捕获会话,你抢占 ARKit,这会阻止 ARKit 工作。
但是,ARKit 确实提供了对其从捕获会话接收的相机像素缓冲区的访问,因此您可以通过将这些样本缓冲区提供给 AVAssetWriter
来录制视频。 (这与从 AVCaptureVideoDataOutput
录制视频时使用的工作流程基本相同...与 AVCaptureMovieFileOutput
相比,这是一种较低级别的视频录制方式。)
您还可以为 ARKit 相机像素缓冲区提供数据(请参阅 ARFrame.capturedImage
) to other technologies that work with live camera imagery, like the Vision framework. Apple has a sample code project 演示此类用法。