// the find
nathanbabcock/ffmpeg-sidecar
Wrap a standalone FFmpeg binary in an intuitive Iterator interface. 🏍
ffmpeg-sidecar wraps the FFmpeg CLI binary in a Rust Iterator interface, letting you read decoded video as raw RGB frames in a for loop without linking against libavcodec. It's aimed at Rust developers who need video I/O but don't want to wrestle with the FFmpeg C bindings or their build system.
The Iterator abstraction is genuinely well-designed — filtering frames, logs, and progress events from the same stream is clean and idiomatic Rust. Parsing structured progress and metadata out of FFmpeg's stderr (rather than making callers grep log strings) is real work that saves everyone downstream. The auto-download story is practical: shipping a 100MB binary at runtime beats a broken build on Windows every time. The examples directory is dense and actually covers non-trivial cases like H265 transcode, named pipes, and Whisper integration.
Spawning a subprocess per operation is a real cost if you're processing thousands of short clips — there's no connection pooling or process reuse. The blocking iterator means you're stuck on a thread per FFmpeg process; the async fork is a separate project that may lag behind. Auto-downloading a binary from the internet at runtime is a supply chain risk that deserves more discussion in the docs than it gets. The log parser is necessarily fragile — FFmpeg's stderr format is undocumented and has changed across versions, so any major FFmpeg update can silently break progress parsing.