Linux 作为视频桌面

作者:Robin Rowe

在荣获艾美奖的电影 Titanic 中,制作工作室 Digital Domain 在由一百多台 DEC Alpha 机器组成的网络上使用 Linux 来渲染特效。然而,在制作的艺术方面,他们使用了 350 台运行 IRIX 的 SGI 机器和一百台运行 Windows NT 的 DEC Alpha 机器。1997 年,Linux 被认为尚未准备好用于视频桌面。在过去的几年里,作为视频制作的桌面操作系统,Linux 有哪些发展?

为了使 Linux 成为电视和电影制作领域的参与者,它必须具有出色的图形处理能力、支持视频所需超大文件尺寸的高性能磁盘 I/O、与模拟和数字视频输入/输出设备的集成,以及实际的视频应用程序本身。随着这些功能在 Linux 上变得可用,开发视频应用程序的公司(包括我工作的公司)正在以新的方式看待 Linux。

由于“数字融合”作为标题似乎过于冗长,而“Linux 多媒体”又显得过于平庸,我们将该专栏称为 Media/GFX。GFX 是“graphics”(图形)的缩写,用于电视新闻节目流程和脚本中,这个术语是我多年前在 NBC 电视台担任新闻制作技术总监时学到的。Media/GFX 将讲述我们在接下来的一年中安装多媒体应用程序并在编程方面取得进展的过程中,与 Linux 的坎坷经历,并将讨论从头开始为 Linux 开发多媒体应用程序是什么样的体验。我自己的专长领域是使用 C++ 和 Java 进行视频软件设计,这在任何平台上总是既有趣又令人沮丧。视频应用程序始终是最具挑战性的,因为它们对 CPU、磁盘和 I/O 系统提出了很高的要求。

以开发软件为生的公司在选择操作系统时需要务实。它需要流行、功能强大且不太难于开发软件。每隔几年,这个平台就会发生变化。例如,在过去的四年里,我的软件开发主要在 Windows NT 上进行,一些代码被移植到 Solaris 和 Alpha 用于服务器。使用 Windows 的一个主要动机是为其提供的各种相对廉价的硬件,包括 MPEG-1 和 MPEG-2 视频压缩卡。在我切换到 WinNT 之前,我使用的是带有 Parallax Motion-JPEG 卡的 Sparc20 Solaris,再之前是运行 IRIX 的简单 SGI Indigo。如果您是一名视频软件开发人员,最好不要对某个操作系统过于依恋。

多年来,Macintosh 一直被认为是首选的图形平台,但已被 Windows 的巨大普及度所超越。Windows 98 和 Millennium Edition 版本是利用高性能图形的游戏的主要平台。然而,基于 DOS 的 Win9x 的稳定性和安全性问题往往使其无法用于高可靠性广播场景。出于同样的原因,Win9x 被广泛禁止用于国防部用户。美国国防部是图形系统的主要消费者,通常使用 WinNT 或 Solaris。Windows NT/2000 也是视频工作站的主要参与者。WinNT/2k 的操作系统设计受 VMS(也是由同一位架构师创建的)的影响,它比基于 DOS 的 Windows 版本更像 UNIX,甚至符合 POSIX 标准。在高端领域,SGI 及其 IRIX 版本的 UNIX 长期以来一直主导着电影制作视频工作站。然而,WinNT/2K 已经取得了进展。

今年早些时候,SGI 宣布他们正在大规模转向 Linux。最大的新闻是图形,这是 SGI 赖以建立声誉的领域。根据 SGI 的说法,通过与视频芯片制造商 NVIDIA 合作,基于 SGI Intel 的 Linux 工作站型号 230、330 和 550 每秒可以绘制超过 1700 万个三角形,每秒高达 5.4 亿像素。他们的 VPro 图形子系统是 32MB 或 64MB DDR AGP 4X 板卡。也许像我一样,您还没有准备好冲出去购买 SGI 工作站。您不必这样做。图形方面的改进已经开源并融入到 XFree86 中。Linux 的图形功能已经取得了质的飞跃!

