首页 > 代码库 > MP4文件格式分析(附源码)

MP4文件格式分析(附源码)

               MP4格式分析                  

  MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在“ISO/IEC 14496-14”标准文件中定义的,属于MPEG-4的一部分,是“ISO/IEC 14496-12(MPEG-4 Part 12 ISO base media file format)”标准中所定义的媒体格式的一种实现,后者定义了一种通用的媒体文件结构标准。MP4是一种描述较为全面的容器格式,被认为可以在其中嵌入任何形式的数据,各种编码的视频、音频等都不在话下,不过我们常见的大部分的MP4文件存放的AVC(H.264)MPEG-4(Part 2)编码的视频和AAC编码的音频。MP4格式的官方文件后缀名是“.mp4”,还有其他的以mp4为基础进行的扩展或者是缩水版本的格式,包括:M4V,3GP,F4V等。

 

  一个mp4文件有可能包含非常多的box(全部大约70多个),在很大程度上增加了解析的复杂性。如果要全部解析必要性不是很大。大部分mp4文件没有那么多的box类型,下图就是一个简化了的,常见的mp4文件结构:

技术分享

下图是节点box详细说明:

技术分享

下面我们将对以上主要box的解析进行详细说明:

1. 一级box

  一级box主要包含ftyp、moov、free、mdat等等。

1.1 ftyp box

 

结构:

字段名称 长度(bytes) 有关描述
boxsize 4 box的长度
boxtype 4 box的类型
major_brand 4  
minor_version 4 版本号
compatible_brands 4*N 本文件遵从的多种协议(ismo,iso2,mp41)

 

 

 

 

   

运行结果:

技术分享

1.2 moov box

结构:

字段名称 长度(bytes) 有关描述
boxsize 4 box的长度
boxtype 4 box的类型

 

 

 

1.3 free box

结构:

字段名称 长度(bytes) 有关描述
boxsize 4 box的长度
boxtype 4 box的类型

 

 

 

1.4 mdat box

结构:

字段名称 长度(bytes) 有关描述
boxsize 4 box的长度
boxtype 4 box的类型
     后面是真实媒体数据

 

 

 

 

运行结果:

技术分享

2. 二级box

  本节所说的二级box皆为moov的子box,主要包含mvhd、trak、udat等等。

1.1 mvhd box

结构:

字段名称 长度(bytes) 有关描述
boxsize 4 box的长度
boxtype 4 box的类型
major_brand 4  
minor_version 4 版本号
compatible_brands 4*N 本文件遵从的多种协议(ismo,iso2,mp41)

 

 

 

 

 

 

 

 

MP4文件格式分析(附源码)