DVD 播放器

作者:Dave Phillips

我热爱电影。我是几乎所有类型电影的粉丝,来自不同的国家,使用不同的语言。去年圣诞节,Ivy 和我收到了她孩子们送的 DVD 播放器,从那时起,我就成为了这种媒介的忠实拥趸。图像更清晰,声音更清澈,而且这种媒介本身允许我选择字幕、场景选择(又名章节)和语言偏好等便利功能。我对这款播放器唯一真正的问题是它放在她家而不是我家。我甚至没有电视,所以购买独立的 DVD 播放器也意味着要买一台电视,而我宁愿不购买电视。但是,我有一台不错的 19 英寸显示器连接到我的电脑上,还有一块不错的显卡来驱动它。因此,合乎逻辑的步骤是在我的机器上添加一个 DVD 驱动器,并配置我的系统以播放 DVD。本文介绍了我是如何做到这一点的,遇到的问题以及我对用于这项工作的软件的印象。

测试平台

在设置我的系统以播放 DVD 的过程中,我学到了很多关于硬件的知识。我的机器能够流畅地播放,但需要进行一些调整才能最大限度地发挥其性能。在这里,我描述了我的系统在本文中使用时的状态,但我也描述了我对更现代的基础系统的建议。硬件在这个领域非常重要,因此请确保您的系统能够满足音频/视频要求,以获得最佳的 DVD 观看和聆听体验。

实际情况

我的 DVD 驱动器是从一位朋友那里购买的廉价设备,他把它闲置在他的公寓里。dmesg 报告了有关该驱动器的以下信息

hdd: LITEON DVD-ROM LTD163D, ATAPI CD/DVD-ROM drive

如果您不确定您的机器中安装了哪种驱动器,请运行dmesg | grep DVD以获取报告。Linux 对 DVD 驱动器的支持非常出色;事实上,《Linux 硬件兼容性 HOWTO》指出,几乎所有 ATAPI 和 SCSI DVD-ROM 和 DVD-RW 驱动器都受到支持。如果您正在寻找推荐品牌或担心特定驱动器,那么在 Google 上快速搜索应该会找到所需的信息。

基础机器还包括一个 800MHz AMD Duron 处理器、两个 15GB 硬盘和 512MB 的 RAM。显示硬件是一台通用的 19 英寸显示器,连接到带有 64MB 显存的 NVIDIA GeForce2 显卡。音频由 Sound Blaster Live! Value 声卡和一个声音系统处理,该系统包括一个 Yamaha DMP7 数字混音器、一个 100 瓦 QSC 功率放大器和一对 Yorkville Sound YS-10 工作室监听音箱。内核针对低延迟进行了编译,所有驱动器都经过调整以实现最佳磁盘吞吐量。

推荐配置

我更喜欢更快的 CPU,最好是 1GHz 或更高。我收到过关于在 600MHz 及更低频率的机器上流畅播放 DVD 的报告,但在低于 1GHz 的频率下,您需要更精细地调整其他系统组件。如果您喜欢以宽屏模式观看电影,我建议至少使用 19 英寸的屏幕以获得舒适的观看体验。您的图形芯片组应支持 XFree86 Xv 扩展(大多数都支持),并且您的显卡应至少具有 16MB 的显存。Creative Labs Sound Blaster Live! 或 Audigy 2 声卡是立体声或 5.1 音频输出配置的绝佳选择。低延迟内核不是绝对必要的,但可以并且应该优化您的 DVD 驱动器性能。我将在下一节讨论内核选项和驱动器调整。

关于最佳音频系统的另一个注意事项。许多 DVD 支持 5.1 环绕声和其他音频选项,这些选项在 Linux 下可能可以也可能无法实现。廉价的 5.1 扬声器系统对于休闲使用来说已经足够好,但如果您对声音要求很高,您可能需要投资购买高质量的系统。请参阅本文“资源”部分中 Linux Journal 网站 (/article/7174) 上的 Tom's Hardware Guide URL,以获取有关 PC 声卡可用的 4.1 和 5.1 声系统的更多信息。

