// the find
asticode/go-astiav
Golang ffmpeg and libav C bindings
Go CGo bindings for ffmpeg's libav libraries, written from scratch by the maintainer of the previously most-starred goav fork. Targets Go developers who need programmatic video/audio processing without shelling out to the ffmpeg CLI — think transcoding pipelines, frame extraction, custom muxing.
The API is genuinely idiomatic Go: typed constants and flags instead of raw C ints, standard error returns, struct methods instead of global functions. Every method links back to the underlying C function in its docs, so when something goes wrong you know exactly where to look in ffmpeg's own documentation. The example set mirrors the official ffmpeg C examples one-for-one, which is the right call — if you've read the C docs, you can translate directly. Test coverage is real: CI runs the full suite, there's a coveralls badge, and testdata includes actual media files rather than mocked byte slices.
Pinned hard to ffmpeg n8.0 — not a range, a single tag. If your system ships a different ffmpeg version (common on Debian stable or macOS Homebrew), you must build ffmpeg from source, which is a significant setup burden the README acknowledges but can't really fix. Breaking changes land on main without semver bumps, which means go get latest in CI will silently break your build and BREAKING_CHANGES.md becomes required reading on every dependency update. CGo also means cross-compilation is painful: Windows requires msys2/mingw64, and any environment without a C toolchain (distroless containers, many CI images) needs extra scaffolding before a single line of your Go runs.