Skip to content

ISO Base Media File Format

current

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.

NameWhat 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 / QuickTimeApple’s original format that ISOBMFF and MP4 were derived from; still differs from MP4
3GP / 3G2Mobile-phone profiles from 3GPP/3GPP2
HEIF / AVIF / HEICStill images (and sequences) stored as items in an ISOBMFF file
CMAF, fragmented MP4ISOBMFF 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.

BoxRole
ftypMajor brand and compatible brands: identifies the profile
moovMovie header and track descriptions, including the sample tables
mdatThe encoded samples themselves
moof / mfraPer-fragment index and random-access index in fragmented files
stsd sample entryCodec identifier such as avc1, hvc1, hev1, av01, mp4a, Opus
colr, mdcv, clliColour 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.

Codecs and formats documented for ISOBMFF on this wiki
RelationshipProject or formatEvidence and scopeStatus
Carried By byAV1Uses the av01 sample entry and av1C configuration box.Scope: Container Mapping · Sources: AV1 Codec ISO Media File Format BindingNormative
Registered With byDolby VisionMP4RA registers dav1 for Dolby Vision carried with AV1; actual support is profile- and vendor-dependent.Scope: Container Mapping · Sources: MP4 Registration Authority codec registryRegistered
Carried By byOpusThe 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 registryRegistered
Carried By byAVC / H.264MP4RA registers AVC sample entries including avc1 and avc3.Scope: Container Mapping · Sources: MP4 Registration Authority codec registryRegistered
Carried By byHEVC / H.265MP4RA registers HEVC sample entries including hvc1 and hev1.Scope: Container Mapping · Sources: MP4 Registration Authority codec registryRegistered
Carried By byVP9The WebM Project publishes a VP codec binding for ISO Base Media File Format.Scope: Container Mapping · Sources: VP Codec ISO Media File Format BindingDocumented
Carried By byVVC / H.266MP4RA registers VVC sample entries including vvc1 and vvi1.Scope: Container Mapping · Sources: MP4 Registration Authority codec registryRegistered
Operates On byMP4Box v26.07.0MP4Box 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 registryDocumented

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.

Terminal window
ffprobe -v error -show_entries format_tags=major_brand,compatible_brands -show_streams input.mp4

ffprobe -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.