#image-encoding #avif #av1 #heif #mux #pixel #bmff

avif-serialize

Minimal writer for AVIF header structure (MPEG/HEIF/MIAF/ISO-BMFF)

5 releases

0.8.2 Oct 16, 2024
0.8.1 Dec 6, 2022
0.7.7 Nov 27, 2022
0.7.6 Apr 7, 2022
0.6.4 Aug 29, 2020

#849 in Images

Download history 52210/week @ 2024-08-24 52395/week @ 2024-08-31 59180/week @ 2024-09-07 59469/week @ 2024-09-14 66300/week @ 2024-09-21 63719/week @ 2024-09-28 66585/week @ 2024-10-05 72858/week @ 2024-10-12 74917/week @ 2024-10-19 76953/week @ 2024-10-26 81157/week @ 2024-11-02 78601/week @ 2024-11-09 76806/week @ 2024-11-16 79003/week @ 2024-11-23 83353/week @ 2024-11-30 86289/week @ 2024-12-07

338,940 downloads per month
Used in 74 crates (via ravif)

BSD-3-Clause

40KB
961 lines

AVIF image serializer (muxer)

Minimal writer for AVIF header structure. This is lean, safe-Rust alternative to libavif. It creates the jungle of MPEG/HEIF/MIAF/ISO-BMFF "boxes" as appropriate for AVIF files. Supports alpha channel embedding.

Compatible with decoders in Chrome 85+, libavif v0.8.1, and Firefox 92. It's used in cavif and other encoders.

Together with rav1e, it allows pure-Rust AVIF image encoding.

Requirements

Usage

  1. Compress pixels using an AV1 encoder, such as rav1e. libaom works too.

  2. Call avif_serialize::serialize_to_vec(av1_data, None, width, height, 8)

See ravif crate sources for example usage.


lib.rs:

AVIF image serializer (muxer)

Usage

  1. Compress pixels using an AV1 encoder, such as rav1e. libaom works too.

  2. Call avif_serialize::serialize_to_vec(av1_data, None, width, height, 8)

See cavif for a complete implementation.

Dependencies

~69KB