视频文件头解析--mkv

本文介绍了MKV文件格式的基础,特别是其基于EBML的结构。EBML元素具有ID和长度,采用UTF-8不定长前缀表示法。解析过程中涉及DocType、DocTypeVersion等关键元素,并详细阐述了解析EBML头和Segment信息的步骤,以识别和提取Matroska视频容器格式中的音视频轨道信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MKV 的文件格式的目标是,成为多媒休包容格式的标准。它基于EBML(扩展二进制多媒体语言)。与XML标记语言有点相似。

EBML是类似于XML那样的层次化结构,每一个元素都有它的ID(就是元素名)和值。另外由于是二进制存储,还含有一个长度值来记录它的值的长度,每个元素的排列是ID,长度,值
     然后它的ID和长度的表示方法很有趣,是采用了UTF-8那样的不定长前缀表示法。转换成二进制后,如果以1开头,那么长度是1字节,如果以01开头就是2字节,001开头是三字节……依此类推。前缀之后的值就是其值(当然,ID就和值无关,只是拿来确定ID的长度了)。
     对于元素的值,就采用普通的方法存储。值得注意的是,整数之类的值保存与一般二进制会前后颠倒不同,是按从高到低的顺序存储(例如:对于数0xFE65C4,一般的二进制保存到文件后会变成C4 65 FE,而在EBML里就是以FE 65 C4的形式保存的)
     举个例子,这是某MKV文件里的一段:

……42 82 88 6D61 74 72 6F 73 6B 61 42 87 81 01……

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值