1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//! # 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
//!
//! ```no_run
//! // 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;
//! ```
/// HTTP transcode API (opt-in `server` feature).
// Re-export the component crates so downstream consumers can depend on a
// single `rivet` crate and still reach the full lower-level API.
pub use codec;
pub use container;
// Flatten the most common entry points to the crate root.
pub use ;
pub use ;
pub use standard_ladder;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;