我在 Xcode 中有一个 RealityKit 项目,我想记录ARView
. 我考虑过 ReplayKit,但那是为了屏幕录制,我只想ARView
用它的摄像头录制。我考虑了 Afathi 的开源项目 ARVideoKit,但它不支持 RealityKit ......关于不同渲染路径的东西。我找到了一篇 Medium 文章,它描述了如何在 ARKit 应用程序中实现录制功能,但问题是它需要方法:func renderer(_ renderer: SCNSceneRenderer)
该方法在 RealityKit 中不可用,因为它专门是 SceneKit 方法。
1 回答
我的回答假设您熟悉使用AVAssetWriter
.
作为 ARKitsession(_:didUpdate:)
方法的一部分提供了一个捕获的帧。返回的ARFrame
对象有一个CVPixelBuffer
命名的capturedFrame
. 像处理常规视频录制会话一样处理帧,除了不是在captureOutput(_:didOutput:from:)
方法中捕获,而是在此处捕获。captureOutput(_:didOutput:from:)
如果您还打算从麦克风录制音频,您可能仍然需要一种音频方法。
就我而言,我将捕获的帧转换为 aMTLTexture
并使用 Metal 处理我的视频帧,然后将它们传递给AVAssetWriter
. 我想在录制之前在我的相机框架上画画。不幸的是,这样做非常复杂,恐怕不是快速而简短的复制+粘贴答案。希望将您指向capturedFrame
ARKit 返回的对象是您开始的好地方。
关于如何使用录制视频的示例AVAssetWriter
:
https ://programmersought.com/article/80131041234/;jsessionid=38CBA6743FB3C440DE9D2B25A6854B28
如果您想在将 3D 模型编码为视频之前将其绘制到捕获源中,您还需要精通 Metal: https ://developer.apple.com/documentation/metalkit/