视频封装格式之mkv--2

视频封装格式之mkv--2

2. MKV文件的整体框架
        框架主要有两部分构成EBML Header和Segment。每个EBML元素都有自己的级别,每个高一级别的元素由若干个次一级的元素组成。
        EBML Header主要有EBMLVersion、DocType等子元素组成,包含了文件的版本、文档类型等相关信息;
        Segment是音频相关信息的保存地方,其有次一级的Track、Clusters、Cueing Data等组成:

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和快进快退操作。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值