Fixed
Trimmed music, asset links and legacy H.264 fixed
Fixes four bugs: trimmed clips with length end failing the render, asset links in compose timelines, silent font swaps, and compress.target legacy output.
API
Four fixes, all found while building real videos for the blog.
- A trimmed clip with
"length": "end"renders. A music bed with atrimand"length": "end"played its whole trim span instead of stopping at the end of the video, and the render failed as incomplete. A trimmed clip now starts attrim.fromand plays for its length, never pasttrim.to. asset://works inside a compose timeline. Clip sources written asasset://orstorage://reached the renderer unresolved and failed to fetch. They now resolve like every other input, and a reference to an asset your workspace does not own is refused when you submit, before any credit is reserved.validate_composewarns about a font it cannot supply. A text clip naming a family we could not find rendered in a substitute without saying so. Validation now names the family and the fix: pick a Google Fonts family, declare the file ininputs.fonts, or add a fallback. It also catches a family spelled with the wrong capitals.compress.targetwithcompatibility: "legacy"outputs H.264 Main. Legacy mode returned H.264 High with B-frames, which older decoders and the WhatsApp Business API reject. It now encodes H.264 Main with no B-frames, a level that fits the frame, 4:2:0 colour and AAC-LC audio, and always re-encodes.
Timelines are covered in the compose docs and size targets in the compress.target docs.