配置注意事项

用于这些测试的基础 Linux 安装是一个经过大量修改的 Red Hat 7.2,但此处描述的方法和过程应适用于任何相对较新的主流发行版,只需进行少量更改(如果有)。纯粹的 Linux 不太可能为 DVD 性能产生最佳结果,因此以下是我从 Web 和各种测试播放器的文档中收集的一些技巧。主要考虑因素包括优化内核本身、调整 X、调整 DVD 驱动器以及确保您具有正确的设备挂载点。

内核选项

应激活一些内核选项以优化 DVD 播放。我强烈建议应用 Andrew Morton 的低延迟补丁,并且可能也建议应用 Robert Love 的抢占式内核补丁。这些补丁的组合在持续时间内提供了非常低的延迟(低于 3 毫秒)。我目前选择的内核是 2.4.18,但 Andrew 和 Robert 的补丁适用于各种内核版本(有关更多信息,请参阅“资源”)。

您还应确保您的内核已启用对 RTC 和 MTRR 选项的支持(分别在“字符设备”和“处理器类型和功能”内核配置部分下找到)。RTC 提供对 PC 实时硬件时钟的访问。根据内核配置帮助文件,所有 PC 都有这样的时钟,但默认内核配置未启用它。虽然不是绝对必需的,但许多 Linux 音频和视频应用程序可以利用此时钟获得更精细的定时响应(MPlayer 喜欢它),因此我建议将其直接构建到您的内核中或作为动态可加载模块。

根据内核配置帮助,启用 MTRR(内存类型范围寄存器)提供了一种机制,用于

...控制处理器对内存范围的访问。如果您在 PCI 或 AGP 总线上安装了视频 (VGA) 卡,这将非常有用。启用写入合并允许总线写入传输在通过 PCI/AGP 总线突发传输之前合并为更大的传输。这可以将图像写入操作的性能提高 2.5 倍或更多。

因此,如果您有 PCI 或 AGP 显卡,您将需要启用此选项。

在“ATA/IDE/MFM/RLL 支持”部分下,我建议启用通用 PCI 总线主 DMA 支持和默认使用 PCI DMA 的选项。

最后一步是为您的硬件配置声音支持。我使用 ALSA 声音系统,所以我所做的只是在内核选项中启用声卡支持。ALSA 驱动程序构建在普通用户空间中,并作为可加载内核模块以 root 身份安装。您可以安全地使用可用的内核模块而不是 ALSA,但在我看来,ALSA 驱动程序更出色。事实上,ALSA 将成为 2.5.x 系列之后 Linux 内核事实上的内核声音系统。

X 因素

我使用 XFree86 4.1.0 开始了我的测试。一切似乎都运行良好,除了 xine 的一个恼人问题:关闭播放器后,我的 X 服务器会突然崩溃,将我丢回控制台提示符。当我升级到 XFree86 4.3.0 和 NVIDIA 的 GeForce2 最新驱动程序 (1.0-4363) 后,所有问题都得到了解决。由于 XFree86 4.3.0 修复了早期版本中发现的许多问题和错误,因此我建议任何使用这些播放器的人都升级,而不仅仅是 xine。而且,如果您使用的是 NVIDIA 显卡,则应始终使用其最新驱动程序。

如前所述,XFree86 提供了一个名为 Xv 的视频输出驱动程序,但其他驱动程序可用于帧缓冲区设备、SDL(Simple DirectMedia Layer)视频输出和 X11/Xshm。您选择的驱动程序会影响播放性能。通常首选 Xv,但您可以尝试播放器支持的任何驱动程序,以获得最佳输出。

我的 X 环境还包括 Blackbox 窗口管理器。我喜欢简单快速,而 Blackbox 正好适合我。请注意,您的 DVD 观看体验可能会因您选择的窗口管理器或桌面环境而有所不同,您可能需要相应地调整可用的视频资源。

驱动器调整

您可能会惊讶地发现,您可以像调整硬盘一样轻松地调整 DVD 和 CD-ROM 驱动器。hdparm 实用程序可以将驱动器性能优化到最佳效率,以 root 身份运行它,至少使用以下参数选项

