Changelog
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 a trim and "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 at trim.from and plays for its length, never past trim.to.
  • asset:// works inside a compose timeline. Clip sources written as asset:// or storage:// 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_compose warns 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 in inputs.fonts, or add a fallback. It also catches a family spelled with the wrong capitals.
  • compress.target with compatibility: "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.

Share