Skip to main content

Crate ff_pipeline

Crate ff_pipeline 

Source
Expand description

§ff-pipeline

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

This crate wires together ff-decode, ff-filter, and ff-encode into a single high-level API. All unsafe FFmpeg internals remain encapsulated in the underlying crates; users of ff-pipeline never need to write unsafe code.

§Features

  • Single-call transcode: open → filter → encode in one Pipeline::run()
  • Progress callbacks: real-time frame-count and elapsed-time updates
  • Cancellation: returning false from the progress callback aborts the pipeline
  • Multi-input concatenation: pass multiple input paths to concatenate clips

§Usage

use ff_pipeline::{Pipeline, EncoderConfig};
use ff_format::{VideoCodec, AudioCodec};
use ff_encode::BitrateMode;

let config = EncoderConfig::builder()
    .video_codec(VideoCodec::H264)
    .audio_codec(AudioCodec::Aac)
    .bitrate_mode(BitrateMode::Cbr(4_000_000))
    .resolution(1280, 720)
    .framerate(30.0)
    .build();

Pipeline::builder()
    .input("input.mp4")
    .output("output.mp4", config)
    .on_progress(|p| {
        println!("frame={} elapsed={:?}", p.frames_processed, p.elapsed);
        true // return false to cancel
    })
    .build()?
    .run()?;

§Module Structure

Re-exports§

pub use audio_pipeline::AudioPipeline;
pub use error::PipelineError;
pub use pipeline::EncoderConfig;
pub use pipeline::EncoderConfigBuilder;
pub use pipeline::Pipeline;
pub use pipeline::PipelineBuilder;
pub use progress::Progress;
pub use progress::ProgressCallback;
pub use thumbnail::ThumbnailPipeline;
pub use video_pipeline::VideoPipeline;

Modules§

audio_pipeline
Audio-only transcoding pipeline.
error
Error types for pipeline operations.
pipeline
Pipeline builder and runner.
progress
Pipeline progress tracking.
thumbnail
Thumbnail extraction pipeline.
video_pipeline
Video-only transcoding pipeline.