分类: LINUX
2011-06-02 01:56:18
“tkhd”结构如下表。
字段 |
字节数 |
意义 |
box size |
4 |
box大小 |
box type |
4 |
box类型 |
version |
1 |
box版本,0或1,一般为0。(以下字节数均按version=0) |
flags |
3 |
按位或操作结果值,预定义如下: 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 |
creation time |
4 |
创建时间(相对于UTC时间1904-01-01零点的秒数) |
modification time |
4 |
修改时间 |
track id |
4 |
id号,不能重复且不能为0 |
reserved |
4 |
保留位 |
duration |
4 |
track的时间长度 |
reserved |
8 |
保留位 |
layer |
2 |
视频层,默认为0,值小的在上层 |
alternate group |
2 |
track分组信息,默认为0表示该track未与其他track有群组关系 |
volume |
2 |
[8.8] 格式,如果为音频track,1.0(0x0100)表示最大音量;否则为0 |
reserved |
2 |
保留位 |
matrix |
36 |
视频变换矩阵 |
width |
4 |
宽 |
height |
4 |
高,均为 [16.16] 格式值,与sample描述中的实际画面大小比值,用于播放时的展示宽高 |
“tkhd”的字节实例如下图,各字段已经用颜色区分开:
4.2.2 Media Box(mdia)
“mdia”也是个container box,其子box的结构和种类还是比较复杂的。先来看一个“mdia”的实例结构树图。
总体来说,“mdia”定义了track媒体类型以及sample数据,描述sample信息。一般“mdia”包含一个“mdhd”,一个“hdlr”和一个“minf”,其中“mdhd”为media header box,“hdlr”为handler reference box,“minf”为media information box。下面依次看一下这几个box的结构。
4.2.2.1 Media Header Box(mdhd)
“mdhd”结构如下表。
字段 |
字节数 |
意义 |
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 |
同前表 |
duration |
4 |
track的时间长度 |
language |
2 |
媒体语言码。最高位为0,后面15位为3个字符(见ISO 639-2/T标准中定义) |
pre-defined |
2 |
|
“mdhd”的字节实例如下图,各字段已经用颜色区分开:
4.2.2.2 Handler Reference Box(hdlr)
“hdlr”解释了媒体的播放过程信息,该box也可以被包含在meta box(meta)中。“hdlr”结构如下表。
字段 |
字节数 |
意义 |
box size |
4 |
box大小 |
box type |
4 |
box类型 |
version |
1 |
box版本,0或1,一般为0。(以下字节数均按version=0) |
flags |
3 |
|
pre-defined |
4 |
|
handler type |
4 |
在media box中,该值为4个字符: “vide”— video track “soun”— audio track “hint”— hint track |
reserved |
12 |
|
name |
不定 |
track type name,以‘\0’结尾的字符串 |
“hdlr”的字节实例如下图,各字段已经用颜色区分开:
4.2.2.3 Media Information Box(minf)
“minf”存储了解释track媒体数据的handler-specific信息,media handler用这些信息将媒体时间映射到媒体数据并进行处理。“minf”中的信息格式和内容与媒体类型以及解释媒体数据的media handler密切相关,其他media handler不知道如何解释这些信息。“minf”是一个container box,其实际内容由子box说明。
一般情况下,“minf”包含一个header box,一个“dinf”和一个“stbl”,其中,header box根据track type(即media handler type)分为“vmhd”、“smhd”、“hmhd”和“nmhd”,“dinf”为data information box,“stbl”为sample table box。下面分别介绍。
下图为“minf”部分字节实例,其中红色为box header,蓝色为“smhd”,绿色为“dinf”,黄色为一部分“stbl”。