AV1 Bitstream Packaging for Progressive vs Byte-Range
AV1 video streams are packaged differently depending on whether they are delivered via progressive download or byte-range requests used in adaptive bitrate streaming. While both methods encapsulate AV1 Open Bitstream Units (OBUs) inside container formats like the ISO Base Media File Format (ISOBMFF/MP4), progressive downloads rely on a single, continuous file with a centralized metadata index, whereas byte-range delivery requires fragmented file structures, periodic index markers, and strictly aligned keyframe boundaries to allow dynamic, non-linear chunk fetching.
Progressive Download Packaging
In a progressive download workflow, the media is packaged as a monolithic file intended to be read sequentially from start to finish. The container structure is optimized to begin playback as soon as the initial data reaches the client.
- Metadata Placement (
moovatom): The file structure places the file-type box (ftyp) and the movie box (moov) at the very beginning of the file, preceding the media data (mdat). This is often referred to as "fast start" or Web-optimized layout. Themoovbox contains the AV1 configuration box (av1C), which stores the initial Sequence Header OBU and decoder configuration. - Sample Indexing: The
moovbox contains a complete set of static sample tables (stbl), mapping every frame's decode time, presentation time, size, and byte offset within the largemdatpayload. - Bitstream Flow: The AV1 OBUs reside linearly inside
a single, large
mdatcontainer. While clients can issue basic HTTP Range requests to scrub forward, the browser must first parse the entiremoovatom to calculate where those target sample byte offsets are located.
Byte-Range Request Packaging
Byte-range delivery—commonly used in DASH, HLS, and CMAF architectures—packages AV1 into fragmented MP4 (fMP4) structures. Here, playback involves fetching independent media chunks using byte-range headers or segmented URLs based on a manifest (MPD or M3U8).
- Split Initialization and Media: The bitstream is
decoupled. An initialization segment contains the
ftypandmoovboxes (includingav1C), establishing track parameters and decoder setup without any audio or video frames. This initialization block is requested once per stream or bitrate switch. - Fragmented Structures (
moof+mdat): Instead of one massivemdat, the video is chopped into short intervals (typically 2 to 6 seconds). Each interval consists of a Movie Fragment box (moof) followed immediately by its corresponding media data (mdat). Themoofcontains a Track Fragment Run box (trun), which provides local sample durations, sizes, and offsets valid only for that specific fragment. - Segment Indexing (
sidx): For single-file adaptive streaming workflows, Segment Index boxes (sidx) are positioned before media fragments. Thesidxspecifies the exact byte offsets, durations, and SAP (Stream Access Point) types of downstream fragments, enabling players to issue precise byte-range requests without downloading the entire file index upfront.
OBU Alignment and Decoder Synchronization
The way raw AV1 OBUs are arranged inside the container directly impacts how decoders handle random access across both delivery modes.
- Sequence Header Distribution: In progressive
downloads, the Sequence Header OBU can exist strictly within the
container-level
av1Cbox or appear infrequently in the stream. In byte-range requests, every segment targeted by a byte-range request must begin with a closed Key Frame OBU, preceded by a Sequence Header OBU and a Temporal Delimiter OBU. This ensures the decoder can immediately initialize and decode the segment when a player switches bitrates or seeks. - Metadata Overhead: Progressive packaging has lower
overall overhead because sample indices and header configurations are
written once. Byte-range packaging introduces structural overhead
through repeated
moof,mfhd, andtrafboxes alongside duplicate inline Sequence Header OBUs to maintain fragment independence.