Skip to main content

VideoEncoderBuilder

Struct VideoEncoderBuilder 

Source
pub struct VideoEncoderBuilder { /* private fields */ }
Expand description

Builder for constructing a VideoEncoder.

Created by calling VideoEncoder::create(). Call build() to open the output file and prepare for encoding.

§Examples

use ff_encode::{VideoEncoder, VideoCodec, Preset};

let mut encoder = VideoEncoder::create("output.mp4")
    .video(1920, 1080, 30.0)
    .video_codec(VideoCodec::H264)
    .preset(Preset::Medium)
    .build()?;

Implementations§

Source§

impl VideoEncoderBuilder

Source

pub fn video(self, width: u32, height: u32, fps: f64) -> Self

Configure video stream settings.

Source

pub fn video_codec(self, codec: VideoCodec) -> Self

Set video codec.

Source

pub fn bitrate_mode(self, mode: BitrateMode) -> Self

Set the bitrate control mode for video encoding.

Source

pub fn preset(self, preset: Preset) -> Self

Set encoding preset (speed vs quality tradeoff).

Source

pub fn hardware_encoder(self, hw: HardwareEncoder) -> Self

Set hardware encoder.

Source

pub fn audio(self, sample_rate: u32, channels: u32) -> Self

Configure audio stream settings.

Source

pub fn audio_codec(self, codec: AudioCodec) -> Self

Set audio codec.

Source

pub fn audio_bitrate(self, bitrate: u64) -> Self

Set audio bitrate in bits per second.

Source

pub fn container(self, container: Container) -> Self

Set container format explicitly (usually auto-detected from file extension).

Source

pub fn on_progress<F>(self, callback: F) -> Self
where F: FnMut(&Progress) + Send + 'static,

Set a closure as the progress callback.

Source

pub fn progress_callback<C: ProgressCallback + 'static>( self, callback: C, ) -> Self

Set a ProgressCallback trait object (supports cancellation).

Source

pub fn two_pass(self) -> Self

Enable two-pass encoding for more accurate bitrate distribution.

Two-pass encoding is video-only and is incompatible with audio streams.

Source

pub fn metadata(self, key: &str, value: &str) -> Self

Embed a metadata tag in the output container.

Calls av_dict_set on AVFormatContext->metadata before the header is written. Multiple calls accumulate entries; duplicate keys use the last value.

Source

pub fn chapter(self, chapter: ChapterInfo) -> Self

Add a chapter to the output container.

Allocates an AVChapter entry on AVFormatContext before the header is written. Multiple calls accumulate chapters in the order added.

Source

pub fn subtitle_passthrough( self, source_path: &str, stream_index: usize, ) -> Self

Copy a subtitle stream from an existing file into the output container.

Opens source_path, locates the stream at stream_index, and registers it as a passthrough stream in the output. Packets are copied verbatim using av_interleaved_write_frame without re-encoding.

stream_index is the zero-based index of the subtitle stream inside source_path. For files with a single subtitle track this is typically 0 (or whichever index ffprobe reports).

If the source cannot be opened or the stream index is invalid, a warning is logged and encoding continues without subtitles.

Source

pub fn build(self) -> Result<VideoEncoder, EncodeError>

Validate builder state and open the output file.

§Errors

Returns EncodeError if configuration is invalid, the output path cannot be created, or no suitable encoder is found.

Trait Implementations§

Source§

impl Debug for VideoEncoderBuilder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.