ISO Base Media File Format
The ISO Base Media File Format (ISOBMFF, ISO/IEC 14496-12) is a generic container structure: a file is a tree of “boxes”, each with a size and a four-character type. It is not something you encode to directly. It is the base that other formats specialise, and that is what the common file extensions actually are.
How the names relate
Section titled “How the names relate”| Name | What it is |
|---|---|
| ISOBMFF (14496-12) | The base format: boxes, tracks, sample tables, fragments |
| MP4 (14496-14) | ISOBMFF plus rules for MPEG-4 codecs; .mp4, .m4a, .m4v |
| MOV / QuickTime | Apple’s original format that ISOBMFF and MP4 were derived from; still differs from MP4 |
| 3GP / 3G2 | Mobile-phone profiles from 3GPP/3GPP2 |
| HEIF / AVIF / HEIC | Still images (and sequences) stored as items in an ISOBMFF file |
| CMAF, fragmented MP4 | ISOBMFF fragments used for DASH and HLS streaming |
An “MP4 file” is an ISOBMFF file whose ftyp brand is isom, mp42 or similar, and a “MOV file” is one with brand qt (padded with two spaces to four characters). Players decide by brand and by what the sample entries contain, not by extension. MOV and MP4 share the box structure but QuickTime allows codecs and track types MP4 does not define, which is why a .mov full of ProRes plays in Apple software but not in a typical MP4 player.
Boxes you will meet
Section titled “Boxes you will meet”| Box | Role |
|---|---|
ftyp | Major brand and compatible brands: identifies the profile |
moov | Movie header and track descriptions, including the sample tables |
mdat | The encoded samples themselves |
moof / mfra | Per-fragment index and random-access index in fragmented files |
stsd sample entry | Codec identifier such as avc1, hvc1, hev1, av01, mp4a, Opus |
colr, mdcv, clli | Colour description, mastering display and content light level (HDR) signalling |
Each codec has a binding that defines its sample entry and configuration box, for example av01 with av1C for AV1, avc1 with avcC for H.264, and Opus with dOps for Opus. The Opus binding on opus-codec.org is still a draft but is what encoders and players implement. The MP4 Registration Authority lists registered brands and sample entries; being registered does not mean a particular player supports it.
| Relationship | Project or format | Evidence and scope | Status |
|---|---|---|---|
| Carried By by | AV1 | Uses the av01 sample entry and av1C configuration box.Scope: Container Mapping · Sources: AV1 Codec ISO Media File Format Binding | Normative |
| Registered With by | Dolby Vision | MP4RA registers dav1 for Dolby Vision carried with AV1; actual support is profile- and vendor-dependent.Scope: Container Mapping · Sources: MP4 Registration Authority codec registry | Registered |
| Carried By by | Opus | The public Opus binding defines the Opus sample entry and dOps box, but remains an old incomplete draft.Scope: Container Mapping · Sources: Encapsulation of Opus in ISO Base Media File Format, MP4 Registration Authority codec registry | Registered |
| Carried By by | AVC / H.264 | MP4RA registers AVC sample entries including avc1 and avc3.Scope: Container Mapping · Sources: MP4 Registration Authority codec registry | Registered |
| Carried By by | HEVC / H.265 | MP4RA registers HEVC sample entries including hvc1 and hev1.Scope: Container Mapping · Sources: MP4 Registration Authority codec registry | Registered |
| Carried By by | VP9 | The WebM Project publishes a VP codec binding for ISO Base Media File Format.Scope: Container Mapping · Sources: VP Codec ISO Media File Format Binding | Documented |
| Carried By by | VVC / H.266 | MP4RA registers VVC sample entries including vvc1 and vvi1.Scope: Container Mapping · Sources: MP4 Registration Authority codec registry | Registered |
| Operates On by | MP4Box v26.07.0 | MP4Box is GPAC's ISO Base Media File Format inspection, muxing, fragmentation, and packaging CLI.Scope: Muxing Fragmentation Packaging · Sources: GPAC v26.07.0 release, MP4 Registration Authority codec registry | Documented |
Layout: progressive and fragmented
Section titled “Layout: progressive and fragmented”A conventional file has one moov and one mdat. Putting moov first (-movflags +faststart in FFmpeg) lets a file start playing during download. A fragmented file instead interleaves moof + media chunks, which is what live recording, DASH, CMAF and browser Media Source Extensions need. These are two different layouts; see MP4 for the commands.
Inspecting a file
Section titled “Inspecting a file”ffprobe -v error -show_entries format_tags=major_brand,compatible_brands -show_streams input.mp4ffprobe -v trace prints the box tree. For full box-level inspection or HEIF/AVIF image items, use MP4Box (MP4Box -info); ffprobe reports streams, not boxes or item properties.