#ffmpeg #wrapper #cli #easy #execute-command #essi

essi-ffmpeg

易于使用的 FFmpeg CLI 包装器

3 个不稳定版本

0.2.0 2024年2月26日
0.1.1 2024年2月26日
0.1.0 2024年2月26日

#66多媒体

Download history 13/week @ 2024-04-05 11/week @ 2024-04-19 19/week @ 2024-04-26 40/week @ 2024-05-24 112/week @ 2024-05-31 109/week @ 2024-06-07 166/week @ 2024-06-14 166/week @ 2024-06-21 100/week @ 2024-06-28 136/week @ 2024-07-05 96/week @ 2024-07-12 77/week @ 2024-07-19

每月411次下载

自定义许可

19KB
275

essi-ffmpeg

轻松使用 FFmpeg,包括下载 FFmpeg 二进制文件、执行 FFmpeg 命令和处理 I/O 任务。提供了一个简化的界面来利用 FFmpeg 的功能。

功能

  • 自动 FFmpeg 下载:如果在环境中找不到 FFmpeg,将自动下载适合您平台的 FFmpeg 二进制文件。
  • 灵活的命令执行:轻松构建和执行 FFmpeg 命令以处理各种多媒体处理任务。

入门指南

添加到您的项目

essi-ffmpeg 添加到您的 Cargo.toml 依赖项

[dependencies]
essi-ffmpeg = { git = "https://github.com/MrAdhit/essi-ffmpeg" }

基本用法

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(())
}

示例

此包包含几个示例,展示了不同的使用场景

  • basic_usage.rs:展示了如何使用此库的基本用法。
  • muxing_hardware_accelerated.rs:演示了带有硬件加速的复用。
  • muxing_multiple_output.rs:展示了如何复用多个输出。
  • override_ffmpeg_download_directory.rs:说明了如何覆盖默认的 FFmpeg 下载目录。
  • windows_screen_recorder.rs:提供了一个在 Windows 上使用 FFmpeg 的简单屏幕录制器的示例。

要运行示例,请使用

cargo run --example example_name

贡献

欢迎贡献!以下是一些您可以贡献的方式

  • 报告问题:提交找到的错误或记录对 essi-ffmpeg 项目的功能请求。
  • 提交拉取请求:审查开放 PR,并提交您自己的 PR。

许可

本项目采用 MIT 许可。有关详细信息,请参阅 LICENSE 文件。

依赖项

~6–18MB
~259K SLoC