Playbill
Playbill assembles a video programme from a manifest. program.toml names each segment in order and input/ holds the clips, photos and music; the output is one film with fade-to-black transitions, plus a file per act when the manifest defines acts. Pinboard is the sister tool: it renders the meandering photo wall, and Playbill joins everything around it.
- The manifest and a folder of clips go in; nothing about the programme lives in code.
- Each segment renders to its own file under
output/segments/, picture and sound faded together. - ffmpeg concatenates the files, copying the video and re-encoding only the audio.
The join holds because every renderer writes the same kind of file. Sources arrive with stereo, surround or no sound at all; each is converted to one sample format, rate and channel layout, and silence is synthesized where a clip or card has none. The final pass runs the mix through a limiter and encodes it once.
Segment types
- title: lines of text on black, with duration and fade timing; music under it is optional.
- intro: a portrait clip on the left, title, subtitle and description on the right.
- episode and scene: pass-through clips scaled and padded to the output frame, trimmed and optionally tailed with black.
- quote: a photo or clip on the left, a name and quote on the right.
- credits: a scrolling photo wall with quotes interspersed, the music ducking under each voice clip.
CLI
The flags are shaped for iteration:
--listprints the programme by act without rendering anything.--segment Nrenders one segment.--previewtruncates long segments to about fifteen seconds, head, middle and tail.--skip-renderreuses the rendered segments and only re-concatenates.
Playbill does not edit clips. Trimming to a mark and padding with black is the extent of it; anything finer happens before a file lands in input/. Python, Pillow, NumPy and ffmpeg; MIT licensed.