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