// the find
u2takey/ffmpeg-go
golang binding for ffmpeg
A Go port of ffmpeg-python that wraps the ffmpeg CLI via a fluent builder API. It constructs and executes ffmpeg command lines from Go code rather than providing native codec bindings. Useful for server-side video processing in Go services where you need to avoid shell scripting.
- Fluent API for building complex filter graphs is clean and readable — chaining VFlip, Split, Overlay etc. maps well to ffmpeg's actual filter graph model
- Pipe-based I/O support (WithOutput, pipe: syntax) lets you integrate ffmpeg into streaming pipelines without temp files
- Progress reporting via Unix socket is a practical addition that ffmpeg-python itself handles awkwardly
- CPU throttling via RunWithResource is genuinely useful for running transcodes on shared machines without killing them
- It's a thin CLI wrapper — all type safety disappears into KwArgs string maps, so invalid ffmpeg arguments fail at runtime with an opaque exit error, not at compile time
- Error handling is weak: when ffmpeg fails you get the exit code but stderr is often swallowed unless you call ErrorToStdOut(), making debugging in production painful
- Last meaningful activity appears to be 2024 but the commit history is sparse; several open issues about filter argument ordering bugs haven't been addressed, which can silently produce wrong output
- No support for probing output without writing a file first in a straightforward way, and the Probe API returns raw JSON strings requiring a separate gjson/json dependency to do anything useful