Trailer v3: full weapon names, splice cuts, image-backed logo bookends
User feedback on first render: pacing too slow, splice between action
User feedback on first render: pacing too slow, splice between action shots, use full weapon names, em-dash characters rendered wrong, final tagline overflowed canvas, and use the actual game logo instead of plain Orbitron text.
Spec changes:
- 40s -> 26.5s overall. Tighter pacing, no saggy combat segments.
- 3 quick openers (3s each, with class names overlaid) -> 3 kill payoffs (2.5s each, no overlay - let the visual impact land) -> act montage (5s) -> tagline (3s).
- Class names now full: VIBRO BLADE / ARC STAFF / RAIL RIFLE.
- Em-dashes (U+2014) replaced with ASCII space-doubling. The previous —enable-fontconfig FFmpeg + Orbitron path didn’t have a glyph for em-dash and rendered the raw UTF-8 bytes as garbage (“a euro quote”). No more unicode in overlays.
- Tagline shortened from 38 chars (overflowed 1920px at 72pt) to “WISHLIST NOW” (12 chars, fits clean).
- Logo + tagline beats now use image=07_library_logo_1280x720.png instead of plain text. Both bookends show the actual brand.
Schema + renderer changes to support the splice + image stills:
- spec.py: FootageBeat.start_time (Optional[float]) for absolute-time cuts mid-sequence. Used by the kill-payoff beats which start ~2s before the killing_blow marker (no marker exists at that exact spot).
- footage.py: load_clip honors start_time as the most-specific resolution rule. start_time + duration = direct windowing into the source clip.
- render.py: image-backed stills. spec had StillBeat.image since v1 but
the renderer’s still branch was a “v1 simplicity” stub that only emitted
solid-color filtersources. Now: append the image to inputs, prepend
-loop 1for image extensions when building the FFmpeg cmd, trim the loop to the still’s duration, scale+pad to canvas size.
Output: trailer-pipeline/ai_apocalypse_launch_trailer.mp4 (full 1080p, 12000 kbps h264 + AAC, ~26.5s).
Commit 417cbc9 by astafford8488.