WebM 是 Google 在 2010 年推出的一种视频格式,目标只有一个:让浏览器在无需支付专利许可费的情况下播放视频。当时 MP4 所用的编码器都在专利池之内,这让开源浏览器,以及任何需要大规模发布视频的人都很为难。Google 选用了开放的 Matroska 容器,把它精简成一个小而严格定义的子集,配上免版税的编解码器并将结果公布。如今 WebM 已经在网页中随处可见,只是大多数人没有注意到。你直接接触到 WebM 文件的两种常见方式是:从网站下载视频,或在浏览器中使用屏幕或摄像头录制功能,因为这是浏览器录制视频时使用的格式。
WebM 文件是如何组成的
在结构上,WebM 就是缩减来宾名单后的 Matroska。它使用相同的 EBML 布局,这是一种在精神上类似于 XML 的二进制嵌套结构,并采用同样的理念:由段来承载轨道,以及带时间戳的数据块簇。不同之处在于内部允许的内容。视频必须使用 VP8、VP9 或 AV1;音频必须使用 Vorbis 或 Opus。这些编码器都是有损的,较新的编码器在相同大小的数据中可以压缩出更高的质量,但代价是编码速度更慢。VP8 和 VP9 还可以携带 Alpha 通道,因此 WebM 可以实现真正的透明度,这对网页上的叠加元素和动画非常实用。
由于格式定义得非常狭窄,只要是在支持 WebM 的环境中能播放的 WebM 文件,基本就能在所有支持 WebM 的地方播放,而且浏览器无需额外软件就能解码。同样因为这一限制,WebM 无法包含完整 Matroska 文件中支持的众多可选附加内容。
WebM 文件包含哪些元数据
几乎没有,这正是设计使然。WebM 通常是你会遇到的元数据最“安静”的视频文件之一。
能可靠存在的内容都是技术性信息。段信息会给出时长,并且通常包含以 UTC 表示的创建时间,以及复用应用和写入应用,也就是生成该文件的库和程序名称。在浏览器中录制的视频通常会把浏览器标记为写入方,而转换后生成的文件通常会写出转换库的名称。每个轨道条目会说明所用编解码器、像素尺寸、存储的帧率、语言代码,以及音频声道数和采样率。
描述性标签也是可以存在的。WebM 继承了 Matroska 的标签系统,因此文件可以包含标题、作者、描述或编码备注等,并按其对应的对象分组。在实际应用中,这些标签往往缺失,因为大多数 WebM 文件是由网站或浏览器自动生成的,而不是由人工填写标签。
WebM 完全不包含任何相机元数据:没有 EXIF 区块、没有相机品牌或型号、没有 GPS 坐标、也没有镜头或曝光字段。这个格式本身没有任何部分是用来记录视频拍摄地点的。不过有一点需要留意:如果 WebM 是由手机拍摄的视频转换而来,转换应用可能会从原始文件中复制标题、日期或评论,因此建议查看报告,而不是直接假定文件中完全没有信息。
浏览器录制还有自己的一个特性:在录制仍在进行时就开始写入文件,因此时长有时会缺失或显示为零。这就是为什么某些播放器在文件重新复用前,会把屏幕录制视频显示为没有时间轴的原因。
何时选择 WebM
当你要在网页上放视频时可以选择 WebM,尤其是当你需要透明效果,或者不想考虑编解码器授权问题时。在相同画质下,文件大小表现良好,而且不需要任何插件。
对于要离开网页环境传播的视频,使用搭配 H.264 的 MP4 仍然更稳妥:旧款电视机、机顶盒、视频编辑软件以及部分手机相册对它的支持更可靠,而且几乎所有设备都支持对它进行硬件解码。如果你需要一个“到处都能放”的单一文件格式,MP4 是首选;如果你能控制视频所在的网页,WebM 则是更轻量、限制更少的选项。