AV1 Container Overhead: WebM vs MP4 Compared
When packaging AV1 (AOMedia Video 1) video streams, selecting between WebM and MP4 affects container-level overhead, metadata placement, and transmission efficiency. WebM relies on the Extensible Binary Meta Language (EBML) to wrap AV1 frames in inline blocks, while MP4 utilizes the ISO Base Media File Format (ISOBMFF) with box-based indexing. Both formats add negligible bulk to standard video streams, but differences in header construction, frame indexing, and streaming architectures create measurable variances in per-frame byte overhead.
Container Structural Fundamentals
AV1 video is organized into Open Bitstream Units (OBUs). When multiplexing AV1 into a media container, Temporal Delimiter OBUs are typically stripped, and sequence headers are factored into track-level initialization metadata. The remaining OBUs form the media samples packaged by the container.
- WebM (Matroska Subset): Uses hierarchical EBML
elements. Video is partitioned into
Clusterelements, which contain individualSimpleBlockorBlockGroupelements holding the AV1 frame data. - MP4 (ISOBMFF): Uses nested units called boxes (or
atoms). Frame data resides in the
mdat(media data) box, while sample sizes, offsets, and presentation timings are cataloged in index tables within themoovbox (for standard MP4) or withinmoofmovie fragments (for fragmented MP4/fMP4).
WebM AV1 Overhead Breakdown
WebM employs an inline framing mechanism:
- SimpleBlock Header (4 to 8 bytes per frame): Every
AV1 frame inside WebM is wrapped in a
SimpleBlock. The element identifier (1 byte) and data size descriptor (variable-length EBML integer, typically 2 to 4 bytes) are followed by a 1-byte track number, a 2-byte signed relative timecode, and a 1-byte flags field (signaling keyframe status and discardability). - Cluster Headers (15 to 30 bytes per cluster):
Frames are grouped into
Clusterstructures (typically once per keyframe or every 1–5 seconds). A cluster adds an EBML ID, size, and absolute timestamp header.
Because WebM stores timestamps and flags directly preceding the AV1 frame payload, it incurs a consistent per-frame penalty of approximately 5 to 9 bytes, plus minor periodic cluster overhead.
MP4 AV1 Overhead Breakdown
MP4 frame overhead depends significantly on whether standard (unfragmented) or fragmented (fMP4) multiplexing is used.
1. Standard MP4 (Progressive / VoD)
In non-fragmented MP4, raw AV1 frame payloads sit contiguous within
the mdat box without per-frame container wrappers. Instead,
metadata is concentrated in the moov atom:
- Sample Size (
stsz): 4 bytes per frame. - Time to Sample (
stts): 8 bytes per unique duration run (often compressed via run-length encoding for constant frame rates to a single 8-byte entry). - Sync Sample (
stss): 4 bytes per keyframe. - Chunk Offset (
stco/co64): 4 to 8 bytes per chunk (a chunk typically aggregates dozens of frames). - Composition Time Offset (
ctts): 8 bytes per run if frame reordering/B-frames are utilized.
Amortized across the stream, unfragmented MP4 requires approximately 4 to 8 bytes per frame for fixed-frame-rate content, making it slightly more compact than WebM.
2. Fragmented MP4 (HLS / DASH Streaming)
Fragmented MP4 distributes metadata alongside media using
moof boxes:
- Track Run (
trunbox): Each sample typically includes flags, size, and duration entries, consuming 8 to 16 bytes per frame inside the fragment header. - Fragment Wrapper (
moof+mfhd+traf): Adds roughly 50 to 100 bytes of fixed overhead per fragment.
Fragmented MP4 incurs the highest overhead among the variants, averaging 10 to 18 bytes per frame when factoring in fragment header frequency.
Direct Overhead Comparison
| Metric | WebM | Standard MP4 | Fragmented MP4 (fMP4) |
|---|---|---|---|
| Metadata Placement | Inline (SimpleBlock) |
Centralized (moov) |
Segmented (moof tables) |
| Average Per-Frame Overhead | 5 – 9 bytes | 4 – 8 bytes | 10 – 18 bytes |
| GOP/Fragment Header | ~15 – 30 bytes (Cluster) |
N/A | ~50 – 100 bytes (moof) |
| Impact on 4K Stream (15 Mbps) | < 0.005% | < 0.004% | < 0.01% |
| Impact on Ultra-Low Bitrate (50 kbps) | ~0.15% – 0.25% | ~0.10% – 0.15% | ~0.30% – 0.50% |
Practical Implications
For high-resolution AV1 video (1080p, 4K, 8K), the difference between WebM and MP4 overhead is mathematically negligible, representing less than a fraction of a percent of total bandwidth.
The overhead becomes relevant primarily in high-frame-rate (120+ fps)
or extremely low-bitrate environments (such as audio-only streams or
low-resolution video under 100 kbps). In standard non-fragmented
configurations, MP4 achieves the lowest container overhead due to
run-length encoded time tables in the moov box. However,
for live streaming and chunk-based delivery, WebM provides a lower
metadata footprint per frame than fragmented MP4 due to the lower
structural overhead of EBML SimpleBlocks compared to ISOBMFF
trun sample entries.