// the find
Ch00k/ffmpy
Pythonic interface for FFmpeg/FFprobe command line
A thin Python wrapper that translates dict-based input/output specs into FFmpeg/FFprobe command strings and shells out via subprocess. It handles multi-input/output scenarios and async execution. Aimed at developers who need to drive FFmpeg from Python without string-concatenating commands by hand.
The dict-based API maps cleanly to FFmpeg's input/output model — inputs and outputs are explicit, not positional string hacks. Async support via `run_async()` returns a `Popen` object so you can pipe stdin/stdout or run concurrent jobs. The codebase is tiny (essentially one file), meaning there's almost nothing to go wrong and it's easy to debug when FFmpeg misbehaves. Actively maintained with CI and a real test suite that uses a minimal Go-compiled FFmpeg stub rather than requiring a full FFmpeg install in CI.
It only builds command strings — there's zero help with parsing FFmpeg's output, probe results, or progress. You get a subprocess and good luck. No stream selection helpers or filter graph abstractions, so complex filtergraph commands still devolve into raw string arguments. With 521 stars it's clearly not the dominant choice in this space (ffmpeg-python has 10x the mindshare), which means fewer answered Stack Overflow questions when something breaks. The docs are sparse enough that edge cases like piping raw bytes or handling codec flags require reading FFmpeg docs directly anyway.