Playbill
TOML-driven video program assembler. Define a program in program.toml, drop video files into input/, and Playbill renders title cards, intros, episode pass-throughs, and credits into a single concatenated video with fade-to-black transitions.
Playbill was extracted from a birthday party video project. The program assembler turned out to be a general-purpose tool for event programs, screening nights, or any sequenced video playlist that needs structure between clips.
Segment types
title: A text card (white on black) with configurable lines, duration, and fade timing. Optional background music. Used for act breaks, chapter headings, or opening titles.
intro: Portrait video on the left half with title, subtitle, and description text on the right. Originally designed for a three-year-old introducing his favorite TV shows.
episode and scene: Pass-through video files, scaled and padded to output resolution. Supports trimming and outro padding. HDR content is automatically tonemapped.
quote: Photo or video on the left with a name and quote text on the right. Works for testimonials, friend messages, or any face-next-to-words layout.
credits: Scrolling photo wall with video and photo quotes interspersed. Background music with automatic audio ducking when quotes play.
CLI
Playbill is designed for iterative work. The CLI supports several modes for fast feedback:
--previewtruncates long segments to ~15 seconds for fast iteration--segment Nrenders only one segment for focused work--skip-renderreuses existing temp files and only re-concatenates--listpreviews the program structure without rendering
Status
The extraction from the birthday monolith is done and the tooling is in place. The README, Makefile, and CLI work. The code needs the same cleanup Pinboard went through for v1.0: type hints, argparse, ruff linting, stripped comments.
Dependencies
Python 3.11+, Pillow, NumPy, ffmpeg 7+. MIT licensed.