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?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →