finds.dev← search

// the find

imkira/go-libav

★ 531 · Go · MIT · updated Feb 2021

Go language bindings for ffmpeg libraries

CGo bindings for ffmpeg's libav libraries (avcodec, avformat, avfilter, avutil), wrapping the C API in Go structs with proper error handling and finalizer-based memory management. Aimed at Go developers who need low-level ffmpeg access without shelling out to the CLI.

Covers the four core libav libraries with a consistent OO wrapper pattern — formats, codecs, filters, and utils all follow the same idiom. Build-tag approach for ffmpeg 3.0 vs 3.3 API differences is clean; no #ifdef soup leaking into Go code. Tests exist and cover real codec/format operations, not just stub calls. Memory management via finalizers is a genuine improvement over most CGo ffmpeg wrappers that leak.

Pinned to ffmpeg 3.x — current ffmpeg is 7.x and the API has changed significantly; this will not build against any modern system installation without backporting or vendoring old ffmpeg headers. Last commit was 2021, Travis CI badge is broken, and the project self-describes as incomplete — large chunks of the API (avdevice, swscale, swresample) are simply absent. The transcoder example is the only real usage demo, which leaves a lot of guesswork for anything beyond basic remuxing. CGo in general means cross-compilation is painful and cgo-disabled builds are impossible.

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 →