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 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.
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.
CodecConfig
Codec-specific configuration.
FilterNode
A single filter node in a filter chain.
H264Config
H.264/AVC specific configuration.
HwAccelConfig
Hardware acceleration configuration.
HwEncoder
Hardware encoder information.
JobQueue
Job queue for managing multiple transcode jobs.
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.
H264Profile
H.264 profiles.
HwAccelType
Hardware acceleration types supported.
HwFeature
Hardware encoder features.
JobPriority
Priority levels for transcode jobs.
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§

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.