2 releases (1 stable)
Uses new Rust 2024
| 1.0.0 | Jul 19, 2025 |
|---|---|
| 0.1.0 | Jul 19, 2025 |
#342 in Video
Used in firefly_music
170KB
4K
SLoC
Safe and idiomatic Rust wrapper for FFmpeg
This crate provides a high-level, safe interface to FFmpeg functionality, allowing you to transcode, filter, and manipulate multimedia files.
Examples
Simple conversion
use ffmpeg_rs::FFmpegBuilder;
// Convert a video file
let output = FFmpegBuilder::convert("input.mp4", "output.webm")
.run()
.await?;
Complex transcoding
use ffmpeg_rs::{FFmpegBuilder, Input, Output};
use ffmpeg_rs::codec::presets;
use ffmpeg_rs::filter::VideoFilter;
use ffmpeg_common::{Codec, Duration};
let output = FFmpegBuilder::new()?
.input(
Input::new("input.mp4")
.seek(Duration::from_secs(10))
.duration(Duration::from_secs(30))
)
.output(
Output::new("output.mp4")
.video_codec_opts(presets::h264::youtube_1080p())
.audio_codec(Codec::aac())
.metadata("title", "My Video")
.faststart()
)
.video_filter(VideoFilter::scale(1920, 1080))
.overwrite()
.on_progress(|p| {
println!("Progress: {:?}", p);
})
.run()
.await?;
Dependencies
~12–21MB
~320K SLoC