Crate rust_ffmpeg

Source
Expand description

Safe and idiomatic Rust wrapper for FFmpeg

This crate provides a high-level, safe interface to FFmpeg functionality, allowing you to transcode, filter, and manipulate multimedia files.

§Examples

§Simple conversion

use ffmpeg_rs::FFmpegBuilder;

// Convert a video file
let output = FFmpegBuilder::convert("input.mp4", "output.webm")
    .run()
    .await?;

§Complex transcoding

use ffmpeg_rs::{FFmpegBuilder, Input, Output};
use ffmpeg_rs::codec::presets;
use ffmpeg_rs::filter::VideoFilter;
use ffmpeg_common::{Codec, Duration};

let output = FFmpegBuilder::new()?
    .input(
        Input::new("input.mp4")
            .seek(Duration::from_secs(10))
            .duration(Duration::from_secs(30))
    )
    .output(
        Output::new("output.mp4")
            .video_codec_opts(presets::h264::youtube_1080p())
            .audio_codec(Codec::aac())
            .metadata("title", "My Video")
            .faststart()
    )
    .video_filter(VideoFilter::scale(1920, 1080))
    .overwrite()
    .on_progress(|p| {
        println!("Progress: {:?}", p);
    })
    .run()
    .await?;

Re-exports§

pub use builder::FFmpegBuilder;
pub use builder::FFmpegProcess;
pub use codec::CodecOptions;
pub use filter::AudioFilter;
pub use filter::FilterGraph;
pub use filter::VideoFilter;
pub use format::FormatOptions;
pub use input::ConcatInput;
pub use input::DeviceInput;
pub use input::Input;
pub use input::StreamInput;
pub use output::ImageSequenceOutput;
pub use output::MultiOutput;
pub use output::Output;
pub use stream::StreamDisposition;
pub use stream::StreamMap;
pub use stream::StreamMetadata;
pub use stream::StreamSelection;

Modules§

builder
codec
filter
format
input
output
prelude
Prelude module for convenient imports
stream

Structs§

Capabilities
Capabilities detection for FFmpeg tools
Codec
Codec name
Duration
Represents a duration in FFmpeg format (HH:MM:SS.MS or seconds)
MediaPath
Input or output file/URL
PixelFormat
Pixel format
Progress
Progress information from FFmpeg
SampleFormat
Audio sample format
Size
Represents a size in bytes with SI/binary prefixes support
Version
Version information for the FFmpeg suite

Enums§

Error
Main error type for FFmpeg suite operations
LogLevel
Log level for FFmpeg tools
StreamSpecifier
Represents a stream specifier in FFmpeg
StreamType
Stream type

Functions§

capabilities
Get FFmpeg capabilities
get_version
Get version information for an FFmpeg executable
is_available
Check if FFmpeg is available
version
Get FFmpeg version

Type Aliases§

Result
Result type for FFmpeg suite operations