2 releases
| new 0.1.1 | Mar 10, 2026 |
|---|---|
| 0.1.0 | Mar 8, 2026 |
#171 in Video
Used in 10 crates
(9 directly)
9MB
204K
SLoC
oximedia-transcode
High-level transcoding pipeline for OxiMedia with professional features and industry-standard presets.
Part of the oximedia workspace — a comprehensive pure-Rust media processing framework.
Version: 0.1.1 — 2026-03-10
Features
- Simple One-Liner API - Quick transcoding with sensible defaults
- Industry-Standard Presets - YouTube, Vimeo, broadcast, streaming, and more
- 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
- 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
- Hardware Acceleration - Auto-detection and use of GPU encoders
- Filter Chains - Video and audio filter pipelines
- Codec Optimization - Codec-specific configurations (H.264, VP9, AV1, Opus)
- Job Management - Queue, schedule, and prioritize transcode jobs
- Subtitle Burn-in - Burn subtitles into video or embed as separate stream
- Scene Cut Detection - Detect scene boundaries for optimal segmentation
- Rate-Distortion Analysis - Optimal encoding parameter selection
- Segment Encoding - Encode media in independent segments
- AB Comparison - Compare two encoded outputs for quality assessment
- Watermark Overlay - Embed graphics or text during transcoding
- Concat Transcode - Join multiple media sources during transcode
Usage
Add to your Cargo.toml:
[dependencies]
oximedia-transcode = "0.1.1"
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?;
use oximedia_transcode::{TranscodePipeline, MultiPassMode, QualityMode};
// Create HLS ABR ladder with multiple qualities
TranscodePipeline::builder()
.input("source.mp4")
.abr_ladder(presets::streaming::hls_ladder())
.audio_normalize(true)
.quality(QualityMode::High)
.parallel_encode(true)
.multipass(MultiPassMode::TwoPass)
.progress(|p| {
println!("Progress: {}% - ETA: {:?}", p.percent, p.eta);
})
.execute()
.await?;
Supported Platforms
Streaming
- YouTube (1080p60, 4K, VP9/H.264)
- Vimeo (Professional quality)
- Twitch (Live streaming)
- Social Media (Instagram, TikTok, Twitter)
Broadcast
- ProRes Proxy (HD/4K)
- DNxHD Proxy (Avid)
- EBU R128 Compliant
- ATSC A/85 Compliant
Streaming Protocols
- HLS (HTTP Live Streaming)
- DASH (MPEG-DASH)
- CMAF (Common Media Application Format)
Archive
- Lossless/Near-Lossless (FFV1)
- VP9/AV1 Archival
API Overview
Transcoder— Simple fluent API: input(), output(), preset(), video_codec(), audio_codec(), multi_pass(), quality(), transcode()TranscodeConfig— Configuration: input, output, codecs, bitrates, resolution, frame rate, subtitle/chapter modesTranscodeOutput— Result: output path, file size, duration, bitrates, encoding time, speed factorTranscodePipeline— Complex pipeline builder with ABR, normalization, parallel encodingAbrLadder/AbrRung/AbrStrategy— Adaptive bitrate ladder constructionMultiPassMode/MultiPassEncoder— Two-pass and three-pass encodingQualityMode/QualityPreset/RateControlMode— Quality and rate controlHwAccelType/HwEncoder/HwAccelConfig— Hardware acceleration managementAudioNormalizer/LoudnessStandard/LoudnessTarget— Audio loudness normalizationParallelEncoder/ParallelConfig— Concurrent multi-output encodingJobQueue/TranscodeJob/JobPriority/TranscodeStatus— Job managementProgressInfo/ProgressCallback/ProgressTracker— Real-time progressPresetConfig— Preset container for video/audio codec, bitrate, resolution, frame rateCodecConfig/H264Config/Vp9Config/Av1Config/OpusConfig— Codec-specific settingsAudioFilter/VideoFilter/FilterNode— Filter chain nodesSubtitleMode/ChapterMode— Subtitle and chapter handlingTranscodeError/Result— Error and result types- Modules:
ab_compare,abr_ladder,adaptive_bitrate,audio_channel_map,audio_transcode,bitrate_control,bitrate_estimator,burn_subs,codec_mapping,codec_profile,concat_transcode,crop_scale,crf_optimizer,encoding_log,examples,frame_stats,output_verify,presets,rate_distortion,resolution_select,scene_cut,segment_encoder,segment_transcoder,stage_graph,thumbnail,transcode_metrics,transcode_session,two_pass,utils,validation,watermark_overlay
License
Apache-2.0 — Copyright 2024-2026 COOLJAPAN OU (Team Kitasan)
Dependencies
~25MB
~369K SLoC