Your Capture Output

Your Capture Output

Every SplatKing session is saved as a self-contained folder — a “splatpack” — under Files → On My iPhone → SplatKing → Captures. The folder holds your media plus the metadata a radiance field pipeline needs to reconstruct the scene. Nothing leaves your device unless you share it.

What a splatpack contains

MediaThe captured images or video. In Photo and Video this is two streams per moment (the 0.5× ultra-wide and 1× wide lenses); in LiDAR it’s the 1× wide frames.
Per-frame metadataA JSON sidecar for each frame carrying its camera data (intrinsics, and for LiDAR the camera pose and ARKit tracking state), EXIF, and a quality assessment.
The manifestsplatpack.json — a single index tying it all together.
Mode-specific extrasLiDAR adds the COLMAP model, the fused point cloud, and per-frame depth + confidence maps; Video adds frame timing and optional undistorted exports.
Diagnostic logcapture_events.ndjson — in-session app events only. No image data, no location, no identifiers.

Everything is plain media (.jpg, .mov, .ply), JSON, or raw binary buffers — no proprietary container.

The manifest: splatpack.json

splatpack.json is the entry point for any pipeline that ingests a SplatKing capture. It records the capture’s identity (schema version, capture type, app version, when generated) and an index of the capture — for photo and LiDAR, the list of frame pairs (each with its shared captureId, per-lens image files, and a quality score); for video, the per-stream records.

{
  "schema": "splatpack.v2",
  "schemaVersion": 2,
  "captureType": "photo_dual",
  "folderName": "PhotoSeries_20260601_103356_655",
  "app": { "shortVersion": "1.0.0", "buildVersion": "17" },
  "pairCount": 30,
  "pairs": [
    {
      "captureId": "20260601_103356_701",
      "quality": { "score": 0.86, "band": "good" },
      "streams": [
        { "camera": "wide",  "imageFile": "wide_20260601_103356_701.jpg" },
        { "camera": "ultra", "imageFile": "ultra_20260601_103356_701.jpg" }
      ]
    }
  ]
}

Both lens streams of one capture share a single captureId (a millisecond-resolution timestamp), so matching paired frames is trivial.

Folder layout by mode

Pick a capture mode to see its splatpack tree.

PhotoSeries_<date>/
wide_<timestamp>.jpg1× wide still
ultra_<timestamp>.jpg0.5× ultra still
wide_<timestamp>.jsonper-frame metadata (EXIF, calibration, quality)
ultra_<timestamp>.json
photo_series.jsonindex of all frames
splatpack.jsonthe manifest
capture_started.json
capture_events.ndjsondiagnostic log

Quality & diagnostics

Per-frame metadata (.json) carries each frame’s camera data and a quality assessment, so you can filter weak frames before reconstruction. capture_events.ndjson is a diagnostic log of in-session events — no image data, no location, and no identifiers, just app-internal status, errors, and capture markers.

Next steps

For the complete splatpack.json field reference, see the SplatPack schema (developer reference).