First-party recording of the composited AR view

Film crews record "takes" in my app: camera feed plus virtual AR content with timecode. On SceneKit I rely on a third-party Metal-layer hook (SCNRecorder), because ReplayKit captures overlay UI and adds a permission prompt — and RealityKit appears to have no capture API at all, making recording a regression in any SceneKit→RealityKit migration. Is there a recommended first-party way to record an AR view to a movie file, or should I file feedback?

Answered by Vision Pro Engineer in 891348022

Hi @McDuffman

I'm not aware of a first-party API to record a RealityKit view to a movie file on iOS today. ARView exposes snapshot(saveToHDR:completion:) for stills only, and ReplayKit is the only system-provided video path I know of. Please file feedback via Feedback Assistant.

In the meantime, this visionOS thread outlines an approach worth considering. It's visionOS-specific (uses CameraFrameProvider and computes a projective camera from intrinsics/extrinsics), but the same shape works on iOS with ARFrame/ARCamera standing in for the visionOS providers:

  • Drive a separate RealityRenderer with a camera built from ARCamera.projectionMatrix(...) and ARCamera.transform.
  • Render into an offscreen MTLTexture.
  • Composite over ARFrame.capturedImage.
  • Feed the result to AVAssetWriter with a kCMMediaType_TimeCode track.

Hi @McDuffman

I'm not aware of a first-party API to record a RealityKit view to a movie file on iOS today. ARView exposes snapshot(saveToHDR:completion:) for stills only, and ReplayKit is the only system-provided video path I know of. Please file feedback via Feedback Assistant.

In the meantime, this visionOS thread outlines an approach worth considering. It's visionOS-specific (uses CameraFrameProvider and computes a projective camera from intrinsics/extrinsics), but the same shape works on iOS with ARFrame/ARCamera standing in for the visionOS providers:

  • Drive a separate RealityRenderer with a camera built from ARCamera.projectionMatrix(...) and ARCamera.transform.
  • Render into an offscreen MTLTexture.
  • Composite over ARFrame.capturedImage.
  • Feed the result to AVAssetWriter with a kCMMediaType_TimeCode track.
First-party recording of the composited AR view
 
 
Q