Skip to content
Back to work
Crowd-sourced 3D replaysWeb app2026

Folkets Repris

Folkets Repris turns the crowd into the camera crew. Drop in two to six phone clips of the same moment: they line up automatically by their sound, and the stands' own angles become a 3D replay you can spin, step through and share.

Year
2026
Status
Beta
Stack
Next.jsReactThree.jsPrismaVercelClaude
What I built
I built it with Claude Code: the audio sync, the camera calibration, the triangulation, the 3D replay and the sharing.
The example replay: an attack rebuilt in 3D from synthetic tracks, not real footage.

The example replay: an attack rebuilt in 3D from synthetic tracks, not real footage.

How it works

  1. 01

    Clips are synced by their sound in the browser. On three fan clips of a real free kick the offsets matched an independent Python implementation to within 3 ms.

  2. 02

    Clips that start far apart are first lined up on the moment the crowd roars, then fine-tuned on the full sound.

  3. 03

    A sync is trusted when two independent methods agree, not on a score. Across eleven clips of two goals, every pair the eye confirmed was within 0.3 s, and every pair it rejected was 6 s or more off.

  4. 04

    Four points on the penalty box solve each camera's position, direction and focal length, because the box's size is fixed by the rules.

  5. 05

    Nothing leaves the browser until you share. Then the angles are shrunk to 480p and stored with the replay.

  • Decision 1

    Sound first: every phone in a stadium hears the same roar, so syncing needs no special app.

  • Decision 2

    Trust agreement, not a score: a high correlation can still be a lucky match.

  • Decision 3

    Say what fails: automatic calibration rejects real stadium footage, because the lines it needs are not in the picture.

The builder with three demo clips: each angle's offset found from its sound, next to the offset it should have, and confirmed.
The builder with three demo clips: each angle's offset found from its sound, next to the offset it should have, and confirmed.

Happy to walk through the thinking, the trade-offs and where it's headed next.

Get in touch