finds.dev← search

// the find

BabitMF/bmf

★ 1,021 · C++ · Apache-2.0 · updated Mar 2026

Cross-platform, customizable multimedia/video processing framework. With strong GPU acceleration, heterogeneous design, multi-language support, easy to use, multi-framework compatible and high performance, the framework is ideal for transcoding, AI inference, algorithm integration, live video streaming, and more.

BMF is ByteDance's internal video processing framework, open-sourced after handling 2B+ videos/day in production. It sits on top of FFmpeg and adds a graph-based pipeline abstraction with Python, Go, and C++ APIs, plus first-class GPU acceleration via CUDA/TensorRT. The target user is someone doing high-throughput video transcoding or AI inference on video at scale who wants more than raw FFmpeg CLI scripting but less than building a custom pipeline from scratch.

Battle-tested in ByteDance production at serious scale — this isn't a toy, the scheduler and GPU pipeline have been stress-tested in ways most open-source alternatives haven't. The data conversion layer is genuinely useful: zero-copy or near-zero-copy bridges between FFmpeg AVFrame, PyTorch tensors, NumPy arrays, and CUDA device memory without writing glue code yourself. Dynamic graph support means you can add/remove streams at runtime, which is rare and makes live broadcasting use cases tractable. The module system is clean — wrapping a Python AI model (DeOldify, Real-ESRGAN) as a BMF module takes ~100 lines and slots into the same scheduler as the C++ decoder.

The C++ build system (CMake with a sprawling 3rd_party dependency tree) is a serious onboarding tax — there's no pre-built binary that just works, and the Colab notebooks paper over this by running in a pre-configured environment. Community is thin: 1K stars and 104 forks after 4 years suggests limited adoption outside ByteDance; bug reports may sit. The Go API is clearly a second-class citizen — demos and tests skew heavily Python/C++, and Go bindings seem to be maintained out of obligation rather than real usage. BMFLite (the mobile variant) is documented separately and the two codebases don't share a clear release cadence, so it's unclear which one to trust for new features.

View on GitHub → Homepage ↗

// 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 →