文件格式

MKV - Matroska 多媒体容器

MKV 是 Matroska 容器,一种开放格式,可以在单个文件中包含任意数量的视频、音频和字幕轨道,以及章节和附件。

.mkv

MKV 是 Matroska 的缩写,这是一种开放的容器格式,由 Steve Lhomme 和一群贡献者在 2002 年发起,他们希望有一种不被任何公司拥有、没有任何限制的视频文件格式。名字源自俄罗斯套娃,这个比喻很贴切:一个 Matroska 文件就像一个盒子,可以装下你放进去的任何内容。与只接受一组限定编码格式和功能的 MP4 不同,Matroska 从一开始就被设计为可以接受一切,这也是它成为电影档案、多字幕动漫以及复制到硬盘的 Blu-ray 光盘首选格式的原因。其底层结构随后被发布为互联网标准,Google 也基于其中的一个子集创建了 WebM。

MKV 文件是如何组成的

Matroska 基于 EBML 构建,这是一种类似紧凑版 XML 的二进制结构:一切都是元素,元素可以相互嵌套,每个元素都会声明自己的长度。一个文件由文件头开始,然后是包含各轨道的段、用于定位的索引,以及媒体内容本身,媒体被拆分成带有时间戳的小块簇。

MKV 本身不进行任何压缩。内部的视频通常是 H.264、HEVC、AV1 或 VP9;音频可以是 AAC、Opus、FLAC、DTS 或 Dolby 音频等。由于容器本身不在乎装的是什么,一个文件可以同时包含无损音轨和压缩音轨、多国语配音、强制和完整字幕集(文本或位图形式)、用于场景选择的章节标记,以及附件:封面图片,或者某条字幕轨需要的精确字体,以确保正确显示。

MKV 文件包含哪些元数据

Matroska 将元数据存放在两个位置,并且都会出现在报告中。

段信息块描述的是文件本身。它包含整体标题、时长、UTC 创建日期、段的唯一标识,以及两个比较关键的字段:混流应用(muxing application)和写入应用(writing application),它们会给出生成该文件的库和程序名称,通常还包括版本号。随后,每条轨道都有自己的条目,其中包含名称、语言代码、编码格式、显示尺寸,以及标记轨道是否为默认或强制的标志位。

描述性元数据使用 Matroska 的标签系统,其结构比大多数格式更完善。标签按作用对象分组,因此一个标签可以应用于整个文件、某一条轨道、某个章节,或其上的类似专辑的集合,每个标签由名称和值组成。常规标签名用大写书写,最常见的包括:TITLE、ARTIST、DATE_RELEASED、GENRE、COMMENT、DESCRIPTION、ENCODER、PART_NUMBER 和 TOTAL_PARTS。标签还可以声明其所用语言,因此同一个字段可以针对不同受众出现多次。

Matroska 通常不会携带的是相机元数据。它没有 EXIF 块、相机型号或 GPS 字段,因为 MKV 文件通常是通过转换或拷贝其他来源生成的,而不是直接由相机录制。它包含的个人痕迹是另一种类型:写入应用会表明你使用了哪个程序和版本,创建日期表明生成时间,标题和轨道名称往往保留了原始发行或光盘的名字,而附件可以是任何文件,包括某人无意间留在其中的文件。

何时选择 MKV

当你打算长期保留文件时,选择 MKV。对于包含多国语音轨、需要自由切换的字幕轨以及章节的影片,它是此处最合适的容器格式,并且能够很好地兼容各种非常见编码格式。

MP4 是另一种选择,它在兼容性方面占优:浏览器、手机、电视和机顶盒都可以直接播放 MP4,而对 MKV 的支持则取决于设备以及是否安装了足够多的播放器。一个合理的做法是用 MKV 做归档,用 MP4 对外分享。在两者之间转换时,通常只需重新封装即可,将媒体流复制到另一种封装中而不损失质量,只要内部编码格式在 MP4 支持范围内。