如何在RealityKit中录制视频?

时间:2019-12-30 15:20:15

标签: swift arkit realitykit

我在Xcode中有一个RealityKit项目,我想记录ARView。我考虑过ReplayKit,但这是用于屏幕录像,我只想记录ARView及其相机提要。我考虑了AFathi的开源项目ARVideoKit,但是它不支持RealityKit ...关于不同渲染路径的一些知识。我找到了一篇中型文章,描述了如何在ARKit应用程序中实现录制功能,但问题是它需要方法:func renderer(_ renderer: SCNSceneRenderer)在RealityKit中不可用,因为它特别是SceneKit方法。

1 个答案:

答案 0 :(得分:3)

我的答案假设您熟悉使用AVAssetWriter录制视频和音频。

有一个捕获的框架是ARKit session(_:didUpdate:)方法的一部分。返回的ARFrame对象有一个名为CVPixelBuffer的{​​{1}}。按照与常规视频录制会话相同的方式处理帧,除了不是通过capturedFrame方法捕获,而是在此处捕获。如果您还打算从麦克风录制音频,则可能仍需要一种captureOutput(_:didOutput:from:)音频方法。

在我的情况下,我将捕获的帧转换为captureOutput(_:didOutput:from:),并使用Metal处理视频帧,然后再将其传递到MTLTexture。录制之前,我想在相机框架上画图。不幸的是,这样做很复杂,恐怕不是一个简短的复制+粘贴答案。希望将您指向ARKit返回的AVAssetWriter对象是您开始的好地方。

有关如何使用capturedFrame录制视频的示例: https://programmersought.com/article/80131041234/;jsessionid=38CBA6743FB3C440DE9D2B25A6854B28

如果要深入了解OpenGL /金属的兔子洞,请执行以下操作: https://developer.apple.com/documentation/metalkit/