Scene keyframes

Pick an MP4, MOV or WebM file. It stays on your machine and is analyzed in the browser: similar consecutive frames are grouped and one keyframe is suggested per group, such as the different parts of a room.

Tested browsers and formats

From automated browser tests on one machine (macOS 26, Apple M1), run on 9 October 2026 (library 1.1.1, ONNX Runtime Web 1.30.0). Browser automation on one machine doesn't show that other GPUs, drivers or devices work. Report: reports/compatibility/2026-10-09-20-06.json.

Browser Status Backends seen Checks
Chrome 154, macOS 26, Apple M1 Tested WebGPU and WASM 48 passed
Chromium 153, macOS 26, Apple M1 Tested WASM 17 passed
Firefox 155, macOS 26, Apple M1 Tested WASM 34 passed
WebKit 26, macOS 26, Apple M1 Tested WebGPU and WASM 34 passed
Chrome / Edge on Windows or Linux Untested – Expected to work; speed depends on GPU support
Safari app, iPhone and iPad Untested – The WebKit engine was tested on macOS, not the app or iOS
Phones and tablets generally Untested – About 70 MB download (model and runtime) on first use; likely slower
Format Status Notes
MP4, H.264 Tested Passes in Chrome, Chromium, Firefox, WebKit
MOV, H.264 Tested Passes in Chrome, Chromium, Firefox, WebKit
WebM, VP9 Tested Passes in Chrome, Chromium, Firefox, WebKit
MP4, AV1 Tested Passes in Chrome, Chromium, Firefox; Rejected with a message in WebKit
Damaged files Tested Passes in Chrome, Chromium, Firefox, WebKit
Other containers (e.g. AVI) Not supported Rejected with a message in Chrome, Chromium, Firefox, WebKit
MP4, HEVC (e.g. Pixel phones) Untested No automated fixture; needs a browser that can play HEVC
MOV, HEVC (iPhone) Untested No automated fixture; needs a browser that can play HEVC
M4V; WebM with VP8 or AV1 Untested Accepted, no automated fixture
MOV, ProRes Untested Chrome usually can't play ProRes

Formats a browser can't decode fail cleanly with a "playback" error rather than wrong results; the tests check that too.

The sample-video checks compare keyframe counts with what Chrome gave (±2). Chromium and WebKit decode a little differently and come out 3 off on one clip each, so those checks fail there; decoding itself works (see the format table).

How it works

        your video file  (stays in the browser, nothing is uploaded)
              |
              v
        1. SAMPLE    seek a hidden <video> to 2 frames per second
                     (max 180), draw each frame once:
                       - ~224x224 px copy for the model (aspect kept)
                       - sharpness + brightness score
              |
              v
        2. EMBED     DINOv2-small (fp16) via ONNX Runtime Web,
                     on WebGPU or the WASM fallback:
                     each frame -> 384 numbers describing what it shows
              |      runs while the next frame is being seeked
              v
        3. SELECT    re-runs instantly when you move the slider
              |        a. drop dark, overexposed and blurry frames
              |        b. mean-center the embeddings for this clip
              |        c. group consecutive frames of the same view
              |        d. keep the sharp frame nearest each group's centroid
              |        e. drop views the camera returns to later
              v
        4. SHOW      keyframe timestamps in time order; thumbnails
                     are captured on demand; click one to seek

        [frame][frame][frame][frame][frame][frame][frame][frame]
         \_____ view A _____/ \__ view B __/ \_____ view C ____/
                |                   |                 |
             keyframe            keyframe          keyframe

Video credits

The sample videos are clips from Apple's ARKitScenes dataset (iPhone captures of real homes), used under the ARKitScenes license. They have been trimmed to 25 seconds and re-encoded (main camera, 1280 px wide, no audio). This demo is not affiliated with or endorsed by Apple.

Dataset: G. Baruch, Z. Chen, A. Dehghan, T. Dimry, Y. Feigin, P. Fu, T. Gebauer, B. Joffe, D. Kurz, A. Schwartz and E. Shulman, "ARKitScenes: A Diverse Real-World Dataset for 3D Indoor Scene Understanding Using Mobile RGB-D Data", NeurIPS 2021 Datasets and Benchmarks Track.

Sample Title Author License Source
bedroom-tv-and-desk.mp4 Capture 48018785 (Training), 27–52 s Apple (ARKitScenes) ARKitScenes license ARKitScenes
bedroom-wall-tv.mp4 Capture 47333513 (Training), 27–52 s Apple (ARKitScenes) ARKitScenes license ARKitScenes
living-room-fireplace.mp4 Capture 42445841 (Training), 20–45 s Apple (ARKitScenes) ARKitScenes license ARKitScenes
living-room-sofa-rug.mp4 Capture 47669927 (Training), 33–58 s Apple (ARKitScenes) ARKitScenes license ARKitScenes
cluttered-bedroom.mp4 Capture 47331544 (Training), 15–40 s Apple (ARKitScenes) ARKitScenes license ARKitScenes