3 unstable releases
0.2.0 | Feb 26, 2024 |
---|---|
0.1.1 | Feb 26, 2024 |
0.1.0 | Feb 26, 2024 |
#116 in Multimedia
276 downloads per month
Used in libobs-sources
19KB
275 lines
essi-ffmpeg
Use FFmpeg easily, includes downloading FFmpeg binaries, executing FFmpeg commands, and handling I/O processing tasks. Provides a simplified interface for utilizing the power of FFmpeg.
Features
- Automatic FFmpeg Download: Automatically download FFmpeg binaries suitable for your platform if FFmpeg is not found in the environment.
- Flexible Command Execution: Build and execute FFmpeg commands with ease for handling various multimedia processing tasks.
Getting Started
Adding to Your Project
Add essi-ffmpeg
to your Cargo.toml
dependencies:
[dependencies]
essi-ffmpeg = { git = "https://github.com/MrAdhit/essi-ffmpeg" }
Basic Usage
use essi_ffmpeg::FFmpeg;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Automatically download FFmpeg if not found
if let Some((handle, mut progress)) = FFmpeg::auto_download().await.unwrap() {
tokio::spawn(async move {
while let Some(state) = progress.recv().await {
println!("{:?}", state);
}
});
handle.await.unwrap().unwrap();
} else {
println!("FFmpeg is downloaded, using existing installation");
}
// Build and execute an FFmpeg command
let mut ffmpeg = FFmpeg::new()
.stderr(std::process::Stdio::inherit())
.input_with_file("input_file.flv".into()).done()
.output_as_file("output_file.mp4".into()).done()
.start().unwrap();
ffmpeg.wait().unwrap();
Ok(())
}
Examples
This crate includes several examples demonstrating different use cases:
basic_usage.rs
: Shows the basic usage of using this library.muxing_hardware_accelerated.rs
: Demonstrates muxing with hardware acceleration.muxing_multiple_output.rs
: Shows how to mux multiple outputs.override_ffmpeg_download_directory.rs
: Illustrates how to override the default FFmpeg download directory.windows_screen_recorder.rs
: Provides an example of a simple screen recorder on Windows using FFmpeg.
To run an example, use:
cargo run --example example_name
Contributing
Contributions are welcome! Here are several ways you can contribute:
- Report Issues: Submit bugs found or log feature requests for the
essi-ffmpeg
project. - Submit Pull Requests: Review open PRs, and submit your own PRs.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Dependencies
~6–18MB
~250K SLoC