电影格式

我们平常笼统说的「视频格式」其实包含三个部分:视频编码、音频编码、容器格式。其中「编码」这个概念其实又包含两个方面:编码和解码。「视频编码」作为动词指的是将动态的图像信息转化为二进制数据的过程;其逆过程称为「视频解码」。「视频编码」作为名词则通常指的是某种特定的编码方式。同样的概念也适用于「音频编码」,只不过它转化的是声音信息。大多数「视频文件」都同时包含视频和音频,因此编码后至少都有两组二进制数据,并且两组数据必须按照特定的方式同步起来,否则我们看到的画面和听到的声音将不吻合。为了解决编码后多组不同类型的的数据的存储、传输问题,需要将他们按照一定的规律组织起来,这种组织方式即是「容器格式」。

我们常见的视频文件扩展名包括 .avi, .rmvb, .mp4, .mkv 等。其实扩展名都是指的某种容器格式。这些容器里面存放的数据可能采用了多种不同的编码方式。例如,常见的 avi 文件里面存放的通常是 xvid 或 divx 编码的视频和 mp3 编码的音频。rmvb 文件里面存放的通常是 RV40 编码的视频和 cook 编码的音频。mp4 文件里面通常存放的是 H.264 编码的视频和 AAC 编码的音频。mkv 文件里面存放的则可能包含前面各种。

问题中要比较的其实并不是 MKV、MP4、RMVB。这些只是封装格式。比较画质其实是比较视频编码,也就是 MKV、MP4 中常见的 H.264 和 RMVB 中的 RV40 (RealVideo 的最高版本编码)。

(以下 A/B 表达方式指的是 B 容器格式中的 A 视频编码)

在 H.264/MP4 出现之前,广泛使用的 DivX/AVI 压缩比并不高。在国内网络视频兴起的时候,绝大部分网民的带宽很低( < 1Mbps。即便是现在也不高,家用『宽带』通常也就 2~5 Mbps)。因此网络视频的文件尺寸异常重要。在提供可以接受的画质条件下,RV40/RMVB 要比 DivX/AVI 来的好。一部时长两个小时、分辨率约 720×480 的 RMVB 电影通常可以在画质不至于太糟糕的情况下压缩到 400MB 以下。于是在各大视频组就出现了基于 RMVB 的各种成熟的工具和流程,可以很方便的从片源转码到 RMVB,中间同时完成硬烧字幕、广告等功能。为什么要硬烧(不可逆)?因为:1)普通用户不同操心软字幕的编码、播放问题。拜 Windows 所赐,跨语言通用的 UTF-8 编码文本字幕在中文圈子里很少。2) 硬烧的视频组、字幕组广告无法消除,有效防止其他人『盗用』(都是盗版,墨迹个啥……)自己组编码、翻译的视频。

H.264/MP4 出现后,国外工业界基本就统一到了这个格式上了。Flash 的兴起也让 Real 没落了。国外的 BT 站现在根本找不到 RMVB 视频。一般就低画质、小尺寸的 Xvid/AVI 和高画质、大尺寸的 H.264/MP4 或 H.264/MKV。发达国家的家用带宽现在很不错了,10~100Mbps 都有。高带宽的连接让用户可以下载体积在 5GB 以上的 1080p 或 720p H.264/MP4 视频(我曾下过 30GB 一部的 Wall-E 高清 1080p)。这样的划分形成了个误区,让很多『不明真相的群众』认为 MP4、MKV 臃肿。其实 H.264 也可以做低画质、小尺寸的视频,而且效果至少和 RMVB 的低码率相当(如果不是更好的话)。而且因为 H.264 成为工业标准,近年来兴起的移动设备上通常有硬件解码芯片,可以低功耗的播放 H.264/MP4 视频。新的桌面系统如 Windows 7、Mac OS X 现在也都自带 H.264/MP4 解码能力,无须额外安装解码器。因此无论从任何方面讲,现在的视频组都应该着手向 H.264/MP4 过渡(虽然 MKV 容器很灵活,但 H.264/MKV 不是工业标准,在移动设备上会有问题)。

在这样的情况下,为何国内的视频站还抱着 RMVB 不放呢?一个原因是之前形成的那个误区,用户认为 H.264/MP4 的尺寸太大。另外一个更重要的原因则是相应的工具、流程还没有完善。H.264 的压缩很慢,即便在新机器上,速度也很难接受。视频组每天要应对大量的转码任务,而且要为抢先发布争分夺秒。缓慢的压缩过程降低了视频组的吞吐量和时效性。这个问题随着 Intel 开发的 QuickSync [1] 技术的普及(Sandy Bridge 架构 CPU 开始搭载)会慢慢解决。如果转码软件支持,QuickSync 可以高速(两倍)的进行 H.264 视频转码。此外,H.264 的硬烧字幕、广告、剪辑工具目前还没有完善(起码还没有盗版到,因而在国内无法普及)。等工具和流程的问题解决了,RMVB 就可以寿终正寝了。

这次主要讨论两种:

1、采用 H.264 视频编码和 AAC 音频编码的 MP4 文件(H.264/AAC/MP4 组合)
2、采用 VP8 视频编码和 Vorbis 音频编码的 WebM 文件(VP8/Vorbis/WebM 组合)

H.264 是目前公认的效率最高的的视频编码。它是由国际电信联盟通电信标准部 (ITU-T) 和国际标准化组织/国际电工委员会动态图像专家组 (ISO/IEC MPEG) 共同开发的一种视频压缩技术。它的另外一个名称是 MPEG-4 AVC。目前 H.264 被广泛的运用在蓝光电影、数字电视、卫星电视、网络媒体等领域。可以说 H.264 是目前被运用得最为广泛的视频编码。

AAC 是 ISO/IEC 标准化的音频编码。它是比 MP3 更先进的音频压缩技术,目的在于取代陈旧的 MP3。AAC 音频编码被广泛的运用在数字广播、数字电视等领域。目前网上最大的音乐零售商苹果的 iTunes 音乐商店的所有数字音乐也全部采用的 AAC 音频编码。

MP4 则是 ISO/IEC 制定的容器格式标准,用以封装编码后的视频和音频数据。MP4 支持多种方式编码后的数据,但最常见的是 H.264 编码的视频和 AAC 编码的音频。

VP8 是类似于 H.264 的另一种视频编码,由 On2 公司开发。后来 Google 收购了 On2,因此 VP8 现在归 Google 所有。据称为了避开 H.264 的专利问题,VP8 没有采用一些特别的算法,使得其压缩效率效率略低于 H.264。

Vorbis 是类似 AAC 的另一种免费、开源的音频编码,由非盈利组织 Xiph 开发。业界的普遍共识是 Vorbis 是和 AAC 一样优秀、用以替代 MP3 的下一代音频压缩技术。由于 Vorbis 是免费、开源的,并且没有 AAC 的专利问题,许多游戏厂商采用 Vorbis 编码游戏中的音频资料,例如著名的 Halo,Guitar Hero 等。最近流行的在线音乐网站 Spotify 也是使用的 Vorbis 音频编码。

WebM 是 Google 基于开源容器格式 Matroska(.mkv 很多朋友应该不陌生)而专门开发的一种新型容器格式。其目的是用来封装 VP8 编码的视频和 Vorbis 编码的音频数据以供网络媒体使用。

在涉及 HTML5 视频格式的讨论中,通常「H.264」指代 H.264/AAC/MP4 这个组合,而「WebM」指代 VP8/Vorbis/WebM 这个组合。为了符合习惯、避免重复,我们也将采用同样的简称,即 H.264 = H.264/AAC/MP4,WebM = VP8/Vorbis/WebM。

这次主要讨论两种:

1、采用 H.264 视频编码和 AAC 音频编码的 MP4 文件(H.264/AAC/MP4 组合)
2、采用 VP8 视频编码和 Vorbis 音频编码的 WebM 文件(VP8/Vorbis/WebM 组合)

H.264 是目前公认的效率最高的的视频编码。它是由国际电信联盟通电信标准部 (ITU-T) 和国际标准化组织/国际电工委员会动态图像专家组 (ISO/IEC MPEG) 共同开发的一种视频压缩技术。它的另外一个名称是 MPEG-4 AVC。目前 H.264 被广泛的运用在蓝光电影、数字电视、卫星电视、网络媒体等领域。可以说 H.264 是目前被运用得最为广泛的视频编码。

AAC 是 ISO/IEC 标准化的音频编码。它是比 MP3 更先进的音频压缩技术,目的在于取代陈旧的 MP3。AAC 音频编码被广泛的运用在数字广播、数字电视等领域。目前网上最大的音乐零售商苹果的 iTunes 音乐商店的所有数字音乐也全部采用的 AAC 音频编码。

MP4 则是 ISO/IEC 制定的容器格式标准,用以封装编码后的视频和音频数据。MP4 支持多种方式编码后的数据,但最常见的是 H.264 编码的视频和 AAC 编码的音频。

VP8 是类似于 H.264 的另一种视频编码,由 On2 公司开发。后来 Google 收购了 On2,因此 VP8 现在归 Google 所有。据称为了避开 H.264 的专利问题,VP8 没有采用一些特别的算法,使得其压缩效率效率略低于 H.264。

Vorbis 是类似 AAC 的另一种免费、开源的音频编码,由非盈利组织 Xiph 开发。业界的普遍共识是 Vorbis 是和 AAC 一样优秀、用以替代 MP3 的下一代音频压缩技术。由于 Vorbis 是免费、开源的,并且没有 AAC 的专利问题,许多游戏厂商采用 Vorbis 编码游戏中的音频资料,例如著名的 Halo,Guitar Hero 等。最近流行的在线音乐网站 Spotify 也是使用的 Vorbis 音频编码。

WebM 是 Google 基于开源容器格式 Matroska(.mkv 很多朋友应该不陌生)而专门开发的一种新型容器格式。其目的是用来封装 VP8 编码的视频和 Vorbis 编码的音频数据以供网络媒体使用。

在涉及 HTML5 视频格式的讨论中,通常「H.264」指代 H.264/AAC/MP4 这个组合,而「WebM」指代 VP8/Vorbis/WebM 这个组合。为了符合习惯、避免重复,我们也将采用同样的简称,即 H.264 = H.264/AAC/MP4,WebM = VP8/Vorbis/WebM。