rivet-transcoder 0.1.0

Modular GPU-accelerated video transcoding library, CLI, and HTTP/IPC service (AV1 + Opus, MP4/CMAF-HLS). Imported as `rivet`; CLI is `rivet`.
Documentation
rivet-transcoder-0.1.0 has been yanked.

rivet

A modular, GPU-accelerated video transcoding library.

rivet bundles two lower-level crates — [codec] (decode / encode / colorspace / probe) and [container] (demux / mux / CMAF / HLS) — behind a small, ergonomic facade for the common case: take an arbitrary input file and produce a single AV1 + Opus MP4.

Output policy

The output codec is AV1 (video) + Opus / AAC passthrough (audio) muxed into MP4. This is a deliberate, royalty-clean target — see the project README. Input may be any container/codec the [container] and [codec] crates can demux + decode (H.264, HEVC, VP8/VP9, AV1, MPEG-2, MPEG-4, ProRes; MP4/MOV/MKV/WebM/MPEG-TS/AVI).

Quick start

// Transcode a file on disk to an AV1/Opus MP4.
let outcome = rivet::transcode_file("input.mkv", "output.mp4")?;
println!("{} frames, {} bytes out", outcome.frames_processed, outcome.output_bytes.len());

// Or inspect an input without transcoding it.
let info = rivet::probe_file("input.mkv")?;
println!("{}x{} {} @ {:.3} fps", info.width, info.height, info.video_codec, info.frame_rate);
# Ok::<(), anyhow::Error>(())

Lower-level access

The component crates are re-exported for callers that need finer control than the facade offers (custom encoder configs, segment-level CMAF output, per-frame access, etc.):

use rivet::codec::encode::EncoderConfig;
use rivet::container::mux::Av1Mp4Muxer;