finds.dev← search

// the find

Ch00k/ffmpy

★ 521 · Python · MIT · updated Nov 2025

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.

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 →