视频封装格式之mkv--2
Level 0 | Grouping | Level 1 | Level 2 | Level 3 |
EBML | Header | EBML Version | ||
DocType | ||||
Segment | Meta Seek Info | SeekHead | Seek | SeekID |
SeekPosition | ||||
Seek | SeekID | |||
SeekPosition | ||||
Segment info | info | Title | ||
SegmentUID | ||||
Track | Tracks | TrackEntry | Name | |
TrackNumber | ||||
TrackType | ||||
TrackEntry | Name | |||
TrackNumber | ||||
TrackType | ||||
Chapters | Chapters | Edition Entry | ||
Clusters | Cluster | Timecode | ||
BlockGroup | Block | |||
BlockGroup | Block | |||
ReferenceBlock | ||||
BlockGroup | Block | |||
Cluster | Timecode | |||
BlockGroup | Block | |||
BlockGroup | Block | |||
BlockGroup | Block | |||
BlockGroup | Block | |||
BlockDuration | ||||
Cueing Data | Cues | CuePoint | CueTime | |
CuePostion | ||||
CuePoint | CueTime | |||
CuePostion | ||||
Attachment | Attachments | AttachedFile | FileName | |
FileData | ||||
AttachedFile | FileName | |||
FileData | ||||
Tagging | Tags | Tag | MultiTietle | |
Language | ||||
Tag | MultiTile | |||
Language |
2.1 Meta Seek information--快速索引表
可以不必有,其包含Segment中其他元素的位置,SeekID保存ID的名称,SeekPosition是其对应的位置偏移量,比如,SeekID=15 49 A9 66(Segment info),其SeekPosition=4099。
2.2 Segment Information--文本信息
包含识别文件的信息,比如Title、Duration等。
2.3 Track--音视频基本信息
包含了音视频的基本信息,比如音视频解码器类型、视频分辨率、音频采用率等。通过对其分析,我们可以得到音视频的基本信息,为选择相应解码器以及初始化这些解码器做好准备工作,其中每个TrackEntry代表着1条轨道信息。
2.4 Clusters--音视频帧数据
所有的音视频帧数据都在这部分存放。
1个Cluster内可能有很多个BlockGroup组成,BlockGroup内又由若干个Block组成。这些Block内就是音视频的帧数据,其第1个字节表示Track Number,音频或者视频,第2-3个字节表示Timecode,第4个字节表示flags;
1个Cluster并不一定只有音频或者视频,可能有不同的音视频BlockGroup交叉组成,因为多媒体文件中的音视频数据本来就是交叉出现的。
2.5 Cueing Data--关键帧的index
此部分内容是关键帧的索引,方便seek和快进快退操作。