hdparm -c1 -d1 -a8 -u1 /dev/hdd

其中 -c1 启用 32 位 I/O,-d1 启用 DMA 访问,-a8 设置文件系统预读值,-u1 设置驱动器的中断取消屏蔽标志。/dev/hdd 应指定您的特定 DVD 驱动器设备位置。

上面显示的参数在我的 DVD 驱动器上运行良好,但我敦促您阅读 hdparm 手册页(man hdparm)然后再运行该实用程序。您的 DVD 驱动器是只读设备,因此文件系统损坏不是问题。但是,您可能会因非最佳设置而无意中降低驱动器的效率。

有人向我指出,Red Hat 8.0 用户报告了在其 DVD 驱动器上启用 DMA 的困难。如果您正在运行该发行版,请将以下行添加到您的 /etc/modules.conf 以解决该问题

options ide-cd dma=1
关于 /dev/dvd

此处评测的播放器都希望在 /dev/dvd 中找到默认硬件挂载点。虽然它们也都允许用户指定位置,但我建议通过创建 /dev/dvd 来简化操作。通常驱动器本身实际上是 /dev/cdrom,因此您可能需要创建从 /dev/cdrom 到 /dev/dvd 的链接。只需发出以下命令(同样以 root 身份)即可创建链接

ln -sf /dev/cdrom /dev/dvd

如果您有多个 CD/DVD 类型驱动器,则需要为 /dev/cdrom 指定正确的设备编号;例如,我的是 /dev/cdrom1,因为我的 CD-RW 驱动器位于 /dev/cdrom。

测试 DVD

我使用各种 DVD 测试了播放器,所有 DVD 都是合法制造和购买的。我当地的图书馆出租 DVD,其中许多 DVD 的状况不太好,但它们在测试系统上运行良好,只有一个例外,即布鲁斯·李的 中国连接 的一个非常糟糕的复制品。我甚至能够观看一张来路不明的真正糟糕的 DVD,这是一个非凡的事件,因为我们的独立 DVD 播放器甚至无法识别驱动器中的光盘。我很高兴地报告,在所有测试中,字幕、语言选择、章节跳转和皮肤选项都有效。

Linux DVD 播放器

因此,您的内核已配置,DVD 驱动器已安装并连接,您已准备好第 40 次观看 怪物史莱克。您现在只需要一个播放器应用程序,幸运的是 Linux 有一些出色的 DVD 播放器软件。以下简介重点介绍了四个最受欢迎的播放器:MPlayer、Ogle、VideoLAN Client 和 xine。有关其他可用的播放器和 DVD 功能,请参阅 Freshmeat 列表。

期望

我已经使用过独立的 DVD 播放器,因此我希望在我选择的任何软件播放器中找到它的大部分功能。在本文评测的播放器中,我寻找对以下最低限度功能的支持:标准传输控制(开始、停止、暂停、快进和快退)、场景选择、字幕和音频首选项以及 DVD 菜单。除了独立硬件播放器上的功能外,我还期望软件 DVD 播放器能够轻松地从窗口视图切换到全屏视图,并提供随机搜索/重新定位、所有传输功能的键盘控制和皮肤支持。

我Review的播放器满足了我的大部分期望。请参阅表 1,了解版本、功能、许可和 CPU 压力概述。所有播放器的性能都非常出色,在“最佳”类别中没有明显的赢家。我的建议是全部尝试一下,然后使用最适合您的一个或多个。就重量而言,Ogle 最轻(它是一个仅限 DVD 的播放器),而其他播放器的重量大致相同。虽然我简要介绍了程序的构建过程,但读者应查看播放器网站以获取可用的 RPM 和其他预打包二进制文件。

表 1. Linux DVD 播放器比较表 [*指示 GUI 是构建过程的可选功能还是默认功能。**显示的数字表示 gkrellm 在播放 银翼杀手 DVD 期间报告的平均低峰值 CPU 使用率。系统负载包括 XMMS、五个活动工作区(在 Blackbox 窗口管理器下)以及运行 Netscape 或 Opera 的活动 DSL 网络连接。]

