AI-powered video editing prototype: upload raw footage, point it at a reference video (file or YouTube/Vimeo link), and it re-edits your footage in that video's style — cut pacing, beat-synced cuts, zoom punches, spin and flash transitions, and a color grade matched to the reference's look.
Built as the first working slice of a larger "editing style transfer" product for content creators (YouTube, Shorts, Reels).
- Style analysis — given a reference video, extracts a Style Profile:
- cut rate and average cut duration (PySceneDetect)
- transition type: hard cuts vs dissolves (frame-diff shape)
- zoom frequency/intensity (radial optical flow)
- rotation/spin moves (tangential optical flow)
- white-flash transition events (luma spikes)
- music energy (RMS loudness + onset density)
- color look: saturation, contrast, brightness, warmth
- on-screen caption presence (edge density heuristic)
- Auto-edit — applies that profile to your raw footage:
- jump cuts at the reference's pacing, snapped to your audio's beats
- zoom ramps and punch-in pops
- spin (whip-roll) and white-flash transitions, alternating
- color grade toward the reference look + unsharp sharpening
- high-quality encode (x264 CRF 18)
- Web studio — a DaVinci-Resolve-inspired dark UI with source/program monitors, a real segment timeline, style preset chips, and drag-drop uploads. User accounts with session auth; every render is recorded per-user in SQLite.
- Backend: Python, FastAPI, Uvicorn, SQLite
- Video/AI: OpenCV, PySceneDetect, MoviePy, imageio-ffmpeg (bundled FFmpeg), yt-dlp
- Frontend: single-file HTML/CSS/JS (no framework), served by FastAPI
python -m venv .venv
.venv/Scripts/python -m pip install -r requirements.txt # Windows
.venv/Scripts/python -m uvicorn app:app --port 8765Open http://127.0.0.1:8765, create an account, and follow the three steps in the left rail.
CLI usage without the web UI:
python style_profile.py --input reference.mp4 --output profile.json
python autoeditor.py --raw footage.mp4 --profile profile.json --output edit.mp4app.py FastAPI server: auth, analyze/edit endpoints, static hosting
db.py SQLite layer: users, sessions, render history
style_profile.py reference video -> StyleProfile JSON
autoeditor.py raw footage + StyleProfile -> edited MP4
static/ web UI (index.html, login.html)
This is a working prototype, not a product:
- Heuristics (zoom, flash, captions, music energy) are tuned lightly and will misfire on some footage; treat outputs as a first cut to react to.
- Segment selection samples the source evenly — it does not yet pick "best moments" (highlight detection is the next planned module).
- No on-screen caption generation yet (needs speech-to-text).
- Fetching reference videos from YouTube via yt-dlp is fine for local experimentation on content you have rights to, but conflicts with YouTube's Terms of Service — do not ship that feature publicly without legal review.
- Auth is session-cookie based and suitable for local use; production would need HTTPS, rate limiting, and hardening.