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).

Gaussian Splatting News on YouTube

The week in radiance fields, every Monday.

Gaussian Splatting News on YouTube

The week in radiance fields, every Monday.

Gaussian Splatting News on YouTube

The week in radiance fields, every Monday.

Gaussian Splatting News on YouTube

The week in radiance fields, every Monday.