// the find
xfrr/goffmpeg
Powerful and dev-friendly FFMPEG wrapper written in Go
A Go wrapper around ffmpeg/ffprobe binaries that handles process management, progress tracking, and exposes common transcoding options as typed methods. Aimed at Go developers who need to run ffmpeg jobs without shelling out manually and parsing stderr themselves. Covers the most common use cases like HLS streaming, thumbnail extraction, and basic transcoding.
- Progress reporting via channel is genuinely useful — it parses ffmpeg's stderr output and gives you structured progress updates without you writing the parsing code
- The transcoder API is clean: method chaining on MediaFile to set codec, bitrate, resolution etc. maps naturally to ffmpeg flags without exposing raw flag strings everywhere
- Cross-platform binary discovery (Linux/macOS/Windows) with a config override means it works in both system-installed and bundled ffmpeg setups
- E2E tests with a real fixture file (input.3gp) rather than mocking the binary, so the tests actually validate the ffmpeg interaction
- The MediaFile option coverage is incomplete — if you need anything beyond the ~30 wrapped flags (complex filter graphs, multi-input, stream mapping), you're stuck and there's no escape hatch to pass arbitrary extra args
- Concatenation and subtitles are listed as not implemented in the README and have apparently never been added despite the repo existing for years
- No context.Context support on the transcoding call, so you can't hook into Go's cancellation/timeout machinery cleanly — you'd have to kill the process yourself
- Only one test fixture (a 3gp file) and the e2e tests require ffmpeg to be installed on the test machine with no CI skip/mock path, making this fragile in clean CI environments