Skip to main content

Crate oximedia_transcode

Crate oximedia_transcode 

Source
Expand description

High-level transcoding pipeline for OxiMedia.

This crate provides a comprehensive, professional-grade transcoding system with:

§Features

§High-Level API

  • Simple One-Liner Transcoding - Quick transcoding with sensible defaults
  • Preset Library - Industry-standard presets for major platforms
  • Fluent Builder API - Complex workflows with readable code

§Professional Features

  • Multi-Pass Encoding - 2-pass and 3-pass encoding for optimal quality
  • ABR Ladder Generation - Adaptive bitrate encoding for HLS/DASH
  • Parallel Encoding - Encode multiple outputs simultaneously
  • Hardware Acceleration - Auto-detection and use of GPU encoders
  • Progress Tracking - Real-time progress with ETA estimation
  • Audio Normalization - Automatic loudness normalization (EBU R128/ATSC A/85)
  • Quality Control - CRF, CBR, VBR, and constrained VBR modes
  • Subtitle Support - Burn-in or soft subtitle embedding
  • Chapter Markers - Preserve or add chapter information
  • Metadata Preservation - Copy or map metadata fields

§Job Management

  • Job Queuing - Queue multiple transcode jobs
  • Priority Scheduling - High, normal, and low priority jobs
  • Resource Management - CPU/GPU limits and throttling
  • Error Recovery - Automatic retry logic with exponential backoff
  • Validation - Input/output validation before processing

§Supported Platforms

§Streaming Platforms

  • YouTube - 1080p60, 4K, VP9/H.264 variants
  • Vimeo - Professional quality presets
  • Twitch - Live streaming optimized
  • Social Media - Instagram, TikTok, Twitter optimized

§Broadcast

  • ProRes Proxy - High-quality editing proxies
  • DNxHD Proxy - Avid editing proxies
  • Broadcast HD/4K - Broadcast-ready deliverables

§Streaming Protocols

  • HLS - HTTP Live Streaming ABR ladders
  • DASH - MPEG-DASH ABR ladders
  • CMAF - Common Media Application Format

§Archive

  • Lossless - FFV1 lossless preservation
  • High Quality - VP9/AV1 archival encoding

§Quick Start

§Simple Transcoding

use oximedia_transcode::{Transcoder, presets};

// Simple transcode to YouTube 1080p
Transcoder::new()
    .input("input.mp4")
    .output("output.mp4")
    .preset(presets::youtube::youtube_1080p())
    .transcode()
    .await?;

§Complex Pipeline

use oximedia_transcode::{TranscodePipeline, Quality};
use oximedia_transcode::presets::streaming;

// Create HLS ABR ladder with multiple qualities
TranscodePipeline::builder()
    .input("source.mp4")
    .abr_ladder(streaming::hls_ladder())
    .audio_normalize(true)
    .quality(Quality::High)
    .parallel_encode(true)
    .progress(|p| {
        println!("Progress: {}% - ETA: {:?}", p.percent, p.eta);
    })
    .execute()
    .await?;

§Multi-Pass Encoding

use oximedia_transcode::{Transcoder, MultiPassMode};

// 2-pass encoding for optimal quality
Transcoder::new()
    .input("input.mp4")
    .output("output.webm")
    .multi_pass(MultiPassMode::TwoPass)
    .target_bitrate(5_000_000) // 5 Mbps
    .transcode()
    .await?;

Re-exports§

