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
ProResProxy - High-quality editing proxiesDNxHDProxy - 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 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_
transcode - Audio-specific transcoding configuration and utilities.
- 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_
stats - Per-frame statistics collection for transcoding analysis.
- output_
verify - Output file verification: constraint checking for transcode deliverables.
- presets
- Industry-standard presets for common transcoding scenarios.
- rate_
distortion - Rate-distortion analysis for optimal encoding parameter selection. 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.
- thumbnail
- Thumbnail and preview image generation.
- transcode_
metrics - Transcoding performance metrics collection and reporting.
- 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.
- watermark_
overlay - Watermark and graphic overlay embedding during transcoding. Watermark and graphic overlay embedding during transcoding.
Structs§
- AbrLadder
- ABR ladder configuration.
- AbrLadder
Builder - Builder for creating custom ABR ladders.
- AbrRung
- A single rung in an ABR ladder.
- Audio
Filter - Audio filter chain.
- Audio
Normalizer - Audio normalizer for applying loudness normalization.
- Av1Config
- AV1 specific configuration.
- Codec
Config - Codec-specific configuration.
- Filter
Node - A single filter node in a filter chain.
- H264
Config - H.264/AVC specific configuration.
- HwAccel
Config - Hardware acceleration configuration.
- HwEncoder
- Hardware encoder information.
- JobQueue
- Job queue for managing multiple transcode jobs.
- Loudness
Target - Loudness target configuration.
- Multi
Pass Config - Multi-pass encoding configuration.
- Multi
Pass Encoder - Multi-pass encoder controller.
- Normalization
Config - Normalization configuration.
- Opus
Config - Opus audio codec configuration.
- Parallel
Config - Configuration for parallel encoding.
- Parallel
Encode Builder - Builder for creating parallel encode jobs.
- Parallel
Encoder - Parallel encoder for processing multiple outputs simultaneously.
- Pipeline
- Transcoding pipeline orchestrator.
- Preset
Config - Preset configuration for common transcoding scenarios.
- Progress
Info - Progress information for a transcode operation.
- Progress
Tracker - Progress tracker for transcode operations.
- Quality
Config - Quality configuration for encoding.
- Transcode
Builder - Fluent builder for creating transcode configurations.
- Transcode
Config - Transcoding configuration.
- Transcode
Job - A transcode job with state tracking.
- Transcode
JobConfig - Configuration for a transcode job.
- Transcode
Output - Output from a successful transcode operation.
- Transcode
Pipeline - Builder for transcoding pipelines.
- Transcoder
- Main transcoding interface with simple API.
- Video
Filter - Video filter chain.
- Vp9Config
- VP9 specific configuration.
Enums§
- AbrStrategy
- Strategy for generating ABR ladder rungs.
- Av1Usage
- AV1 usage modes.
- Chapter
Mode - Chapter handling modes.
- H264
Profile - H.264 profiles.
- HwAccel
Type - Hardware acceleration types supported.
- HwFeature
- Hardware encoder features.
- JobPriority
- Priority levels for transcode jobs.
- Loudness
Standard - Loudness measurement standards.
- Multi
Pass Mode - Multi-pass encoding mode.
- Opus
Application - Opus application types.
- Pipeline
Stage - Pipeline stage in the transcoding workflow.
- Quality
Mode - Quality preset levels.
- Quality
Preset - Quality preset configurations.
- Rate
Control Mode - Rate control modes for video encoding.
- Subtitle
Mode - Subtitle handling modes.
- Transcode
Error - Errors that can occur during transcoding operations.
- Transcode
Status - Status of a transcode job.
- Tune
Mode - Tuning modes for different content types.
Functions§
- 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§
- Progress
Callback - Callback function for progress updates.
- Result
- Result type for transcoding operations.