ff-pipeline 0.2.0

Unified decode-filter-encode pipeline for the ff-* crate family
Documentation

ff-pipeline

Unified decode-filter-encode pipeline — no unsafe code required.

Coming Soon

⚠️ Coming Soon — This crate is a placeholder and not yet implemented. The API is under design. Do not use in production.

Overview

ff-pipeline will provide a high-level Pipeline type that connects ff-decode, ff-filter, and ff-encode into a single, progress-aware transcode pipeline.

Design Principles

All public APIs are safe. Users never need to write unsafe code. Unsafe FFmpeg internals are fully encapsulated within the underlying crates.

Planned Features

  • Unified pipeline: Connect decode → filter → encode in a single builder call
  • Progress tracking: on_progress callback with percent, elapsed, and ETA
  • Cancellation: Stop a running pipeline via the progress callback
  • Multi-input: Concatenate multiple input files
  • Parallel thumbnails: ThumbnailPipeline with optional rayon feature

Planned Usage

use ff_pipeline::Pipeline;

let pipeline = Pipeline::builder()
    .input("input.mp4")
    .output("output.mp4", encoder_config)
    .on_progress(|p| println!("{:.1}%", p.percent()))
    .build()?;

pipeline.run()?;

Minimum Supported Rust Version

Rust 1.93.0 or later (edition 2024).

Related Crates

  • ff-decode — Video/audio decoding
  • ff-filter — Filter graph operations
  • ff-encode — Video/audio encoding
  • ff-stream — HLS/DASH streaming output
  • ff — Facade crate (re-exports all)

License

MIT OR Apache-2.0