播放器测试版本字幕菜单支持随机搜索键盘控制GUI*CPU 使用率**许可证
MPlayer0.90可选40%–50%GPL
Ogle0.9.1可选20%–40%GPL
VideoLAN Client0.5.3默认20%–30%GPL
xine1-beta12 (lib) 0.9.21 (ui)默认20%–40%GPL
Win32 编解码器和 DeCSS

这些播放器执行的许多魔法来自它们对 Windows 和 Mac OS 中视频编解码器(压缩/解压缩库)的使用。特别是,MPlayer 和 xine 需要某些编解码器才能播放 Microsoft 的 ASF/WMV 和 Apple 的 QuickTime MOV 等格式的文件。这些编解码器通常不是由播放器本身的源代码或二进制包提供的,但它们很容易获得。我建议获取当前可用的任何集合。我们大多数人都想要标准包,但如果您是铁杆视频爱好者,您不妨下载并安装所有包。获取和使用这些编解码器的法律地位有些不明确,但由于它们现在可用,我建议立即获取它们。以后可能很难做到这一点。

臭名昭著的 DeCSS 是用于解扰使用内容加扰系统 (CSS) 加密的 DVD 的解扰器。最初的 DeCSS 软件是专有的且仅限二进制,但它已被逆向工程并在互联网上传播。关于 CSS 已经浪费了大量的笔墨和恶意,DVD 法律战远未结束。有关所涉问题的更多信息,请阅读 cyber.law.harvard.edu/openlaw/DVD 上的资料。此处讨论的所有播放器都不需要 DeCSS。开源 libdvdcss 用于运行时 CSS 解密,并且不需要区域锁定的 DVD 播放器。

MPlayer

MPlayer 无疑是此处评测的功能最全面的播放器。它不仅仅是一个 DVD 播放器,它处理的视频和音频格式种类繁多,在此无法一一列举。可以说,如果是视频,MPlayer 很可能可以播放它。

DVD Players

图 1. 带有蓝色皮肤的 MPlayer

MPlayer 的 DVD 支持满足了上面列出的标准期望,并且它添加了一些我现在离不开的功能,包括均衡器、音频均衡 (EQ) 控制以及视频 EQ。亮度、对比度、色调和饱和度可以通过均衡器的滑块进行控制。音频和视频 EQ 都可以实时控制,响应平滑。另一个不错的功能是设置纵横比的能力,即您的可用屏幕空间有多少被图片占据。我对 DVD 没有那么多使用此功能,因为大多数光盘都有宽屏或标准格式,通常在同一张光盘上。最后,MPlayer 为您的观看乐趣提供了预设的普通、双倍和全屏模式。

我真的很喜欢 MPlayer,但我必须建议它的构建过程可能有些复杂。在构建程序之前,请仔细查看无数的配置选项(请参阅以下命令的结果./configure --help)。例如,MPlayer GUI 默认不包含,必须显式启用。libdvdnav 支持 DVD 菜单,但 MPlayer 0.90 的文档表明菜单支持目前不起作用。MPlayer 的广泛文档解释了程序的每个方面,包括编译细节。在向 MPlayer 邮件列表发布投诉之前,请先查看那里。

关于 MPlayer 的另一个注意事项:它的开发人员不喜欢某些版本的 GCC 2.96,也不特别推荐 NVIDIA 显卡。他们声明的立场是不回答拥有这些组件的系统用户提出的问题,这对我来说有点问题,因为我的机器上有一张 NVIDIA 显卡和一个 GCC 2.96 版本。尽管如此,我还是在这些构建条件下编译并使用了 MPlayer,并且对结果非常满意。如果您在这些因素下编译 MPlayer 时遇到问题,Google 搜索应该可以解决这些问题。公平地说,我必须补充一点,MPlayer 开发人员和用户社区在其他方面非常乐于助人。

Ogle

