(mkv格式解析.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(mkv格式解析

[转载]MKV文件格式(2009-09-16 14:24) 分类: Unsorted 原文地址:/CharlesPrince/archive/2009/03 1.EBML (Extensible Binary Meta Language): EBML语言使用不定长整数,这种方式相对于固定长度的32位/64位字长的整数值更节约空间.放置的位置也不受字节对齐约束..这种长度编码方式来自于UTF-8编码规范. 不定长度的无符号整数值(“vint”): 长度的计算方法: 长度 = 1 +整数前缀0比特的个数. 使用大字节编码方式. 可以使用大于=8字节的整数值,这时它的第一个字节的值将会是0x00,用来表达长度超过56位的整数值.但它是被MATROSKAY文件禁止的. 举个例子: 43 85 03:将它换算成二进制如下10000101前缀0比特的个数为1,总长度为:1 + 1 = 2,所包括的字节为10000101,最 前值为1的比特用作中止前缀0比特.它不能被用来计算整数的结果,那么最终的整数值等于:03 85(901).这样看来,1个字节表示长度最多可以有7个前缀0比特,它也是MATROSKA文件所支持的整数最长长度.使数据所占的空间减小,这是EBML文件最大亮点. 长度未知整数值: 如果除了前缀0之外的比特位全部都是1的话,表示此整数的长度未知.MASTROSKA文件中除了文件头最后一个元素之外,都不要这样写.如果有的整数正好是这样的形式,要对它重编码,如:16383 = 7F FF,要把它编码成: 20 3F FF,虽然整数的长度不可避免的增加了. EBML元素: 存储方式如下: typedef struct { vint ID; //Element ID vint size; //Element size char Data[size] //Element Data } Ebml_Element; 包含其它元素的元素被称做:EBML Master Elements.子元素的排列顺序是任意的,但最好还是.有一种确定的定义. 有符号整数的表示方法: 大字节序,根据其值的正负符号来减去00或FF来得到具体的数值,如-257 = FE FF, FE FF – FFFF=257. 实数表示方法: 大字节序,可以使用32或64比特来表示IEEE标准定义的浮点数,虽然标准包括了80比特的浮点数,但MATROSKA不使用. 字符串类型: String类型用ASCII编码方式.UTF-8类型用UTF-8编码方式. 2.MATROSKA文件项级元素: 只有两种顶级元素: 1. EBML Header: 用来描述文件中的内容,一个文件只能有一个EBML Header,更多的将被读取它的程序忽略掉.有的MKV生成器在添加多个文件时可能会出现这种情况. 2. Segment 包括了多媒体数据和回放时所需要的信息头.一个文件可以包括多个信息头,但很多的库不支持多个Segment,Windows平台下可以用Haali Media Splitter来支 持多Segment. 3. EBML文件头: 描述了EBML编解码器的版本号,文件类型,文件名. 元素列表: Uint EBMLVersion ID:42 86默认值:1 EBML编码器版本号. Uint EBMLReadVersion ID:42 F7默认值:1 EBML解析器版本号 Uint EBMLMaxIDLength ID:42 F2默认值:4 EBML元素ID号的最长长度(多少字节),在MATROSKA文件中最长为4字节. Uint EBMLMAXSizeLength ID:42 F3默认值:8 EBML元素最长长度(多少字节). Uint DocTypes ID: 42 82默认值:matroska EBML文件中的内容类型,MATROSKA文件为”matroska”. Uint DocTypeVersion ID:42 87默认值:1 EBML文件包含数据的编码器版本号. Uint DocTypeReadVersion ID:42 85默认值:1 EBML文件包含数据的解析器版本号. 由于所有的元素都包括的默认值,所以可以使用空EBML文件头. 最好不要使ID和元素最大长度超过8字节,对于几乎所有数据来说,它已经足够了,同时对于当前流行的32/65位字长的计算机来说,它将使一次整数运算生成多条指令. 4. Segment Master SegmentInfo ID:15 49 A9 66包括了SEGMENT元素的信息,如UID,标题等. Master SeekHe

文档评论(0)

popo786 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档