ffmpeg-wasi builds FFmpeg's libav* libraries to wasm32-wasi and drives them with a small
purpose-built engine, producing a single .wasm that runs media pipelines anywhere a WASI
runtime does — designed for wazero, the pure-Go runtime, so Go programs
can transcode/filter/mux embedded, CGO-free, and sandboxed.
It is the reference server-side FFmpeg for WebAssembly: current (not the EOL build), WASI-native (not the browser one), and pure-Go-runnable (no CGO) — by linking the libraries directly and going under the FFmpeg-7.0 CLI threading wall that stops everyone else.
- Tutorials — learn by doing.
- How-to — solve a specific task.
- Explanation — how & why it works.
- Reference — the job-spec vocabulary, artifacts, codec matrix.
Status: released. Releases ship current FFmpeg (n8.1.2) as lgpl and gpl builds, in a lean and an intermediate profile — both as portable WASI modules and as native drivers (spec 0028, threads + SIMD, driven by afmpeg's native backend for 48–58× faster software encode). The native driver adds a third full profile with HEVC (x265) and AV1 (SVT-AV1) encode. The engine transcodes (decode → filter → encode → mux) over a virtual filesystem: the
probe,process(fullfilter_complex),frames, andversionops all work today. Design: afmpeg spec 0007.