MP4文件格式解析--个人总结.docx_第1页
MP4文件格式解析--个人总结.docx_第2页
MP4文件格式解析--个人总结.docx_第3页
MP4文件格式解析--个人总结.docx_第4页
MP4文件格式解析--个人总结.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1.引言12.MP4中一些概念详解13.MP4文件结构分析13.1box结构13.2MP4总体结构23.3Movie box(moov)23.3.1Movie Header box(mvhd)33.3.2Trak box43.4Media box53.4.1Media header box(mdhd)63.4.2Hdlr box63.4.3Minf box73.5Sample Table Box(stbl)73.5.1Sample Description Box(stsd)73.5.2Time To Sample Box(stts)83.5.3Sample Size Box(stsz)83.5.4Sample To Chunk Box(stsc)83.5.5Sync Sample Box(stss)83.5.6Chunk Offset Box(stco)81MP4文件格式解析总结1.引言MP4是一种常见的多媒体容器格式,对应MPEG-4标准,这种容器格式非常全面开放,被认为可以在其中嵌入任何形式的数据,各种编码的视频、音频等都可以。在MP4文件中,媒体的描述信息与媒体数据是分开的,并且媒体数据的组织也很自由,不一定要按照时间顺序排列。同时,MP4也支持流媒体,MP4目前被广泛用于封装h.264视频和AAC音频,是高清视频的代表。MP4格式的官方文件后缀名是“.mp4”,还有其他的以mp4为基础进行的扩展或者是缩水版本的格式。2.MP4中一些概念详解MP4文件格式中,所有的内容存在一个称为movie的容器中。一个movie可以由多个tracks组成。每个track就是一个随时间变化的媒体序列, track里的每个时间单位是一个sample,它可以是一帧视频,或者一段连续的压缩音频。sample按照时间顺序排列。其中一帧音频可以分解成多个音频sample,所以音频一般用sample作为单位,而不用帧。MP4文件格式的定义里面,用sample表示一个时间帧或者数据单元。几个连续的sample就构成了一个chunk。3.MP4文件结构分析3.1box结构MP4由一个一个box组成,每个box由一个boxheader和boxdata组成,boxheader又分为3部分:4字节的size:表示这个box的大小 4字节的type:表示这个box的类型8字节的largesize如果整个box的大小超出了4字节能表示的最大值,那么size=1,同时,box的大小就储存在largesize中。3.2MP4总体结构Mp4必须包含ftyp box、moov box、mdat box。File type box(ftyp)用来储存文件类型的相关信息,Movie box(moov)用来储存媒体的信息,是一个container box,Media data box(mdat)用来储存媒体的具体数据3.3Movie box(moov)一个movie box包含一个mvhd box和若干个trak box,比如audio trak box,vedio trak box。3.3.1Movie Header box(mvhd)mvmd具体结构如下:字段字节数意义box size4box大小box type4box类型version1box版本,0或1,一般为0。(以下字节数均按version=0)flags3creation time4创建时间(相对于UTC时间1904-01-01零点的秒数)modification time4修改时间time scale4文件媒体在1秒时间内的刻度值,可以理解为1秒长度的时间单元数duration4该track的时间长度,用duration和time scale值可以计算track时长,比如audio track的time scale = 8000, duration = 560128,时长为70.016,video track的time scale = 600, duration = 42000,时长为70rate4推荐播放速率,高16位和低16位分别为小数点整数部分和小数部分,即16.16 格式,该值为1.0(0x00010000)表示正常前向播放volume2与rate类似,8.8 格式,1.0(0x0100)表示最大音量reserved10保留位matrix36视频变换矩阵pre-defined24next track id4下一个track使用的id号3.3.2Trak boxTrak box必须包含一个tkhd box和一个media box,此外还有很多可选的box:Track Header box(tkhd): 定义了一个track的特性,例如时间,空间和音量信息。结构如下:字段字节数意义box size4box大小box type4box类型version1box版本,0或1,一般为0。(以下字节数均按version=0)flags3按位或操作结果值,预定义如下:0x000001 track_enabled,否则该track不被播放;0x000002 track_in_movie,表示该track在播放中被引用;0x000004 track_in_preview,表示该track在预览时被引用。一般该值为7,如果一个媒体所有track均未设置track_in_movie和track_in_preview,将被理解为所有track均设置了这两项;对于hint track,该值为0creation time4创建时间(相对于UTC时间1904-01-01零点的秒数)modification time4修改时间track id4id号,不能重复且不能为0reserved4保留位duration4track的时间长度reserved8保留位layer2视频层,默认为0,值小的在上层alternate group2track分组信息,默认为0表示该track未与其他track有群组关系volume28.8格式,如果为音频track1.0(0x0100)表示最大音量;否则为0reserved2保留位matrix36视频变换矩阵width4宽height4高,均为 16.16 格式值,与sample描述中的实际画面大小比值,用于播放时的展示宽高media box:该box是一个包含一些track媒体数据信息box的container box。3.4Media boxMedia box主要包含media header box(mdhd)、hdlr box、minf box。3.4.1Media header box(mdhd)media header box(mdhd)定义了整个movie 的特性,例如time scale 和duratio,具体结构如下:字段字节数意义box size4box大小box type4box类型version1box版本,0或1,一般为0。(以下字节数均按version=0)flags3creation time4创建时间(相对于UTC时间1904-01-01零点的秒数)modification time4修改时间time scale4文件媒体在1秒时间内的刻度值,可以理解为1秒长度的时间单元数duration4track的时间长度language2媒体语言码。最高位为0,后面15位为3个字符(见ISO 639-2/T标准中定义)pre-defined23.4.2Hdlr boxHdlr box解释了媒体的播放过程信息。同时也指明了本trak类型,如:vedio、autio、hint,具体结构如下:字段字节数意义box size4box大小box type4box类型version1box版本,0或1,一般为0。(以下字节数均按version=0)flags3pre-defined4handler type4在media box中,该值为4个字符:“vide” video track“soun” audio track“hint” hint trackreserved12name不定track type name,以0结尾的字符串3.4.3Minf box存储了解释该track的媒体数据的handler-specific的信息。media handler用这些信息将媒体时间映射到媒体数据,并进行处理。minf包含一个header box,一个Data Information Box (dinf)和一个Sample Table Box (stbl):Header box定义颜色和图形模式信息dinf box解释如何定位媒体信息stbl box包含了关于track中sample所有时间和位置的信息,以及sample的编解码等信息。利用这个表,可以解释sample的时序、类型、大小以及在各自存储容器中的位置。3.5Sample Table Box(stbl)Sample Table Box (stbl)包含:sample description box(stsd)、time to sample box(stts)、sample size box(stsz)、sample to chunk box(stsc)、chunk offset box(stco)、composition time to sample box(ctts)、sync sample box(stss)。3.5.1Sample Description Box(stsd) box header和version字段后会有一个entry count字段,根据entry的个数,每个entry会有type信息,如“vide”、“sund”等,根据type不同sample description会提供不同的信息,例如对于video track,会有“VisualSampleEntry”类型信息,对于audio track会有“AudioSampleEntry”类型信息。 视频的编码类型、宽高、长度,音频的声道、采样等信息都会出现在这个box中。3.5.2Time To Sample Box(stts) stts存储了sample的duration,描述了sample时序的映射方法,我们通过它可以找到任何时间的sample。stts可以包含一个压缩的表来映射时间和sample序号,用其他的表来提供每个sample的长度和指针。表中每个条目提供了在同一个时间偏移量里面连续的sample序号,以及samples的偏移量。递增这些偏移量,就可以建立一个完整的time to sample表。3.5.3Sample Size Box(stsz) stsz定义了每个sample的大小,包含了媒体中全部sample的数目和一张给出每个sample大小的表。这个box相对来说体积是比较大的。3.5.4Sample To Chunk Box(stsc) 用chunk组织sample可以方便优化数据获取,一个thunk包含一个或多个sample。stsc中用一个表描述了sample与chunk的映射关系,查看这张表就可以找到包含指定sample的thunk,从而找到这个sample。3.5.5Sync Sample Box(stss) stss确定media中的关键帧。对于压缩媒体数据,关键帧是一系列压缩序列的开始帧,其解压缩时不依赖以前的帧,而后续帧的解压缩将依赖于这个关键帧。stss可以非常紧凑的标记媒体内的随机存取点,它包含一个sample序号表,表内的每一项严格按照sample的序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论