与评测的其他播放器不同,Ogle 严格来说是一个 DVD 播放器,但它是一个多么出色的 DVD 播放器啊。Ogle 是第一个支持 DVD 菜单的播放器,它的其他功能包括书签、时间跳过、多声道音频、SPDIF 音频输出(数字音频格式)以及裁剪和缩放视频。书签功能独特而贴心:我可以停在电影中的任何位置,标记我的位置,然后只需单击标记即可稍后返回到该位置。它可能看起来不像一个令人兴奋的功能,但它很方便。借助 Goggles GUI,Ogle 还支持打开时开始播放的选项;也就是说,Ogle 会自动开始播放驱动器中的光盘。

DVD Players

图 2. 带有 Goggles GUI 和 gxvattr 的 Ogle

Ogle 本身可以从命令行使用。它也可以使用原生 GUI 构建,并且 Ogle 网站上提供了许多第三方 GUI。就我个人而言,我喜欢手边有一个控制面板,并且我特别喜欢 Goggles GUI 的外观,但 Ogle 的键盘映射非常出色。此外,Goggles GUI 需要 FOX 工具包,这在主流 Linux 发行版中并不常见。Ogle 网站可以将您定向到 Goggles 主页,您可以在那里找到如何获取 FOX 工具包的信息。

我也很高兴 Ogle 的文档将我引导到了 xvattr 实用程序。xv 驱动程序通常是 Ogle 和此处评测的其他播放器的默认视频输出驱动程序,其功能通常可以通过播放器本身的偏好设置进行修改。但是,xvattr 是一个独立的实用程序,它查询您的显卡以获取其特定的 xv 相关功能,并允许用户直接从命令行(或 gxvattr GUI)对其进行控制。当试图解决 NVIDIA 显卡默认双缓冲导致的一些帧率问题时,我发现它非常方便(我可以使用 xvattr 将其关闭)。我建议使用 xvattr 来了解有关您的显卡特定 xv 相关功能的更多信息。

VideoLAN Client

VideoLAN Client (VLC) 是一个项目的组成部分,旨在为高带宽网络上的 A/V(音频/视频)流媒体提供跨平台客户端/服务器解决方案。根据优秀的 VideoLAN 文档,该项目包括 VideoLAN Server (VLS),它可以单播或多播方式在网络上流式传输 MPEG-1、MPEG-2 和 MPEG-4 文件、DVD、数字卫星频道、数字地面电视频道和实时视频。它还包括 VideoLAN Client (VLC),它可以用作服务器,以单播或多播方式在网络上流式传输 MPEG-1、MPEG-2 和 MPEG-4 文件和 DVD。它也可以用作客户端,以在多个操作系统下接收、解码和显示 MPEG 流。

DVD Players

图 3. VideoLAN Client 控件和首选项对话框

作为独立的 DVD 播放器,VLC 的性能与其他评测的播放器相当。它的 CPU 使用率是测得的最低的,这使 VLC 成为联网机器或相对低功耗系统的首选解决方案。VLC 的 GUI 不是特别令人兴奋,但它运行流畅且完美无瑕。如果您不需要广泛的文件格式支持,或者您的系统适合目标模型,那么我毫不犹豫地推荐 VLC。

xine

如果 MPlayer 和 xine 是赛马比赛中的马,它们将在终点线并驾齐驱。xine 的构建稍微容易一些(xine 开发人员对您的编译器和显卡不像 MPlayer 那样挑剔),并且它在源代码包中包含了所有必需的库,以及默认构建中的 GUI。它还默认支持 DVD 菜单,播放各种视频格式,并使用类似于 MPlayer 中找到的视频 EQ。xine 的 GUI 起初有点奇怪,但实际上组织良好且易于导航。

DVD Players

图 4. 带有默认 GUI 的 xine

