Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A safe and ergonomic Rust interface for FFmpeg integration, designed for ease of use.
| Date | Stars |
|---|---|
| 2026-07-24 | 342 |
| 2026-07-25 | 342 |
| 2026-07-28 | 342 |
| 2026-07-30 | 342 |
| 2026-08-06 | 342 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
35.0
growth rate 0.00%/day
<p align="center">
<img src="https://raw.githubusercontent.com/YeautyYE/ez-ffmpeg/main/logo.jpg" alt="Logo" width="300">
</p>
<div align="center">
[](https://crates.io/crates/ez-ffmpeg)
[](https://docs.rs/ez-ffmpeg)
[](https://github.com/YeautyYE/ez-ffmpeg/blob/main/LICENSE-APACHE)
[](https://www.rust-lang.org/)
[](https://ffmpeg.org)
[](https://github.com/YeautyYE/ez-ffmpeg/actions/workflows/ci.yml?query=branch%3Amain+event%3Apush)
</div>
## Overview
**`ez-ffmpeg`** provides a **safe and ergonomic Rust interface for FFmpeg integration**, offering a familiar API that closely follows FFmpeg’s original logic and parameter structures.
This library:
- Exposes a safe public API; the internal FFmpeg FFI layer uses audited `unsafe` code
- Keeps the execution logic and parameter conventions as close to FFmpeg as possible
- Provides an intuitive and user-friendly API for media processing
- Supports custom Rust filters and flexible input/output handling
- Offers optional GPU-accelerated custom filters (wgpu) and a high-performance embedded RTMP server
- Ships one-shot recipes (thumbnails, GIF, HLS), typed detection/measurement APIs (black/silence/scene/loudness), and experimental frame/sample/packet export and WHIP/SRT streaming outputs (experimental APIs may change between minor releases) — see the [crate documentation](https://docs.rs/ez-ffmpeg) for details
By abstracting the complexity of the raw C API, `ez-ffmpeg` simplifies configuring media pipelines, performing transcoding and filtering, and inspecting media streams.
The transcoding pipeline is ported from FFmpeg's own `fftools/ffmpeg` sources — same stage semantics, same function names. Migrating a CLI command? See the [CLI-to-API mapping](https://docs.rs/ez-ffmpeg/latest/ez_ffmpeg/#cli-to-api-mapping).
## Version Requirements
- **Rust:** Version 1.80.0 or higher. The optional `wgpu` feature requires Rust 1.85+.
- **FFmpeg:** Version 7.1 through 8.x (one build links either major).
## Documentation
More information about this crate can be found in the [crate documentation](https://docs.rs/ez-ffmpeg).
## Quick Start
### Installation Prerequisites
#### macOS
```bash
brew install ffmpeg
```
#### Windows
```bash
# For dynamic linking
vcpkg install ffmpeg
# For static linking (requires 'static' feature)
vcpkg install ffmpeg:x64-windows-static-md
# Set VCPKG_ROOT environment variable
```
#### Linux
```bash
# The libav*-dev packages are FFmpeg's development libraries.
# Needs FFmpeg 7.1+ (Ubuntu 24.04 ships 6.x — see docs/INSTALL.md).
sudo apt install pkg-config clang libavcodec-dev libavformat-dev \
libavfilter-dev libavdevice-dev libavutil-dev libswscale-dev libswresample-dev
```
Static linking, building FFmpeg from source, and troubleshooting: see [docs/INSTALL.md](https://github.com/YeautyYE/ez-ffmpeg/blob/main/docs/INSTALL.md).
### Adding the Dependency
Add **ez-ffmpeg** to your project by including it in your `Cargo.toml`:
```toml
[dependencies]
ez-ffmpeg = "0.15"
```
### Basic Usage
Below is a basic example to get you started. Create or update your `main.rs` with the following code:
It runs the equivalent of `ffmpeg -i input.mp4 -vf "hue=s=0" output.mov`.
```rust
use ez_ffmpeg::FfmpegContext;
use ez_ffmpeg::FfmpegScheduler;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 1. Build the FFmpeg context
let context = FfmpegContext::builder()
.input("input.mp4")
.filter_desc("hue=s=0") // Example filter: desaturate (optional)
.output("output.mov")
Excerpt of 5,773 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:7d7b686e6f84244d, topic:gpu
matched fp:7d7b686e6f84244d, topic:tutorial