| name | assembly |
| description | Cut, grade, title and master the film locally with ffmpeg — zero credits. Trigger - /assembly, after all clips render and before qc-gate. |
Assembly — post costs nothing
Never re-generate what post can fix. Grade drift, titling, logos, pacing and loudness are all free to fix here. A re-shoot costs 45 credits; a colour-match costs nothing.
Order of operations
- Concat in running order. Use relative paths in the concat file and run ffmpeg from that directory — a Windows ffmpeg cannot open MSYS-style
/c/... paths.
- Grade to even out inter-shot drift:
eq=contrast=1.04:saturation=0.97:gamma=1.01, unsharp=5:5:0.4:5:5:0.0
- Titles via
drawtext, with alpha ramps for clean fades:
alpha='if(lt(t,A),0,if(lt(t,A+1),(t-A),if(lt(t,B),1,if(lt(t,B+1),(B+1-t),0))))'
- Sting and end card from stills, using
zoompan for a slow push plus fade in and out.
- Mux VO, offset past the sting and normalised:
[1:a]adelay=<ms>|<ms>,loudnorm=I=-16:TP=-1.5:LRA=11[a]
- Export H.264 1920×1080, CRF 18, AAC 320k.
Multi-language costs almost nothing
Build the picture once as picture_final.mp4. Each additional language is an audio remux with -c:v copy — minutes, not a re-render. Never rebuild picture per language.
ImageMagick trap
-draw uses absolute image coordinates and ignores -gravity. Use -annotate for anything gravity-relative, or compute absolute coordinates deliberately. This silently misplaces rules and boxes.
Verify
ffprobe every output duration. Confirm VO length against picture length before declaring picture lock — a 20-second mismatch discovered after lock means re-cutting.