pub use codec_profile::CodecTunePreset;
pub use stream_copy::CopyDecision;
pub use stream_copy::StreamCopyConfig;
pub use stream_copy::StreamCopyDetector;
pub use stream_copy::StreamCopyMode;
pub use stream_copy::StreamInfo;
pub use stream_copy::StreamType;
pub use concat_transcode::AnnotatedSegment;
pub use concat_transcode::ConcatPlan;
pub use concat_transcode::ConcatStep;
pub use concat_transcode::MixedSourceConcatenator;
pub use concat_transcode::SourceProperties;
pub use frame_pipeline::wire_hdr_into_pipeline;
pub use frame_pipeline::AudioFrameOp;
pub use frame_pipeline::FramePipelineConfig;
pub use frame_pipeline::FramePipelineExecutor;
pub use frame_pipeline::FramePipelineResult;
pub use frame_pipeline::VideoFrameOp;
pub use pipeline_context::FilterGraph;
pub use pipeline_context::Frame;
pub use pipeline_context::FrameDecoder;
pub use pipeline_context::FrameEncoder;
pub use pipeline_context::HdrPassthroughConfig;
pub use pipeline_context::HdrSeiInjector;
pub use pipeline_context::PassStats;
pub use pipeline_context::TranscodeContext;
pub use pipeline_context::TranscodeStats;
pub use segment_encoder::ParallelSegmentEncoder;
pub use segment_encoder::ParallelSegmentResult;
pub use segment_encoder::ParallelSegmentStats;
pub use segment_encoder::SegmentSpec;
pub use thumbnail::format_vtt_time;
pub use thumbnail::SpriteSheet;
pub use thumbnail::SpriteSheetConfig;
pub use transcode_preset::TranscodeEstimator;
pub use transcode_preset::TranscodePreset;
pub use validation::InputValidator;
pub use validation::OutputValidator;
pub use validation::ValidationError;

Modules§

ab_compare
A/B quality comparison for evaluating transcode settings.
abr_ladder
Adaptive bitrate ladder generation, per-rung settings, and ABR rules.
adaptive_bitrate
Adaptive bitrate ladder generation for HLS/DASH streaming.
audio_channel_map
Audio channel layout mapping and transcode parameters.
audio_only
Audio-only transcoding mode.
audio_transcode
Audio-specific transcoding configuration and utilities.
benchmark
TranscodeBenchmark — compare speed and quality metrics across codec configurations.
bitrate_control
Bitrate control and rate estimation for transcoding pipelines.
bitrate_estimator
Bitrate estimation from QP/CRF, resolution, and frame-rate parameters.
burn_subs
Subtitle and caption burn-in transcoding.
codec_mapping
Container-to-codec mapping and codec compatibility utilities.
codec_profile
Codec profile definitions and selector utilities.
concat_transcode
Concatenation and joining of multiple media sources. Concatenation and joining of multiple media sources into a single output.
crf_optimizer
CRF/quality optimizer for finding optimal encoding parameters.
crop_scale
Crop and scale pipeline for video transcoding.
encoding_log
Structured log for encoding sessions.
examples
Comprehensive examples for common transcoding scenarios.
frame_pipeline
Frame-level pipeline execution connecting decoder → filter graph → encoder.
frame_stats
Per-frame statistics collection for transcoding analysis.
frame_trim
Frame-accurate trim and cut support for the transcoding pipeline.
hdr_passthrough
HDR metadata passthrough and conversion for the transcode pipeline.
hwaccel
Rate-distortion analysis for optimal encoding parameter selection. Hardware acceleration configuration and simulation.
output_verify
Output file verification: constraint checking for transcode deliverables.
per_scene_encode
Per-scene adaptive encoding parameters.
pipeline_context
Frame-level transcode context: decoder/filter-graph/encoder pipeline.
presets
Industry-standard presets for common transcoding scenarios.
quality_ladder_gen
Automatic quality ladder generation for ABR streaming.
rate_distortion
Rate-distortion analysis for optimal encoding parameter selection.
resolution_select
Resolution tier selection for adaptive transcoding.
scene_cut
Scene cut detection for smart encoding decisions.
segment_encoder
Segment-based encoding for HLS and DASH streaming.
segment_transcoder
Segment-based transcoding for parallel and distributed workloads.
stage_graph
Pipeline stage graph for transcoding workflows.
stream_copy
Watermark and graphic overlay embedding during transcoding. Stream copy (passthrough) mode for transcoding.
thumbnail
Thumbnail and preview image generation.
transcode_metrics
Real-time transcoding metrics collection and reporting.
transcode_preset
High-level TranscodePreset enum and TranscodeEstimator for real-world workflows.
transcode_profile
TranscodeProfile — shareable encoding configuration with JSON import/export.
transcode_session
Transcode session tracking with lifecycle management.
two_pass
Two-pass encoding management.
utils
Utility functions and helpers for transcode operations.
validation
Input and output validation for transcode operations.
watch_folder
Watch folder automation for directory-based transcode monitoring.
watermark_overlay
Watermark and graphic overlay embedding during transcoding.