SGI 做出重大贡献的另一个视频功能领域是文件系统。DV IEEE-1394 火线视频传输流的速度约为 30MB/秒(通常宣传为仅 25MB/秒,但这仅计算视频,不包括音频)。按照这个比特率,不到九分钟您就会遇到 Ext2 中 2GB 文件大小的限制。要容纳一个 22 分钟的电视节目,您需要创建一个 5GB 的文件。对于一部 100 分钟的电影,则需要 23GB。

XFS 是一种高性能日志文件系统,能够处理高达 9000PB 的文件,可以容纳持续 837 个世纪的 DV 文件。XFS 已从 SGI IRIX 移植到 Linux,并于 9 月发布了 beta 版本。日志文件系统将磁盘活动视为数据库事务,如果被崩溃或断电中断,则能够回滚到稳定配置。无需 fsck。XFS 不是唯一可用的高性能 Linux 文件系统。其他日志文件系统(非来自 SGI)包括 JFS、ReiserFS 和 Ext3FS。日志文件系统不必处理大文件。实际上,构建在 Ext2 之上的 Ext3FS 不适合大型视频文件,因为它继承了相同的 2GB 限制。

SGI GLX 是连接板级 OpenGL 图形语言与 X 窗口系统的粘合代码。GLX 客户端库向应用程序呈现流行的 OpenGL API,通过 X11 网络协议执行间接渲染,并在客户端显示和服务器是同一台机器时执行高性能直接渲染。Precision Insight 的实现称为直接渲染基础设施 (DRI),它使用 GLX、Mesa 3.1、XFree86 4.0 和 Linux 内核修改。将 GLX 移植到 Linux 的工作由 Precision Insight 执行,由 SGI 和 Red Hat 赞助。

OpenGL 是一种平台无关的场景描述语言,在大多数高性能显卡甚至今天价格不到 100 美元的廉价 PC 卡的硬件中实现。它是最广泛使用的 3D API(Linux、Mac、Win32 等),击败了 Microsoft Direct3D 和 3dfx Glide。OpenGL 使 3D 应用程序程序员能够让他们的软件在任何硬件上工作,而无需为每个 3D 板卡编写自己的驱动程序。作为一个标准的 3D API,当然也意味着 OpenGL 可以用于 2D。

