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
falsefrom 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.