by Katherine Feemster
🌐 Live portfolio site · GitHub repo
End-to-end, code-first video production — FOSS NLE project generators, OpenTimelineIO + CMX-3600 interchange, R128-compliant loudness, broadcast-safe captions.
- Highlighted projects
- Reproducibility
- Tech stack
- Editorial style
- Repo layout
- About the author
- Contact
| Project | Stack | What it proves |
|---|---|---|
| AI dataset video curation | ffmpeg · PySceneDetect · aHash | Raw footage into a versioned, deduplicated, normalised training set. |
| Shotcut MLT project generator | Python · MLT XML | Programmatic .mlt projects with producers, playlists and dynamic text. |
| OpenShot + OpenTimelineIO | Python · OSP · OTIO | Cross-NLE interchange so the same cut opens in OpenShot or any OTIO tool. |
| Lightworks EDL export | CMX-3600 · 33pt .cube LUT | Finishing hand-off to Lightworks / Resolve with a matching editorial LUT. |
| Auto-captioning + burn-in | Whisper (optional) · SRT · ffmpeg | Accessible captions with broadcast-safe margins for social and research decks. |
pip install opencv-python scenedetect opentimelineio matplotlib numpy
python3 scripts/python/run_all.py # builds every artefact from nothingNine stages produce the .mlt, .osp, .otio, .edl, .cube and a final 1080p30 demo cut. Whisper is optional and gated on WHISPER=1 so CI stays offline.
- Editing NLEs — Shotcut (MLT), OpenShot (OSP), Lightworks, Kdenlive · pvpython-style programmatic project authoring.
- Interchange — OpenTimelineIO 0.17, CMX-3600 EDL, AAF, FCP7 XML, XMEML.
- Grading & LUTs — 33-point
.cube3D LUTs, Rec.709 → editorial, scopes (waveform, parade, vectorscope). - Audio — ffmpeg
loudnormEBU R128,-23 LUFSintegrated,-2 dBTPtrue-peak, LRA ≤ 7. - Captions — WebVTT / SRT / TTML, Whisper v3 for drafts, broadcast-safe 5 % title / 10 % action-safe margins.
- Palette — teal
#2E7A7B+ amber#D9A441on ink#0F1A1F/ paper#FBFAF7. - Type — Inter (UI) + JetBrains Mono (code, netlists, timecode).
- Determinism — every generator is seeded; PNG, CSV and project-file bytes are stable across CI runs.
- Licensing — every tool in the pipeline is FOSS. No commercial SDK in the dependency tree.
video-production-portfolio/
├── projects/ # five case studies with their own READMEs
├── scripts/python/ # 9 generators — the source of truth
├── scripts/projects/ # .mlt / .osp / .otio / .edl / .cube artefacts
├── assets/data/ # raw + curated synthetic clips
├── assets/renders/ # posters (timeline, scene grid, waveform, caption)
├── assets/demo/ # final cut + captioned demo
├── docs/ # GitHub Pages site
└── .github/workflows/ # CI re-runs the whole pipeline on push
Senior video production professional with editorial, motion and technical supervisor experience. Comfortable owning a project from raw footage ingest through finishing, captioning and delivery — with a bias for reproducible, code-driven pipelines over manual NLE sessions.
Open to remote and contract engagements. This repository is the living portfolio companion to my CV.
Katherine Feemster
- GitHub — @katherinejenniferhsfeemster
- Live site — katherinejenniferhsfeemster.github.io/video-production-portfolio
- Location — open to remote / contract
