The FFmpeg build recipes, Rust bindings and wrapper live in
packages/compositor/ffmpeg
. The compositor and wrapper use local Cargo dependencies, and updates are reviewed in a single Remotion pull request.
Use the full source commit SHA for the intended FFmpeg build.
Explicitly trigger the CircleCI pipeline on the branch containing that commit using the web app's
Trigger Pipeline button or the API. No parameters are needed: the workflow only runs for
pipeline.trigger.type == "api"
, which covers both methods. See the
trigger instructions. Wait for its five jobs and the macOS GitHub Actions build for the same commit to succeed. Then collect artifacts from the Remotion repository root:
The collector requires successful GitHub Actions and CircleCI builds for that same SHA. Do not combine runs or fill missing targets from an older build. Keep the returned
and
with the seven archives.
Upload the verified archives to a new immutable directory on
using the repository's R2 upload workflow. Never overwrite an existing release directory. Then run:
The importer verifies local and hosted archive checksums before updating
and the seven canonical generated bindings. Archives remain ignored downloads. Do not hand-edit bindings.
Install dependencies with
bun install --frozen-lockfile
. From
, install missing cross-compilation toolchains with
, then run
.
Require all seven targets: Windows x64 GNU, macOS ARM64/x64, Linux ARM64/x64 GNU/musl. On macOS, use an MSVCRT-targeting
. Verify
objdump -p packages/compositor-win32-x64-msvc/remotion.exe
imports
and no
or
.
From the repository root, run
,
, and
. Inspect the FFmpeg metadata/binding changes and all seven rebuilt compositor packages. Do not include unrelated changes.
When a PR is requested, read
and
. Include the full source SHA, hosted archive directory, CI provenance, rebuilt targets and validation results. Use the title:
packages Chromium and fonts and does not need a rebuild for an FFmpeg-only update.