Skip to content

ffmpeg-wasi logo

ffmpeg-wasi

Current FFmpeg as a sandboxed WebAssembly module — for the server, not the browser.

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.

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 (full filter_complex), frames, and version ops all work today. Design: afmpeg spec 0007.