Choose & verify a variant¶
Every release ships along three axes: a runtime (portable WASM modules, or native drivers), a licence variant (LGPL/GPL), and a capability profile (lean/intermediate/ full). That's four WASM modules (2 variants × {lean, intermediate}) plus six native drivers (2 variants × {lean, intermediate, full}). Pick by runtime, licence, and profile, then verify before you trust it.
Which one?¶
graph TD
A[Do you need libx264-quality H.264 encoding?] -->|No| L[ffmpeg-wasi-lgpl.wasm]
A -->|Yes| B[Can your distribution accept GPL?]
B -->|Yes| G[ffmpeg-wasi-gpl.wasm]
B -->|No| L
ffmpeg-wasi-lgpl.wasm— the default. LGPL-2.1+, proprietary-compatible. H.264 encode via openh264 (BSD); everything else in the baseline.ffmpeg-wasi-gpl.wasm— LGPL plus--enable-gpl+ libx264 for best-in-class H.264 encoding. The artifact is GPL-2.0+.
When in doubt, start with LGPL. See the licensing model for the full picture (and why shipping both together is clean).
Which runtime?¶
- WASM (
ffmpeg-wasi-<…>.wasm) — the default: a sandboxed, portable, arch-independent, single-threaded module. Run it anywhere via afmpeg + wazero. - Native driver (
ffmpeg-wasi-driver-linux-amd64-<…>) — the same engine as a native ELF with threads + SIMD (spec 0028), driven out-of-process by afmpeg's native backend. Reach for it when you are encode- or throughput-bound (48–58× faster software encode), or need HEVC/AV1 (the full profile). linux/amd64 only for now.
Which profile?¶
Each build comes in a capability profile (spec 0022):
- lean (default,
ffmpeg-wasi-<variant>.wasm) — web-delivery essentials at the smallest size. - intermediate (
ffmpeg-wasi-intermediate-<variant>.wasm) — lean + every practical software codec/format/filter: the LGPL encoders (Opus/MP3/Vorbis/VP8-9/WebP), the native codec and container batches, and text/subtitle burn-in. Larger, but no separate build. - full (
ffmpeg-wasi-driver-linux-amd64-full-<variant>) — intermediate + the heavy encoders: AV1 (SVT-AV1, both variants) and HEVC (x265, gpl only). These need threads/SIMD, so full is native-only — there is no WASM full module.
Start with lean; reach for intermediate when you need a codec, container, or filter it doesn't carry, and full (native) for HEVC/AV1 encode — see the capability tables.
H.264 and AVC patents
Both variants encode H.264, and both are self-compiled — so neither rides under Cisco's openh264 binary patent grant. We ship encode under the AVC pool's royalty-free volume tier and will pull it on request; the obligation sunsets when the last AVC essential patent expires (2027-11-29 in the U.S.). Full detail in the licensing model.
Verify the checksum¶
Each release includes checksums.txt. Always verify the module you downloaded:
# Download the module + checksums.txt from the release, then:
sha256sum -c checksums.txt --ignore-missing
# ffmpeg-wasi-lgpl.wasm: OK
Or check a single file against the published value:
Pin it in a consumer¶
When loading the module from Go via afmpeg, pin both the URL and the SHA-256 so an unexpected artifact is rejected:
rt, _ := afmpeg.New(ctx, afmpeg.WithModuleURL(
"https://gitlab.com/api/v4/projects/83847809/packages/generic/ffmpeg-wasi/n8.1.2-10/ffmpeg-wasi-lgpl.wasm",
afmpeg.WithSHA256("160a91663696136940ebc48586ccc199f8b7c369c7a4502999174e790af8d19f"),
))
Each release lists every asset's URL
and checksums.txt. For n8.1.2-10 the GPL module's SHA-256 is
f44cc3574b1f6b81766660d9247163104022e68ada722955cf254fac446ec441. For exactly what went into
a build (FFmpeg version, build tag, commit, and per-variant licence/encoder/profile), read its
provenance.json.