MP4_3GP文件格式分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MP4文件格式分析

MP4是ISO多媒体文件格式(Media File format)的一个实例,MP4的标准定义在“ISO/IEC 14496-14Part 14: MP4 file format”中,而多媒体文件格式定义于“ISO/IEC 14496-12 and ISO/IEC 15444-12”。

1.概述

MP4文件中的所有数据都装在box(Apple的QuickTime File Format中称为atom)中,也就是说MP4文件由若干个box组成,每个box有类型和长度,可以将box理解为一个数据对象块。box中可以包含另一个box,这种box称为container box。一个MP4文件首先会有且只有一个“ftyp”类型的box,作为MP4格式的标志并包含关于文件的一些信息;之后会有且只有一个“moov”类型的box(Movie Box),它是一种container box,子box包含了媒体的metadata信息;MP4文件的媒体数据包含在“mdat”类型的box(Midia Data Box)中,该类型的box也是container box,可以有多个,也可以没有(当媒体数据全部引用其他文件时),媒体数据的结构由metadata进行描述。

下图为一个典型的MP4文件的结构树。

2.Box

首先需要说明的是,box中的字节序为网络字节序,也就是大端字节序(Big-Endian),简单的说,就是一个32位的4字节整数存储方式为高位字节在内存的低端。Box由header

和body组成,其中header统一指明box的大小和类型,body根据类型有不同的意义和格式。

标准的box开头的4个字节(32位)为box size,该大小包括box header和box body整个box的大小,这样我们就可以在文件中定位各个box。如果size为1,则表示这个box的大小为large size,真正的size值要在largesize域上得到。(实际上只有“mdat”类型的box

才有可能用到large size。)如果size为0,表示该box为文件的最后一个box,文件结尾即为该box结尾。(同样只存在于“mdat”类型的box中。)

size后面紧跟的32位为box type,一般是4个字符,如“ftyp”、“moov”等,这些box type 都是已经预定义好的,分别表示固定的意义。如果是“uuid”,表示该box为用户扩展类型。如果box type是未定义的,应该将其忽略。

3.File Type Box(ftyp)

该box有且只有1个(在早期版本中可以没有ftyp box,可以不用考虑此种情况),并且只能被包含在文件层,而不能被其他box包含。该box应该被放在文件的最开始,指示该MP4文件应用的相关信息。

“ftyp” body依次包括1个32位的major brand(4个字符),1个32位的minor version(整数)和1个以32位(4个字符)为单位元素的数组compatible brands。这些都是用来指示文件应用级别的信息。

ftyp的定义如下:

aligned(8) class FileTypeBox

extends Box(‘ftyp’) {

unsigned int(32) major_brand; // 主版本信息,ex:isom

unsigned int(32) minor_version; // 次版本信息,是一个整数,ex:512

unsigned int(32) compatible_brands[]; // to end of the box,兼容信息ex:mp41 }

Ftyp box的长度存在文件的前4个字节中,例如下图中ftyp的长度为1C,即16 + 12 = 28

字节。

ftyp box参考图

开头的黑色框内为box长度28,蓝色框内为box关键字”ftyp” ,红色框内为主版本信息”isom”,绿色框内为次版本信息”0020”,粉色框内为兼容信息”isomiso2mp41”。

3.1 主版本信息(major_brand)

此标记存在于file-type(ftyp)box中,紧接着”ftyp”就是。

Mp4文件识别的主版本标志如下表所示,常见的标识用红色字体显示。

'3g2a' => '3GPP2 Media (.3G2)',

'3ge6' => '3GPP (.3GP) Release 6 MBMS Extended Presentations',

'3ge7' => '3GPP (.3GP) Release 7 MBMS Extended Presentations',

'3gg6' => '3GPP Release 6 General Profile',

'3gp1' => '3GPP Media (.3GP) Release 1 ? (non-existent)',

'3gp2' => '3GPP Media (.3GP) Release 2 ? (non-existent)',

'3gp3' => '3GPP Media (.3GP) Release 3 ? (non-existent)',

'3gp4' => '3GPP Media (.3GP) Release 4',

'3gp5' => '3GPP Media (.3GP) Release 5',

'3gp6' => '3GPP Media (.3GP) Release 6 Basic Profile',

'3gr6' => '3GPP Media (.3GP) Release 6 Progressive Download',

'3gs6' => '3GPP Media (.3GP) Release 6 Streaming Servers',

'3gs7' => '3GPP Media (.3GP) Release 7 Streaming Servers',

'avc1' => 'MP4 Base w/ AVC ext [ISO 14496-12:2005]',

'caep' => 'Canon Digital Camera',

'caqv' => 'Casio Digital Camera',

'cdes' => 'Convergent Design',

'f4v ' => 'Video for Adobe Flash Player 9+ (.F4V)',

'f4p ' => 'Protected Video for Adobe Flash Player 9+ (.F4P)',

'f4a ' => 'Audio for Adobe Flash Player 9+ (.F4A)',

'f4b ' => 'Audio Book for Adobe Flash Player 9+ (.F4B)',

'isc2' => 'ISMACryp 2.0 Encrypted File',

'iso2' => 'MP4 Base Media v2 [ISO 14496-12:2005]',

'isom' => 'MP4 Base Media v1 [IS0 14496-12:2003]',

'jp2 ' => 'JPEG 2000 Image (.JP2) [ISO 15444-1 ?]',

'jp20' => 'Unknown, from GPAC samples (prob non-existent)',

'jpm ' => 'JPEG 2000 Compound Image (.JPM) [ISO 15444-6]',

'jpx ' => 'JPEG 2000 w/ extensions (.JPX) [ISO 15444-2]',

'kddi' => '3GPP2 EZmovie for KDDI 3G Cellphones',

'm4a ' => 'Apple iTunes AAC-LC (.M4A) Audio',

'm4b ' => 'Apple iTunes AAC-LC (.M4B) Audio Book',

'm4p ' => 'Apple iTunes AAC-LC (.M4P) AES Protected Audio',

'm4v ' => 'Apple iTunes Video (.M4V) Video',

'm4vh' => 'Apple TV (.M4V)',

'm4vp' => 'Apple iPhone (.M4V)',

'mj2s' => 'Motion JPEG 2000 [ISO 15444-3] Simple Profile',

'mjp2' => 'Motion JPEG 2000 [ISO 15444-3] General Profile',

'mmp4' => 'MPEG-4/3GPP Mobile Profile (.MP4 / .3GP) (for NTT)',

'mp21' => 'MPEG-21 [ISO/IEC 21000-9]',

相关文档
最新文档