xine 的性能首屈一指。我担心最初对其 CPU 使用率的测试结果,但我发现该程序记住了我在试验其视频输出驱动程序时所做的“粘性”设置。我曾告诉 xine 尝试 xshm 驱动程序,但没有意识到后续会话将继续使用该驱动程序。驱动程序本身没有任何问题,我只是注意到 xine 的 CPU 使用率远高于其他播放器的结果。将输出驱动程序重置为 xv 显着降低了 CPU 消耗,因此我对我对 xine 默认设置所做的任何更改都更加小心。您还可以运行方便的 xine-check 来获取分析您的系统功能(关于 xine 性能)的摘要。

我在 xine 中唯一缺少的功能是用于随机章节选择的界面。我可以跳转到当前位置之前或之后的场景,但目前没有像 Ogle 或 MPlayer 那样的章节树的图形表示。但是,完全支持从 DVD 菜单本身进行场景选择,因此只要光盘包含带有场景选择的菜单,xine 就可以执行随机章节跳转。另一个可能引起抱怨的项目是 xine 将其所需的库包含在源代码树中。显然这困扰着一些人,但我认为这是一个很大的便利。我无需在 Web 上四处奔波来查找完成构建所需的东西;我需要的一切(Win32 和 Apple 编解码器除外)都包含在原始包中。

顺便说一句,虽然 xine 的默认 GUI 漂亮且完全可用,但在 xine 主页上可以找到各种替代用户界面。显示了一些漂亮的 GUI,包括一个以 ASCII 字符显示您的视频输出的 GUI。

与其他播放器一样,xine 社区维护着许多非常活跃的邮件列表。如果您对 xine 有疑问,而这些问题在其优秀的文档中没有得到解答,那么您肯定可以从其开发人员和用户社区获得帮助。

翻录、刻录和硬件解码

与其尝试重写在 bunkus.org 上找到的优秀且详尽的建议,不如提供一些关于翻录 DVD 的简短建议。获取一个大硬盘,安装 mencode 或 transcode(及其 dvd::rip GUI),并按照 bunkus 网站上的详细说明进行操作。翻录 DVD 可能涉及大量选项,因此请提前计划以获得最佳结果。bunkus 网站的作者建议每个翻录的光盘至少有 10GB 的可用空间。此外,即使使用快速 CPU,翻录过程也可能需要数小时。

我没有 DVD 刻录机,因此我无法提供有关该过程的任何有用的建议,只能提到 Jörg Schilling 出色的 cdrecord 是其核心。但是,与翻录 DVD 一样,Web (/article/7174) 上“资源”部分列出了许多在线文章,详细描述了该过程。

在为本文准备材料时,我询问了 Linux 音频用户邮件列表的成员他们使用什么 DVD 软件。MPlayer 和 xine 是明显的赢家,但一位回复者询问我是否打算介绍硬件 DVD 解码板。唉,我没有使用过此类硬件的经验,并欢迎任何使用过它们的读者提供反馈。

文档和支持

显然,评测的播放器的开发人员都不想被指责提供不充分的文档。MPlayer、VideoLAN Client 和 xine 为开发人员和普通用户提供了特别广泛的文档。Ogle 提供的文档略逊一筹,但它也是评测的最狭隘的播放器,并且它的手册页(man ogle)非常出色。所有这些播放器都通过非常活跃的邮件列表和列表存档提供广泛的支持。

最终结论

评测的播放器都显示出非凡的寿命和成熟度。Linux 可能不是多媒体平台的首选,但越来越难以忽视它正在迅速发展成为音频和视频播放的绝佳平台这一事实。我鼓励读者查看此处列出和评测的软件,并期待收到您的报告。玩得开心,但也要记住尝试完成一些真正的工作。

致谢

感谢所有开发团队为 Linux 用户带来更好的 DVD 体验所做的努力。还要感谢 Siggi Langauf 和 Bill Fink 在 xine 方面提供的帮助以及他们对我本文初稿的敏锐批评。我对剩余的不准确之处和错误负责,并欢迎文明的更正和附录。

Dave Phillips 是一位音乐家、教师和作家,居住在俄亥俄州芬德利。自 1995 年首次接触 Linux 以来,他一直是 Linux 音频社区的积极成员。他是 Linux 音乐与声音之书 以及 Linux Journal 中众多文章的作者。

加载 Disqus 评论