【多媒体封装格式详解】---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基本元素结构:
typedef struct {
vint ID // EBML-ID
vint size // size of element
char[size] data // data
} EBML_ELEMENT;
ID标志属性类型
size为后面data部分的大小
data部分为ID所标识属性的实际数据
上面可以看到ID和size的类型都是vint,vint(Unsigned Integer Values of Variable Length)可变长度无符号整型,比传统32/64位整型更加节省空间。
长度计算方法为
长度 = 1 +整数前缀0比特的个数.
从MKV文件中简单接一段来举个例子。这是16进制表示方式
因为每个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的整体框架结构。
|
EBML元素都有自己的级别,每一个高一级的元素由若干次一级的元素组成。
从整个MKV文件整体来看可分为2大部分:
EBML Header和Segment。
EBML Header由EBMLVersion、DocType等子元素组成,包含了文件的版本、文档类型等相关信息。
Segment部分保存了媒体文件的视频和音频的实际数据,其data部分又可以分为SeekHead、Tracks、Cluster等若干子元素。
未完待续!
【多媒体封装格式详解】---MKV【1】相关推荐
- 【多媒体封装格式详解】---ASF(WMV/WMA)
[1] ASF全称Advanced Systems Format 高级串流格式,微软出的一种开放封装格式的标准.它可以包含很多内容如:音视频.脚本命令.JPEG.二进制文件.或是由开发者自己定义的内容 ...
- 【多媒体封装格式详解】---ASF(WMV/WMA)【2】完
4.the Data Object 这部分的内容就是asf文件中数据.Data Object 中包含着很多个 Data Packets.这些Data Packets里面就是音视频数据. 先来看看 Da ...
- 多媒体封装格式详解---MP4
MP4文件格式详解--结构概述 http://blog.csdn.net/pirateleo/article/details/7061452 一.基本概念 1. 文件,由许多Box和FullBox组成 ...
- [转]多媒体封装格式详解---MP4
原文 https://www.cnblogs.com/jingzhishen/p/3698570.html 参考 http://www.cnblogs.com/ranson7zop/p/7889272 ...
- 【多媒体封装格式详解】---MP4【1】
MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在"ISO/IEC 14496-14"标准文件中定义的. 1.最小组成单元 BOX 像FLV的tag.MKV的 ...
- 【多媒体封装格式详解】---ASF(WMV/WMA)【1】
ASF全称Advanced Systems Format 高级串流格式,微软出的一种开放封装格式的标准.它可以包含很多内容如:音视频.脚本命令.JPEG.二进制文件.或是由开发者自己定义的内容.常见的 ...
- 【多媒体封装格式详解】---MP4
[1] MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在"ISO/IEC 14496-14"标准文件中定义的. 1.最小组成单元 BOX 像FLV的tag. ...
- MP4封装格式详解1
转载自:http://blog.chinaunix.net/uid-20758197-id-5056943.html MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在" ...
- 常见音视频文件的编码和封装格式详解
常见的AVI.RMVB.MKV.ASF.WMV.MP4.3GP.FLV等⽂件其实只能算是⼀种封装标准. ⼀个完整的视频⽂件是由⾳频和视频2部分组成的.H264.Xvid等就是视频编码格式,MP3.AA ...
- F4V 封装格式详解(一)-------box
F4V 是Adobe公司推出的用于支持H.264/AAC的媒体格式,而FLV 格式主要是用来支持其他格式,如Sorensen Spark (H.263 )和On2 VP6. 1. F4V 文件格式: ...
最新文章
- Java基础-异常(Exception)处理
- JSON,数组根据字段分组
- Metasploit渗透某高校域服务器
- HDU3388(二分+容斥原理)
- SAP UI5 Repository and MongoDB Repository
- c++ 随机字符串_第3章 别碰白块(《C和C++游戏趣味编程》配套教学视频)
- 如果苹果公司允许其他手机厂商使用iOS系统,对苹果公司来说会有什么好处?
- php常用的日期时间操作
- Bootstrap Table API 中文版 说明文档
- Libhybris之Glibc和Bionic共存时的TLS问题(四)
- 我是如何获取新知识的?
- Ajax 调用(传值)一般处理程序(.ashx)
- OrCAD Library Builder使用
- 网络计算机没有权限,电脑提示无网络访问权限的解决方法
- 用VirtualBox创建虚拟机
- 无线电频谱和波段划分
- VisualNet地税管道资源管理系统
- 5. 统计学基础1:平均值...四分位数、方差、标准差(均方差)、标准误(标准误差、均方根误差)、 标准分
- Wrong namespace. Expected ‘com.baizhi.mapper.UserMapper‘ but found ‘com.com.baizhi.mapper.UserMappe
- ECharts-漏斗图