Structs§

AbrLadder
ABR ladder configuration.
AbrLadderBuilder
Builder for creating custom ABR ladders.
AbrRung
A single rung in an ABR ladder.
AudioFilter
Audio filter chain.
AudioNormalizer
Audio normalizer for applying loudness normalization.
Av1Config
AV1 specific configuration.
Av1TileConfig
Configuration for AV1 tile-based parallel encoding.
Av1TileParallelEncoder
Encoder that splits video frames into tiles and encodes each tile in parallel using rayon.
Av1TileStats
Statistics produced by a single AV1 tile encode pass.
CodecConfig
Codec-specific configuration.
Ffv1Config
FFV1 lossless video codec configuration.
FilterNode
A single filter node in a filter chain.
FlacConfig
FLAC lossless audio codec configuration.
H264Config
H.264/AVC specific configuration.
HwAccelConfig
Hardware acceleration configuration.
HwEncoder
Hardware encoder information.
JobQueue
Job queue for managing multiple transcode jobs.
JxlConfig
JPEG-XL still image encoding configuration.
LoudnessTarget
Loudness target configuration.
MultiPassConfig
Multi-pass encoding configuration.
MultiPassEncoder
Multi-pass encoder controller.
NormalizationConfig
Normalization configuration.
OpusConfig
Opus audio codec configuration.
ParallelConfig
Configuration for parallel encoding.
ParallelEncodeBuilder
Builder for creating parallel encode jobs.
ParallelEncoder
Parallel encoder for processing multiple outputs simultaneously.
Pipeline
Transcoding pipeline orchestrator.
PresetConfig
Preset configuration for common transcoding scenarios.
ProgressInfo
Progress information for a transcode operation.
ProgressTracker
Progress tracker for transcode operations.
QualityConfig
Quality configuration for encoding.
TranscodeBuilder
Fluent builder for creating transcode configurations.
TranscodeConfig
Transcoding configuration.
TranscodeJob
A transcode job with state tracking.
TranscodeJobConfig
Configuration for a transcode job.
TranscodeOutput
Output from a successful transcode operation.
TranscodePipeline
Builder for transcoding pipelines.
Transcoder
Main transcoding interface with simple API.
VideoFilter
Video filter chain.
Vp9Config
VP9 specific configuration.

Enums§

AbrStrategy
Strategy for generating ABR ladder rungs.
Av1Usage
AV1 usage modes.
ChapterMode
Chapter handling modes.
Ffv1Coder
FFV1 entropy coder selection.
Ffv1Level
FFV1 lossless codec levels.
H264Profile
H.264 profiles.
HwAccelType
Hardware acceleration types supported.
HwFeature
Hardware encoder features.
JobPriority
Priority levels for transcode jobs.
JxlEffort
JPEG-XL encoding effort (speed/compression tradeoff).
LoudnessStandard
Loudness measurement standards.
MultiPassMode
Multi-pass encoding mode.
OpusApplication
Opus application types.
PipelineStage
Pipeline stage in the transcoding workflow.
QualityMode
Quality preset levels.
QualityPreset
Quality preset configurations.
RateControlMode
Rate control modes for video encoding.
SubtitleMode
Subtitle handling modes.
TranscodeError
Errors that can occur during transcoding operations.
TranscodeStatus
Status of a transcode job.
TuneMode
Tuning modes for different content types.

Functions§

assemble_av1_tile_bitstream
Assembles per-tile bitstreams into a single frame bitstream.
codec_config_from_quality
Creates codec configuration from quality mode.
detect_available_hw_accel
Detects available hardware acceleration on the system.
detect_best_hw_accel_for_codec
Detects the best hardware acceleration for a given codec.
get_available_encoders
Gets information about all available hardware encoders.

Type Aliases§

ProgressCallback
Callback function for progress updates.
Result
Result type for transcoding operations.