什么是 MKV 文件?
MKV (Matroska Video) 是一种类似于 MOV 和 AVI 格式的多媒体容器,但它在同一文件中支持多个音频和字幕轨道。 MKV 文件是用于视频的 Matroska 多媒体容器格式。 MKV 基于可扩展二进制元语言,它支持多种视频和音频压缩格式。 MKV 和其他视频格式的主要区别在于 MKV 是一个容器而不是编解码器。 MKV 文件以 .mkv 文件扩展名保存。 MKV 可以将音频、视频和字幕合并到一个文件中,即使这些元素使用不同类型的编码。例如,您可以拥有一个包含 H.264 视频和 MP3 或 AAC 音频的 MKV 文件。 MKV 还支持描述、评级、封面艺术,甚至章节点。 MKV 有几个关键特性是面向未来的。这些功能包括:
- 支持快速搜索。
- 能够选择不同的音频和视频流。
- 支持字幕(硬编码和软编码)。
- 支持元数据、章节和菜单。
- 在线流式传输的能力。
- 能够恢复提供播放损坏文件的能力的错误文件。
历史简介 ##
MKV 文件起源于 2002 年的俄罗斯。首席开发人员是 Lasse Kärkkäinen,他与 Matroska 的创始人 Steve Lhomme 和一个程序员团队一起工作。 MKV 是作为一个开放标准项目开发的,这意味着它是开源的并且可以免费使用。随着时间的推移,该格式得到改进,并在 2010 年成为 WebM 多媒体格式的基础。
Matroska 设计##
Matroska 在 EBML 规范中添加了以下约束。
- EBML Header 的 docType 必须是 ‘matroska’。
- EBML Header 的 EBMLMaxIDLength 必须为 4。
- EBML Header 的 EBMLMaxSizeLength 必须介于 1 和 8(含)之间。
所有顶级元素都以 4 个八位字节编码。
- 语言代码:Matroska(版本 1 到 3)使用的语言代码可以是 3 个字母的书目 ISO-639-2 形式(如法语的“fre"),或者可以使用额外的国家代码,如“fre-ca" " 代表加拿大法语。从 Matroska 版本 4 开始,ISO 639-2 或 BCP 47 可以用于语言代码,但建议使用 BCP 47。
- 物理类型:这些对于音频和视频文件具有不同的含义。例如,ChapterPhysicalEquiv = 60 表示 (CD / 12" / 10" / 7" / TAPE / MINIDISC / DAT) 表示音频和 (DVD / VHS / LASERDISC) 表示视频。
- 块结构 - 块头:块头包含有关轨道号、时间戳、系带类型等的信息。
- Lacing:这是一种在存储数据时节省空间的机制,通常用于小数据块(帧)。有 3 种类型的系带:
- Xiph: Frame with a size multiple of 255 coded with a 0 at the end of the size. For example, The code for 765 is 255;255;255;0.
- EBML: The frame size is coded as a difference between the previous size and this size. The first size in the lace is unsigned but others use a range shift to get a sign on each value.
- fixed-size: The size remains the same.
- SimpleBlock 结构:它受到 Block 结构 的启发,主要区别在于添加了 Keyframe 和 Discardable 标志。除此之外,一切都一样。
Matroska 结构##
Matroska 文档必须由至少一个使用Matroska Document Type 的EBML 文档 组成。每个EBML 文档 必须以EBML 标题 开头,后跟定义为段的EBML 根元素。 Matroska 定义了几个可能出现在 Segment 中的顶级元素。
EBML 使用元素系统组成 EBML 文档,以下是 Matroska 文件中的顶级元素列表:
- EBML 文档:整个文件的包装器。
- EBML Header:它包含文件的标题信息,如 DocType。
- Segment:包含所有其他顶级元素的顶级元素。
- SeekHead:它包含其他顶级元素的段的位置。
- 信息:它包含有关该段的一般信息。
- 曲目:描述了许多曲目的顶级信息元素。
- 章节:用于定义基本菜单和分区数据。
- Cluster:包含块结构的顶级元素。
- Cues:一个顶级元素,其中包含加速寻求访问的 Segment 本地的所有条目。
- 附件:这包含附件。
- 标签:此元素包含描述曲目、版本、章节、附件或整个片段的元数据。
下表显示了 Matroska 文档的结构,其中大部分元素以层次结构显示:
EBML 标题 | ||||||
细分 | 寻头 | 寻求 | 搜索ID | |||
寻找位置 | ||||||
信息 | 段UID | |||||
段文件名 | ||||||
上一页UID | ||||||
上一个文件名 | ||||||
下一个UID | ||||||
下一个文件名 | ||||||
细分家庭 | ||||||
章节翻译 | ||||||
时间戳刻度 | ||||||
持续时间 | ||||||
日期UTC | ||||||
标题 | ||||||
沐星App | ||||||
写作应用 | ||||||
曲目 | 跟踪条目 | 轨道号 | ||||
TrackUID | ||||||
轨道类型 | ||||||
姓名 | ||||||
语言 | ||||||
编解码器ID | ||||||
编解码器私人 | ||||||
编解码器名称 | ||||||
视频 | 标志交错 | |||||
现场订单 | ||||||
立体模式 | ||||||
阿尔法模式 | ||||||
像素宽度 | ||||||
像素高度 | ||||||
显示宽度 | ||||||
显示高度 | ||||||
纵横比类型 | ||||||
颜色 | ||||||
音频 | 采样频率 | |||||
频道 | ||||||
位深度 | ||||||
章节 | 版本条目 | 版本UID | ||||
版旗隐藏 | ||||||
版本标志默认 | ||||||
EditionFlagOrdered | ||||||
章原子 | ChapterUID | |||||
ChapterStringUID | ||||||
章节时间开始 | ||||||
章节时间结束 | ||||||
ChapterFlagHidden | ||||||
章节显示 | 章节字符串 | |||||
章节语言 | ||||||
集群 | 时间戳 | |||||
无声曲目 | ||||||
职位 | ||||||
上一页尺寸 | ||||||
简单块 | ||||||
块组 | ||||||
加密块 | ||||||
提示 | 提示点 | 提示时间 | ||||
提示跟踪位置 | ||||||
附件 | 附件 | 文件描述 | ||||
文件名 | ||||||
文件MimeType | ||||||
文件 UID | ||||||
文件推荐 | ||||||
文件使用开始时间 | ||||||
文件使用结束时间 | ||||||
标签 | 标签 | 目标 | 目标类型值 | |||
目标类型 | ||||||
标签跟踪UID | ||||||
TagEditionUID | ||||||
TagChapterUID | ||||||
标签附件UID | ||||||
简单标签 | 标记名 | |||||
标记语言 | ||||||
标签默认 | ||||||
标签字符串 | ||||||
标签二进制 | ||||||
简单标签 |
使用编解码器###
如果您不想要新的媒体播放器并且更喜欢使用现有的播放器,则需要安装一些编解码器(压缩/解压缩的简写)。即使下载编解码器是一个有效的选项,您也应该小心来源,这些可能包含恶意软件。