Advertisement

MP4格式标准介绍

阅读量:
  • MP4文件由大量box与FullBox构成。
  • 每个box由头信息块和数据块两部分构成。
  • FullBox作为box的一种扩展,在其头信息块中增加了8位版本号标志(version marker)以及24位 flags 标志(flags marker),基于box的基本结构进行设计。
  • header字段包含了整个box所占存储空间大小(size)以及类型(type),其中type是一个典型的四字符标签( FourCC )。具体来说:
    • 当size为0时,则表示该box是文件中的最后一个boxed segment;
    • 当size为1时,则表示该boxed segment所占的空间大小需要用64位的大尺寸值来描述。

MP4 box基本结构

MP4扩展box

MP4 box嵌套box

box结构如下:

复制代码
 Root Box (ftyp)

    
 │
    
 ├── moov (Movie Box)
    
 │   ├── mvhd (Movie Header Box)
    
 │   ├── trak (Track Box)
    
 │   │   ├── tkhd (Track Header Box)
    
 │   │   ├── mdia (Media Box)
    
 │   │   │   ├── mdhd (Media Header Box)
    
 │   │   │   ├── hdlr (Handler Reference Box)
    
 │   │   │   ├── minf (Media Information Box)
    
 │   │   │   │   ├── vmhd (Video Media Header Box)
    
 │   │   │   │   ├── smhd (Sound Media Header Box)
    
 │   │   │   │   ├── dinf (Data Information Box)
    
 │   │   │   │   ├── stbl (Sample Table Box)
    
 │   │   │   │   │   ├── stsd (Sample Description Box)
    
 │   │   │   │   │   ├── stts (Time-to-Sample Box)
    
 │   │   │   │   │   ├── stsz (Sample Size Box)
    
 │   │   │   │   │   ├── stsc (Sample-to-Chunk Box)
    
 │   │   │   │   │   ├── stco (Chunk Offset Box)
    
 │   │   │   │   │   ├── stss (Sync Sample Box)
    
 │   ├── udta (User Data Box)
    
 │   ├── iods (Image Decode Session Box)
    
 │
    
 ├── mdat (Media Data Box)
    
 │
    
 └── free (Free Box)  // 可选
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/XZbaLufiVNTO9wQE5UBd8GASnlcC.png)

box说明如下:

复制代码
 ftyp (File Type Box):文件的基础信息,包含文件格式类型。

    
 moov (Movie Box):包含了有关整个媒体文件的元数据。它是 mdat 之外最重要的部分。
    
 mvhd (Movie Header Box):描述整个电影文件的基本信息(如时间尺度、持续时间等)。
    
 trak (Track Box):每个轨道(音频、视频等)的描述。
    
 tkhd (Track Header Box):该轨道的基本信息(如尺寸、持续时间等)。
    
 mdia (Media Box):描述轨道中的媒体数据。
    
 mdhd (Media Header Box):该媒体的基本信息。
    
 hdlr (Handler Reference Box):媒体处理器信息(例如视频或音频处理器)。
    
 minf (Media Information Box):媒体信息,包含了如视频格式或音频格式的详细数据。
    
 stbl (Sample Table Box):描述样本表结构,包含了用于媒体播放的数据。
    
 mdat (Media Data Box):包含实际的媒体数据(音频、视频等)。
    
 udta (User Data Box):存储用户自定义的数据或附加信息。
    
 free (Free Box):保留或未使用的空间。
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/DuY4qeBQzmnbE0WLCfUOvRF1g6Zc.png)

1. moov说明

moov定义了MP4文件的元数据信息。

moov核心上是一个作为存储容器的角色,在此基础之上与其他组件协同工作以共同构建多媒体内容的描述体系。

如果希望MP4文件能够快速打开,则必须确保moov被放置在mdat序列的最前端位置;若将其置于后端,则必须先完成MP4文件的下载操作才能开始播放流程

moov中最主要采用的是mvhd格式。该格式定义了多媒体文件的时间尺度、时长等显示特性。而trak则定义了一个特定的媒体片段信息(track),其中(track)表示多媒体文件中的独立操作单元

2. mvhd说明

mvhd box嵌于moov box之内,并包含一系列与完整播放展示相关的元数据信息。例如文件创建与修改时间等记录,则告知视频播放器总的运行时长、时间尺度、播放速度以及初始音量等参数。

3. trak说明

trak单元标识了一个媒体文件中的轨道信息块。同一个媒体文件可能包含多个trakt单元。这些单元各自独立运行,并拥有自己的时间参数以及所占的空间位置参数。每一个trakt容器都附带有关联的媒体内容描述数据。

4. tkhd说明

tkhd被放置于trak box中;每个track仅限一个tkhd存在。它必须被强制设置为某个值或状态;作为元数据项包含对单个轨道特性的描述.

5. mdia说明

该媒体box包含了关于媒体轨道(如音频、视频等)的详细信息,并且对应于每个轨道中的具体媒体内容。一般会包含以下几个子box:

  • 媒体头部存储区域:Media Header box(mdhd)
    • 句柄引用存储区域:Handler Reference box(hdlr)
    • 媒体信息存储区域:Media Information box(minf)
    • 用户数据存储区域:User Data box(udta)

全部评论 (0)

还没有任何评论哟~