首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

【多媒体打包格式详解】-MKV【1】

2012-11-22 
【多媒体封装格式详解】---MKV【1】Matroska 开源多媒体容器标准。MKV属于其中的一部分。Matroska常见的有.MKV视

【多媒体封装格式详解】---MKV【1】

Matroska 开源多媒体容器标准。MKV属于其中的一部分。
Matroska常见的有.MKV视频格式、MKA音频格式、.MKS字幕格式、.MK3D files (stereoscopic/3D video).

1.EBML(Extensible Binary Meta Language)

MKV是建立在EBML这种语言的基础上,所以要了解MKV格式需要先了解EBML这种语言。

EBML是一种类似于XML格式的可扩展二进制元语言,使用可变长度的整数存储,以节省空间。

EBML基本元素结构:


因为每个EBML元素都是由ID size data 三部分组成,我们就按照这些来分析。

将0x428 转成2进制 为 01000010    按照上面规则  前面有1个0 所以知道ID的长度为2,也就是0x4282为ID值。

将0x88 转成2进制为 10001000 1为开头 长度就是1,去掉前缀1变成了00001000 ,也就是 size的值为 8.

接下来的8个字节就是data值:6D 61 74 72 6F 73 6B 61  根据上面ID值查表得知 这个EMBL 名称为DocType 也就是说data的内容是string格式,所以转成askII码 data值就是“matroska” 和后面显示的一致。

所以这个EBML元素就解析出来了

ID=0x4282;

size=8;

data=“matroska” ;

得到的信息就是 DocType = matroska。


2.整体结构

让我们看看MKV的整体框架结构。

Level 0GroupingLevel 1Level 2Level 3EBMLHeaderEBMLVersion DocType SegmentMeta Seek InformationSeekHeadSeekSeekIDSeekPositionSeekSeekIDSeekPositionSegment InformationInfoTitle SegmentUID TrackTracksTrackEntryNameTrackNumberTrackTypeTrackEntryNameTrackNumberTrackTypeChaptersChaptersEdition Entry ClustersClusterTimecode BlockGroupBlockBlockGroupBlockReferenceBlockBlockGroupBlockClusterTimecode BlockGroupBlockBlockGroupBlockBlockGroupBlockBlockGroupBlockBlockDurationCueing DataCuesCuePointCueTimeCuePositionCuePointCueTimeCuePositionAttachmentAttachmentsAttachedFileFileNameFileDataAttachedFileFileNameFileDataTaggingTagsTagMultiTitleLanguageTagMultiTitleLanguageEBML元素都有自己的级别,每一个高一级的元素由若干次一级的元素组成。
从整个MKV文件整体来看可分为2大部分:

EBML Header和Segment。

EBML Header由EBMLVersion、DocType等子元素组成,包含了文件的版本、文档类型等相关信息。

Segment部分保存了媒体文件的视频和音频的实际数据,其data部分又可以分为SeekHead、Tracks、Cluster等若干子元素。


未完待续!




热点排行