Prototype · private repo · built 2026

EventReels — your night, already edited.

Drop in raw event footage, get back a finished 9:16 highlight reel. No timeline, no editor, no editing skill. The whole pipeline runs on your own machine: zero API keys, zero Python dependencies — just ffmpeg.

EventReels web studio — drag-and-drop footage uploader with reel length slider and title card field

The Problem

Nobody edits the footage.

Every event — a rush week, a game, a formal — generates hours of phone video that nobody has the patience or the software skill to cut. The clip that would actually get posted never gets made, because making it means learning a timeline editor and spending an evening scrubbing.


What I Built

An editing brain, and a studio to drive it.

reelsmith — the pipeline

A dependency-free Python CLI wrapping ffmpeg. Scene-change detection finds the visual moments, per-half-second loudness analysis finds the crowd energy, and a scoring pass picks the clips. Renders 1080×1920 @30fps with cover-crop, per-clip fades and −14 LUFS loudness normalization — the level Instagram, TikTok and YouTube all target.

The studio — the interface

A black-and-gold local web app: drag footage in, watch the four-stage pipeline run, preview the result in a phone frame, download it. Finished reels persist to SQLite with a thumbnail library and shareable watch pages, so a reel has a URL instead of living in a downloads folder.


How It Works

Watch → listen → pick → cut.

The pipeline cuts the way an editor would: find the moments visually, confirm them with the audio, then order them so the reel tells the night in sequence rather than as a shuffled montage.

STEP 1

Watch

Frame-level scene-change detection in ffmpeg marks every visual cut point in the source footage.

STEP 2

Listen

Per-half-second loudness analysis finds the crowd noise, the music drops, the moments people reacted to.

STEP 3

Pick

Moments are scored and greedy-selected to the target runtime, then re-sorted chronologically.

STEP 4

Cut

Renders vertical 1080×1920 with fades and −14 LUFS normalization. Optional title cards, beat-sync, captions and a music bed.

The test that keeps it honest. The suite generates synthetic quiet→loud→quiet footage with ffmpeg and asserts the selector picks the loud window and the render is a valid vertical video — so the "it finds the good part" claim is checked by a machine, not by my taste.

The Stack

Local-first on purpose.

Video is the one workload where cloud processing gets expensive immediately. Doing the whole thing on-device means the cost per reel is zero and the footage never leaves the laptop — which also sidesteps the privacy problem of uploading other people's faces to a server.

Python ffmpeg FastAPI SQLite Scene detection Audio-energy scoring −14 LUFS loudnorm unittest · pytest GitHub Actions CI

Honest Status

Working prototype. Not a launched product.

What's real

The pipeline and the studio both run end-to-end, with a test suite green in CI on every push. Real-footage runs work: four minutes of handheld video in, a clean 30-second vertical reel out.

What isn't

No public launch, no users, no revenue. It runs locally on my machine, the repo is private, and music licensing is an unsolved prerequisite before anything with a licensed audio bed could ship publicly.

🔒 Repo access: EventReels lives in a private monorepo. Happy to walk through the code or demo the studio live — just ask.