游戏设计师使用 OpenGL 将要绘制的内容描述为一组图形基元(空间中的形状)和纹理贴图(图像)。让硬件处理这些 3D 计算可以大大加快虚拟现实互动游戏(如 Quake (http://www.quake3arena.com/))中的屏幕刷新率。

Linux as a Video Desktop

图 1. Quake III 屏幕截图

SGI 的 OpenGL API 参考实现被广泛用于为其系统开发硬件驱动程序。Mesa 是一个 3D 图形库,其 API 与 OpenGL 类似,但它是一个明显的例外。Mesa (http://www.mesa3d.org/) 的开发是独立进行的,目的是规避 OpenGL 商业许可证。SGI 后来将 OpenGL、GLX 和 XFS 开源。SGI Open Inventor 是一个流行的面向对象的 3D 工具包,它基于 3D 场景数据库,现在也已开源。Open Inventor 构建在 OpenGL 之上,并支持 PostScript 打印。请访问 SGI 开源网站 www.sgi.com/developers/oss/。

由于高性能图形处理能力现在才开始可用,Linux 平台上的图形应用程序仍在追赶 SGI IRIX 和 Windows NT 的同类产品。当然,GIMP 被高度评价为 Photoshop 的替代品。但是,您知道可以使用 GIMP 在 Broadcast2000 [参见 Adam Williams 在 2000 年 1 月刊中发表的“在 Linux Box 上制作电影?没门!”——编者注](一个 Linux 视频非线性编辑器)中叠加图形吗?Broadcast2000 使用与 Video4Linux 兼容的视频卡(例如廉价的 Haupaugge WinTV 或 Linux Media Labs 的卡)处理捕获的未压缩 720x480 视频。音频是来自 OSS 兼容声卡的 48K 立体声音频。从内核版本 2.2 开始,Linux 支持 DV IEEE-1394 火线协议。

除了 GIMP 之外,还有许多图形程序可用于 Linux 平台。Blender 是一款流行的动画软件包,用于创建令人惊叹的三维图形。Houdini 是首个在 Linux 上可用的主要商业 3D 动画软件包。Side Effects Software 的 Houdini 从 SGI IRIX 移植而来,已广泛用于 Digital Domain 和其他主要工作室的特效动画制作。它曾用于 TitanicX-Men 的特效制作。Houdini 的售价为 1.7 万美元,不是免费的,但提供 30 天的评估版本。

在接下来的几个月里,我们将调查我们能够调查的每一项与 Linux 多媒体相关的项目

  • 带有 Haupaugge WinTV 卡的 Video4Linux

  • 使用 C++、OpenGL 和 Java 进行 2D 和 3D 图形和视频编程

  • MPEG-1 和 MPEG-2 播放器和编码器

  • DV 播放器和编辑器,IEEE-1394 火线

  • AVI 视频

  • Quicktime 视频

  • MP3 和 OGG 等替代音频格式

  • 使用 Real 和 Quicktime 进行流媒体传输

  • HDTV

  • Houdini,用于创建 Titanic 特效的软件

  • 动画,转描

  • Linux 软件应用程序与其他操作系统上运行的同类应用程序的比较

  • 更多编解码器相关内容

  • Web 创作(例如,Amaya)

  • 游戏图形,使用 SVGA 等

  • 硬件(例如,IEEE-1394 OHCI 火线、WinTV、ATI All-in-Wonder)

Linux 专家可能能够轻松地涵盖这些内容,但不会有相同的观点。由于我个人几乎没有 Linux 经验(尽管对 Solaris 和 Windows 有相当多的经验),我们可以预料到会犯一些任何 Linux 新手都会犯的愚蠢错误。通过从头开始经历这个过程,我们可以一起学习。

我们正处于 Linux 多媒体安装的开始阶段。几天前,一个新的 Maxtor 20GB 7200RPM 硬盘仍然放在我桌子旁边的盒子里,等待在其上全新安装 Win98、Win2k 和 Debian Linux。我们正在创建一个三启动系统,因为我们仍然有为现有产品进行的常规 Windows 开发工作要做。此外,我们的计划或许有些天真,即从单个代码库跨 Windows 和 Linux 开发相同的应用程序。考虑到 X 和 Win32 GUI API 之间的差异,这将是一个挑战。

我们的 PC 包含一块用于观看/捕获电视的 WinTV 卡和一块用于与数字摄像机接口的 PyroDV IEEE-1394 火线卡。当我们让所有这些都正常工作后,我们将添加一块 ATI All-in-Wonder,也许还会添加一台我们想要进行一些多媒体开发的 Compaq iPAQ 手持设备。(我们也看到了在圣地亚哥 USENIX 大会上运行的 PocketLinux iPAQ,非常酷。请参阅 http://www.handhelds.org/。)

Linux 继续作为网络服务器表现出色。BBC 使用 Linux 来提供网页、RealMedia 和他们的数字文本服务。Victoria's Secret 依靠 VA Linux 服务器来直播他们的戛纳 2000 时装秀,这是互联网历史上最大规模的现场网络直播之一,全球观众超过 200 万。在 SGI、NVIDIA、Red Hat、Side Effects Software 和许多其他公司的支持下,Linux 正在从网络服务器和动画渲染农场扩展到桌面视频制作领域。下个月我们将启动我们的新系统,并开始了解 Linux 作为视频桌面正在变得多么出色。

Linux as a Video Desktop
Robin Rowe (Robin.Rowe@MovieEditor.com) 是 MovieEditor.com 的合伙人,这是一家创建互联网和广播视频应用程序的科技公司。他曾为 Dr. Dobb's JournalC++ Report the C/C++ Users JournalData Based Advisor 撰稿,并在会议论文集中发表了许多论文。他的软件设计包括曼哈顿 24 小时广播电视台 Time Warner New York One 及其相关网站 http://www.ny1.com/ 使用的客户端/服务器视频编辑系统,以及为 DARPA 和五角大楼开发的自动化电视新闻监控系统。他曾在两所大学教授 C++,并在财富 500 强企业、国防部和学术环境中设计视频软件。您可以通过 Robin.Rowe@MovieEditor.com 与他联系。
加载 Disqus 评论