Skip to content

MrAdhit/essi-ffmpeg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Easy FFmpeg CLI wrapper

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages