视频编解码器与自由世界
很少有视频制作人会猜到“编解码器”这个词会成为家喻户晓的词汇,但由于市场上有如此多的编解码器,普通电脑用户别无选择,只能痛苦地意识到,如果他们的电脑没有安装正确的编解码器,他们将无法观看他们最喜欢的网络或 DVD 视频内容。因此,任何电脑爱好者、专业系统管理员或视频制作人都应该熟悉编解码器、它们存在的原因以及如何处理它们。
“编解码器”一词是“编码”和“解码”两个词的组合。概念很简单;如果我只有一页纸,想在上面写两页的内容,我可能会用某种代码写一个注释,省略某些字母或单词。这样可以将内容放在分配的一页上,但对于预期的读者来说毫无意义,除非我给这些读者一个关于如何解码写作的密钥,以便他们可以将所有内容拼凑起来并理解所写的内容。这正是编解码器对视频所做的事情。
理想情况下,编解码器可以有效地向最终用户提供高质量的视频,并且下载时间合理。然而,大型公司经常选择使用编解码器的排他性,以便他们可以为解码该视频的密钥收费,例如 DVD 和流媒体视频。因此,许多编解码器存在的原因根本不是为了提高视频压缩和传输的质量和效率,而是为了阻碍向非付费观众的传输——有时甚至以牺牲视频质量为代价。
最终用户、系统管理员和视频内容制作者都受到编解码器兼容性和可用性的影响。熟悉编解码器非常重要,因为计算机现在是许多人娱乐中心的核心。
缺少编解码器通常会影响整个系统。例如,如果系统上未安装 Xvid,则 Xvid 将无法用于 Web 浏览器、媒体播放器或媒体编辑器。安装 Xvid 组件后,GNU/Linux 系统上的所有应用程序都将识别它并在需要时使用它。
对于专有软件,即使系统安装了编解码器,专有应用程序也可能无法使用该编解码器,仅仅是因为它已被编程为出于政治原因而不使用该编解码器。例如,Digidesign 的 Avid 或 Apple 的 Final Cut Pro 没有实际理由无法识别和编辑 Ogg 文件,尤其是在考虑到这些应用程序的价格标签的情况下。
请记住,编解码器和文件格式之间存在差异。文件格式,例如 .mp4、.mov 或 .avi,实际上只是视频和音频流的容器。因此,例如,.mp4 文件可能使用像 Xvid、h.264、x264、Decklink 等编解码器,或者它实际上可能使用实际的 MPEG-4 编解码器(或任何其他数量的编解码器)。虽然系统通常可以检测到文件中使用的实际编解码器,但如果将文件格式(容器)视为与编解码器(编码器)相同的事物,则可能会使用户感到困惑。
大多数系统都预装了一定数量的编解码器,可以与操作系统的默认 Web 浏览器和媒体播放器一起使用。Apple 和 Microsoft 将他们自己的专有和受支持的编解码器与他们的系统捆绑在一起,而 Linux 发行版则分发他们受支持的开源编解码器。尽管如此,在这三种情况下,最终用户或系统管理员都将不得不在某个时候下载非捆绑和不受支持的编解码器。
在今天的系统中,获取编解码器通常简化为点击几下鼠标。对于最终用户来说,最流畅的体验可能很容易在 Linux 桌面环境中获得,因为 Ubuntu、Linspire、Fedora 和 OpenSUSE 等发行版对“Linux 不播放媒体”的先入之见非常敏感,以至于他们几乎使其自动化。
要在您的 Linux 机器上获取用于观看 DVD 的编解码器,只需将 DVD 放入计算机,默认播放器就会打开(例如 Totem 或 Kaffeine 或 Xine)。如果尚未安装 MPEG-2 解码器,系统会提示您下载并安装它。点击几下鼠标,编解码器就安装好了,电影播放器通常无需重新启动即可播放 DVD。
同样,大多数 Web 浏览器都会检测到缺少的编解码器,并引导用户访问包含编解码器可下载安装程序的网站,或者,更好的是,系统会介入并提供自动下载和安装软件包。同样,只需点击几下鼠标,编解码器就安装完成,可以启用浏览器中的视频。
如果 Web 浏览器尝试播放没有安装正确编解码器的视频,则在某些情况下,用户获得的唯一反馈将是视频应该在的位置出现空白区域。但是,您可以轻松地强制系统提示下载编解码器。
首先,右键单击浏览器中视频应该播放的空白区域,然后在您发行版的默认电影播放器中打开该电影(它可能缺少声音和图像)。当系统的媒体播放器无法播放视频时,它将提供查找合适的编解码器并安装它。
如果 Linux 系统无法识别正在使用的编解码器,或者如果您选择的发行版不提供自动编解码器解决方案,您可以做一些侦查工作,找出您需要找到的编解码器并手动安装它。
这种编解码器取证最容易使用 VideoLAN 的 VLC 播放器完成;它是免费的、开源的,并且为大多数流行的 Linux 发行版预先打包。在您的系统上安装 VLC 播放器后,打开您想要播放的电影。VLC 很可能会播放该视频,但如果您仍然需要发现其编解码器,以便视频可以在 VLC 播放器之外的系统上播放,请转到“视图”菜单并选择“流和视频信息”。这将打开文件中包含的流(视频、音频、时间码、字幕等)以及用于创建每个流的编解码器的综合列表。
掌握了这些信息后,返回到您发行版的软件包管理器,并搜索 VLC 显示正在使用的编解码器。或者,如果您运行的是 Slackware 或 Gentoo 或类似的发行版,请在线查找编解码器。典型的开源解决方案将是 GStreamer 软件包,其中包含许多用于流行专有编解码器的开源解码器。同样,这些可以通过您的软件包管理器或手动安装。
如果您尝试实现浏览器内可播放性,请注意,有时解码软件包(例如 Flash)将特定于您尝试观看视频的 Web 浏览器。因此,请注意安装正确的软件包,以与您的浏览器(Firefox、Konqueror、Opera 等)兼容。
安装编解码器后,如有必要,重新启动浏览器,然后再次尝试播放视频。
无论您是在编码您制作并希望分发的视频,还是从一个来源获取视频并将其转码为对您的系统更友好的格式,都有方便的开源编码器可以生成许多流行的消费者内容播放器可播放的视频文件。最有效的是 FFmpeg 程序——有时包装在 GUI 中,有时严格在命令行中使用。FFmpeg 手册页内容广泛,但相当容易使用。
视频编码最好通过实践学习,虽然在编码视频时有很多重要的变量,但没有神奇的设置;它们会根据视频的目标大小以及实际内容(例如,像素从一个视频帧到另一个视频帧改变色度或亮度值的频率)而变化。
要编码视频,首先确保您的系统上安装了 FFmpeg。如果没有,请通过命令行添加它(sudo apt-get install ffmpeg在 Debian 系统上),或使用您发行版的软件包管理器。
编码命令如下所示
ffmpeg -i [filename] -vcodec [codec to use] -s [target frame size] ↪-b [target bit rate in kbps] -r [target frames per second] ↪-acodec [audio codec to use] -pass 2 -ar [target audio sample rate] ↪-ab [audio bit rate in kbps] -f [target file format] [output filename]
例如
ffmpeg -i bigmovie.m4v -vcodec xvid -s 720x480 -b 3000k -r 24 ↪-acodec libfaac -pass 2 -ar 128k -f .mp4 freemovie.mp4
上面的示例将视频从专有的 MPEG-4 格式转码为带有 libfaac 声音的 Xvid 开源编解码器,采用标准清晰度帧大小和相当高的视频质量。
重要的变量是帧大小 (-s),因为它决定了视频的可伸缩性,以及比特率(视频为 -b,音频为 -ar),它决定了每个视频帧发送多少信息——比特率越高,图像越清晰漂亮,但文件大小也会更大。最后,-pass 变量决定了编码器将对视频进行多少预处理。在单次模式下,编码完成速度相当快,但并不总是最佳的。通过两次编码,FFmpeg 会查看视频文件一次,收集必要的数据,然后在第二次编码时进行实际编码。最终结果是更高的质量压缩,但您可以预期编码时间会增加两倍或三倍。
另一种流行的视频转码方式是使用 GUI 程序从编码的 DVD 中翻录视频,使其可以在不受限制的编解码器中观看。这也非常适合创建家庭媒体服务器,将您的整个电影收藏数字化并随时准备播放。显然,这在法律上的合法性每天和每个国家/地区都在变化。但是,GUI 程序非常丰富,并且使用与 FFmpeg 相同的变量。您将需要设置要将视频保存到的视频编解码器、音频编解码器、每个编解码器的比特率、帧大小等等。
自由软件运动的伟大编解码器 Ogg Vorbis 和 Ogg Theora 在 GNU/Linux 上显然得到了很好的支持。使用以下命令可以轻松生成它们:ffmpeg2theora。ffmpeg2theora 的命令行变量与 FFmpeg 的变量类似
ffmpeg2theora [filename] -x [target horizontal pixel count] ↪-y [target vertical pixel count] -V [target bi trate in kbps] ↪-A [audio bit rate] -c [audio channels] -H [audio sample rate] ↪-o [output filename]
当开源运动清楚地意识到视频编解码器注定要保持专有和适得其反时,Ogg 格式诞生了。Ogg Vorbis(用于声音)和 Ogg Theora(用于视频)是先进且功能齐全的编解码器,对所有人开放且任何系统都可以免费使用。
反对使用 Ogg 的一个常见论点是,它要求 Microsoft 和 Apple 产品(或大多数计算机用户)的用户寻找合适的播放器。然而,现在很清楚,要求用户下载媒体播放器或媒体插件一点也不罕见,并且随着内容交付变得更加依赖互联网和以计算机为中心,这种情况很可能会变得更加普遍。今天的人们期望必须下载视频播放器才能观看某些视频内容。Ogg 的真正问题在于,该格式没有无处不在的媒体播放器;RealPlayer 有 Real Media,QuickTime 有 QuickTime Player,Windows Media 有 Windows Media Player,Flash 有 Flash Player 等等。人们可以轻松找到这些,但他们去哪里进行 Ogg 播放呢?
通过推广 Ogg 格式来推广免费软件和免费编解码器,但不要忘记推广一个可以在所有主要平台上轻松有效地播放媒体的播放器。VLC 播放器是这项工作中更好的播放器之一,它可以在 Windows、Mac OS X、GNU/Linux、BSD、BeOS 和 Solaris 上安装。另一个是 miro,它类似于 iTunes,可以聚合视频播客、IP TV 和 YouTube,以及您本地机器上的媒体。两者都播放 Ogg,因此在您分发的 Ogg 片段中发送播放器的链接。
事实是,并且将继续保持,开源工具是在多平台多媒体世界中工作的视频专业人士和系统管理员的救星。多年来,FFmpeg 和 VLC Player 一直是我视频工具包中值得信赖的播放、视频分析和视频转换程序,它们解决了专有的、价格过高的编辑软件包因独有的编解码器许可证和不兼容性而引入的后期制作问题。
以下是两个对比鲜明的例子:
Apple 的顶级视频制作套件 Final Cut Suite 最近的一次更新放弃了对许多编解码器的支持,同时增加了对 Apple 专有编解码器的支持。作为一个封闭系统,这个问题没有解决方案,只有转码源材料的解决方法。
开源应用程序 Blender 支持其主机系统支持的任何编解码器,并且可以在 Blender 的 IRC 频道上请求程序员进行更新,通常会在几天内生成补丁。Final Cut Studio 每个客户端许可证的价格都超过一千美元。当然,Blender 是免费的。
只要编解码器的主要市场仍然是那些继续希望保护其数字内容的公司,就会继续开发新的编解码器,这些编解码器将需要单独的许可证才能使用。这将导致 Web 和视频制作领域出现无数的编解码器。并且,只要使用专有编解码器需要许可证,交付方法就会变得更加分散和复杂。
大胆地使用免费编解码器,统一视频制作和交付。开源运动比以往任何时候都强大,艺术界的知识共享理念正在获得严肃的媒体报道,以鼓励知名人士(如 Radiohead 和 Prince)、冒险的独立人士(如电影 符文)、丰富的 pod-safe 音乐、互联网档案馆等免费分发的作品。目前的气候使得免费编解码器有独特的机会成为最大化兼容性和最终用户自由的流行选择。
Seth Kenlon 是一位电影和视频剪辑师、系统顾问和软件培训师。与此同时,他还是 Linux 用户、支持者和推广者。