您当前的位置:首页 > 计算机 > 文件格式与编码

MP4 moov box解析

时间:09-07来源:作者:点击数:

文中使用到的工具说明:https://www.cdsy.xyz/computer/recommend/240907/cd63279.html

moov box(movie box): 包含若干子box,这些子box共同描述了媒体播放必需的元数据。

下面是一个MP4文件的box列表,红色的即moov box的内容:

mvhd(movie header)

包含了媒体的创建与修改时间时间刻度、默认音量、色域、时长等信息

mvhd结构:

U32[0] size : 4(Byte)

U32[1] name : 4

U32[2] version : 1

            flag : 3

U32[3] creation time : 4

U32[4] modification time: 4

U32[5] timescale : 4

U32[6] duration : 4

U32[7] rate[16.16]: 4

U32[8] volume[8.8] : 2

... : Reserve

其中creation time和modification time 是 从UTC时间的1904年1月1日0点至今的秒数。

rate:播放速度倍率

volume : 默认音量

[8.8]:即前8位为整数,后8为为小数

例如:

creation time=0x7c25b112(s)

modification time=0x7c25b131(s)

timescale=0x15f90=90000

duration=0x17cdc0=1560000

(媒体总体时长:1560000/90000=17.33s)

speed rate=0x0001.0x0000=1.0

volume=0x01.0x00=1.0

tkhd(track header)

包含了track的信息

U32[0]  size : 4

U32[1]  name : 4

U32[2]  version : 1

             flags : 3

U32[3]  creation time : 4

U32[4]  modification time : 4

U32[5]  track id(唯一id,非0) : 4

U32[6]  reserve : 4

U32[7]  duration : 4

U32[8-9]  reserve : 8

U32[10]  layer(视频层,默认为0) : 2

              alternate group(track分组信息,默认为0,表示与其他track没有群组关系) : 2

U32[11] volume[8.8] : 2

              reserve : 2

U32[12-20]  matrix(视频变换矩阵) : 36 

U32[21] width [16.16] : 4

U32[22] height [16.16] : 4

[16.16]:即前16位为整数,后16为为小数

flags  :

按位或操作结果值,预定义如下:

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,该值为0

例如:

其他解析同mvhd

width=0x780.0x0=1920.0

height=0x438.0x0=1080.0

e dts(edit list )非必需

时间戳起始位置偏移,即从从该时间戳开始播放

mdhd (media header)包含了media的信息

U32[0] size : 4

U32[1] name : 4

U32[2] version : 1

           flags : 3

U32[3] creation time : 4

U32[4] modification time : 4

U32[5] time scale : 4 

U32[6] duration : 4

U32[7] language : 2

            pre-defined : 2

hdlr(handler)

媒体播放过程的信息

U32[0] size : 4

U32[1] name : 4

U32[2] version : 1

            flags : 3

U32[3] pre-defined : 4 

U32[4] handler type : 4

U32[5-7] reserve : 12

U8 name : handler name可为空字符串

例如:

handler type="vide"

"vide": video track

"soun": audio track

"hint": hint track

vmhd(video media header)

U32[0] size : 4

U32[1] name : 4

U32[2] version : 1

       flags : 3

U32[3] graphics mode : 4

U32[4] opcolor : 2x3

graphics mode(视频合成模式,0:拷贝原始图像,其他值则与opcolor合成)

opcolor:{rgb}

dref(data reference)

"dref"下会包含若干个“url”或“urn”,这些box组成一个表,用来定位track数据。 track可以被分成若干段,每一段都可以根据“url”或“urn”指向的地址来获取数据,sample描述中会用这些片段的序号将这些片段组成一个完整的track。一般情况下,当数据被完全包含在文件中时,“url”或“urn”中的定位字符串是空的。

U32[0] size : 4

U32[1] name : 4

U32[2] version : 1

       flags : 3

U32[3] entry count(url或urn的个数) : 4

usr/urn : ---

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