mp4文件格式解析--个人总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
路漫漫其修远兮,吾将上下而求索 - 百度文库
目录
1.引言 (1)
2.MP4中一些概念详解 (1)
3.MP4文件结构分析 (2)
3.1box结构 (2)
3.2MP4总体结构 (3)
3.3Movie box(moov) (3)
3.3.1Movie Header box(mvhd) (4)
3.3.2Trak box (5)
3.4Media box (6)
3.4.1Media header box(mdhd) (6)
3.4.2Hdlr box (7)
3.4.3Minf box (8)
3.5Sample Table Box(stbl) (8)
3.5.1Sample Description Box(stsd) (8)
3.5.2Time To Sample Box(stts) (9)
3.5.3Sample Size Box(stsz) (9)
3.5.4Sample To Chunk Box(stsc) (9)
3.5.5Sync Sample Box(stss) (9)
3.5.6Chunk Offset Box(stco) (9)
MP4文件格式解析总结
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结构
BOX
BoxHeader
BoxData
UNIT64size type
BoxHeader
UNIT32
UNIT32
largesize
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 Moov box
mvhd box
Autio track box
Media track box
other track box
Trak box
tkhd box
media box
Media box Mdhd box
Hdlr box
Minf box Minf box
Header box
Dinf box
Stbl box
Stbl box
Stsd box
Stts box
Stsz box
Stsc box
Stco box
Ctts box
Stss box
Mp4必须包含ftyp box、moov box、mdat box。File type box(ftyp)用来储存文件类型的相关信息,Movie box(moov)用来储存媒体的信息,是一个container box, Media data box(mdat)用来储存媒体的具体数据
3.3Movie box(moov)
Moov box
mvhd box
Autio track box
Media track box
other track box
一个movie box包含一个mvhd box和若干个trak box,比如audio trak box,vedio trak box。
3.3.1Movie Header box(mvhd)
字段字节数意义
box size 4 box大小
box type 4 box类型
version 1 box版本,0或1,一般为0。(以下字节数均按version=0)
flags 3
creation time 4 创建时间(相对于UTC时间1904-01-01零点的秒数)modification time 4 修改时间
time scale 4
文件媒体在1秒时间内的刻度值,可以理解为1秒长度的时间单元
数
duration 4 该track的时间长度,用duration和time scale值可以计算track时长,比如audio track的time scale = 8000, duration = 560128,时长为70.016,video track的time scale = 600, duration = 42000,
时长为70
rate 4 推荐播放速率,高16位和低16位分别为小数点整数部分和小数部分,即[16.16] 格式,该值为1.0(0x00010000)表示正常前向播
放
volume 2 与rate类似,[8.8] 格式,1.0(0x0100)表示最大音量reserved 10 保留位
matrix 36 视频变换矩阵
pre-defined 24
next track id 4 下一个track使用的id号