finds.dev← search

// the find

asticode/go-astiav

★ 722 · Go · MIT · updated May 2026

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.

View on GitHub →

// want more like this?

Every week we dig through GitHub and send you a few repos picked for what you're working on, each with an honest take like this one. Free. See a real issue →

// similar repos

Search the finds →