MKV文件结构

一.  MKV文件组成结构

 

二.MKV文件中元素说明

 

 

表1        MKV 文 件 组 成 结 构

 

元素

子元素

ID

说     明

 

EBML
Header

 

EBMLVersion

42 86

EBML编码器版本号

 

EBMLReadVersion

42 F7

EBML解析器版本号

 

EBMLMaxIDLength

42 F2

EBML元素ID号的最长长度(多少字节)
,在MATROSKA文件中最长为4字节

 

EBMLMAXSizeLength

42 F3

EBML元素最长长度(多少字节)

 

DocTypes

42 82

EBML文件中的内容类型

 

DocTypeVersion

42 87

EBML文件包含数据的编码器版本号

 

DocTypeReadVersion

42 85

EBML文件包含数据的解析器版本号

 

Segment







SeekHead

11 4D 9B 74

指向SEGMENT子元素的索引信息,可以指向其它的SeekHead.如果Cluster元素中的BlockGroup和SimpleBlock子元素在其尾部,那么可以不用SeekHead,不然的话,文件的帧数据地址定位将很复杂

 

SegmentInfo

15 49 A9 66

包括了SEGMENT元素的信息,如UID,标题等

 

Tracks

16 54 AE 6B

描述了包含在Cluster中的数据轨道信息,可以在文件生成多个备份。如果没有Cluster元素,Tracks元素也可以不存在。

 
 
 

Cluster


1F 43 B6 75

包括了视频,音频,字幕数据。因为MATROSKA文件提供了Charpter和Attachment子元素来表示其它的数据内容,所以可以没有Cluster元素。

 

Cluster

1F 43 B6 76

同   上

 

 

Cues

1C 53 BB 6B

包含了Cluster数据帧的时间戳,
用来支持即时定位

 

 

 

表2       SeekHead

元素

子元素

ID

说   明

SeekHead

 

Seek

 

4D BB

 

包含了一个Segment的子元素的ID号
和它的具体位置

 

                             表2-1     Seek

元素

子元素

ID

说   明

Seek

 

SeekID

53 AB

所包含的Segment子元素的ID号

SeekPosition

53 AC

对应SeekID的元素的位置
(相对于Segment数据首地址)

 

 

表3       SegmentInfo

元素

子元素

ID

说   明

Segment
Info





TimecodeScale

2A D7 B1

每个时间码都通过和此值相乘来得到具体时间

(微秒单位)

MuxingApp

4D 80

生成此文件的库名称,如
libMatroska-0.7.0

WritingApp

57 41

生成此文件的程序名称,如
mkvmerge 0.8.1

Duration

 

44 89

 

此Segment的总回放时间,
将其乘以TimecodeScale来得
出具体时间(微秒单位)

DateUTC

 

44 61

 

生成此文件的时间,
从2001.01.01 0:00:00 GMT+0h
开始计算

SegmentUID

73 A4

表示Segment的128位ID号,
可以被其它的文件引用

 

 

表4        Tracks

元素

子元素

ID

说   明

Tracks

TrackEntry

AE

每个轨道用一个TrackEntry元素来表示

 

表4-1      TrackEntry

元素

子元素

ID

说   明

Track
Entry








TrackNumber

D7

轨道的序列号,不可以为0,将Cluster的子元素Block和SimpleBlock使用

TrackUID

73 C5

轨道的ID号,不可以为0

TrackType

83

轨道的类型,如视频,音频,字幕

FlagLacing

9C

是否包括了捆绑数据块
(表示在一个数据块中包含
多帧 lacing block)

MinCache

6D E7

在播放时必须提供多少帧的缓存区
,比如当MPEG4帧以其编码顺序
来播放时使用

CodecID

86

轨道使用的编码类型ID

DefaultDuration

23 E3 83

表示一帧持续了多少微秒。当没有Duration元素或使用捆绑(lacing)方式时将使用此值。
如果值为0表示此轨道的帧的持续时间不定。(如Vorbis 音频)。
使用此值将使文件的定位非常容易。

Language

22 B5 9C

轨道使用的语言,和Name所用语言无关

Video

E0

视频轨道视频相关信息

ContextEncodings

6D 80

轨道的压缩或加密信息

ContentEncoding

62 40

描述轨道使用的压缩或加密信息

ContentCompression

50 34

具体压缩信息

ContentCompAlgo

42 54

描述压缩算法

ContentCompSettings

42 55

压缩配置信息

CodecPrivate

63 A2

解压时所需要的数据。
如Vorbis编码的初始化数据包

 

 

表5        Cluster

元素

子元素

ID

说   明

Cluster

TimeCode

E7

用来做所包含的Block的开始时间码

SimpleBlock

A3

只包含一个数据块,没有附加信息,所以资源浪费会小很多,SimpleBlock由Matroska V2提供

 

 

表6        Cues

元素

子元素

ID

说   明

Cues

CuePoint

BB

Track的定位信息

 

表6-1      CuePoint

元素

子元素

ID

说   明

CuePoint

 

CueTime

B3

在某Cluster的Block的时间码

CueTrackPositions

B7

Cluster和Block的定位信息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值