AcidRip—MEncoder 的 Gtk2 前端

作者:Daniel Bartholomew

MEncoder 是一个非常棒的小型命令行实用程序,包含在 MPlayer 中,用于视频编码。它可以将 MPlayer 可以读取的任何视频格式作为其源文件,包括 Windows Media、MPEG-2 (DVD)、QuickTime、MPEG-4、DivX 和许多其他格式。然后,它可以使用多种编码器(如 lavc、libdv、xvid 和 x264)转换这些源文件。

基本上,从一种数字格式转换为另一种格式(可能是完全相同的格式)的原因有几个。从北美 NTSC 标准帧率(约 29.97 帧/秒)转换为欧洲 PAL 标准(25 帧/秒)是一个原因。消除灰尘和划痕并进行色彩校正是其他原因。我的原因是磁盘空间——更新的视频编解码器(如 xvid 和 x264)可以在比旧格式(如 MPEG-2)更小的空间内完成更多工作。在没有可检测到的质量损失的情况下,一张 4GB 的 DVD 电影可以轻松地装入远小于 2GB 的空间。此外,如果您更激进并且不介意缩放画面,您可以进一步缩小它,使其可以装入 CD-ROM。即使在这种尺寸下,如果您知道如何使用 MEncoder,画面和声音质量仍然可以非常出色。

然而,可悲的是,MEncoder 并不那么容易学习和正确使用。仅手册页就长达 7,216 行。如果有时间和耐心,我相信有可能了解这个出色程序的来龙去脉,但我没有太多耐心,也没有时间。

问题是这样的:我的孩子们似乎决心要弄坏家里的每张 DVD。倒不是他们故意要这样做,他们只是孩子,但孩子和 DVD 是糟糕的组合。DVD 实在太脆弱了。似乎第一次打开盒子时就会出现划痕和裂缝。我的小天使们已经破坏了 怪物史莱克冰河世纪黑神驹飞天万能车 等等——我希望破坏到此为止。

我的计划是将家里的每张 DVD 备份到我的 Linux 服务器上。然后,使用 MythTV 或其他合适的前端,让孩子们可以在电视上随意观看他们的电影。与此同时,原始 DVD 将小心地放回盒子里,并锁起来,让小手指够不着。

我的服务器上有大量存储空间,但每张光盘超过 4GB,并且 DVD 库不断增长,已经超过 100 张光盘,我没有那么多存储空间。这就是 MEncoder 的用武之地——某种程度上是这样。我需要将我的 DVD 库从 MPEG-2 转换为更节省存储空间的格式,MEncoder 可以做到这一点,但至少目前为止,我被它难住了。

MEncoder 的设计目标似乎是让您能够调整编码的各个方面,从格式到帧率到比特率到尺寸到颜色。拥有如此强大的功能,我发现很容易犯很多错误。其他人也经历过学习 MEncoder 的挣扎,值得庆幸的是,他们中的一些人试图使其更易于使用。结果并不完美,但朝着正确的方向迈出了一步。

AcidRip—a Gtk2 Front End to MEncoder

图 1. AcidRip 常规设置选项卡

AcidRip 是 MEncoder 的 Gtk2::Perl 前端。它引导您完成 MEncoder 选项的设置,并在您尝试执行会导致不良结果的操作时警告您。

您可以从 SourceForge 产品页面下载 AcidRip。它也包含在某些 Linux 发行版的软件包存储库中。由于 AcidRip 是一个 Perl 程序,一旦您解压缩了源文件,您就可以直接从源文件夹启动 AcidRip。

AcidRip 依赖于 MPlayer 和 MEncoder,因此您需要安装并运行它们。您还需要 DeCSS 软件包才能读取加密的 DVD。基本上,如果您可以使用 MPlayer 观看 DVD,您就可以使用 MEncoder 翻录它。MPlayer 和 MEncoder 包含在大多数发行版中,因此很可能在您的发行版的软件包存储库中有一个预构建的软件包可用。如果没有,请从 MPlayer 网站下载 MPlayer 源代码和基本编解码器软件包。按照安装说明(请参阅在线资源),您应该就可以开始使用了。

AcidRip 程序还使用了一个名为 lsdvd 的小程序,该程序包含在 AcidRip 源代码包中。

启动 AcidRip 后,您需要做的第一件事是加载 DVD。将 DVD 加载到 DVD 驱动器中,然后按“视频源”部分中的“加载”按钮。您将看到 DVD 上所有章节和轨道的列表。我的示例 DVD 只有两条轨道;其他 DVD 可能有一条或多条。要查看每个轨道中的章节,请单击展开三角形。

查找最长的轨道;这将是实际的电影。如果您要翻录一张充满幕后花絮、访谈等内容的 DVD,可能会有很多短轨道,但没有真正表明哪个是主要电影,因此您可能需要尝试几个,直到找到您想要编码的那个。单击要编码的轨道以选择它。

现在我们已经选择了要编码的轨道,我们需要设置一些选项。首先,在“常规”选项卡下,输入轨道标题。这将最终成为生成的 .avi 文件的文件名。在“文件名”字段中,输入您要保存文件的路径,以 %T 结尾(默认保存位置是您的主目录),但您可以将其设置为您想要的任何位置。稍后我们将介绍文件大小和文件数量框。

如果您愿意,您可以将有关您要翻录的电影的一些基本元数据添加到“信息”框中,例如名称、艺术家、主题、流派和版权信息。此信息可以在播放时被 MPlayer 读取,但在其他方面,它不是很有用。

在“音频”部分中,您可以将选择保留为“<默认> 英语”,或者使用下拉菜单选择另一个音轨。选择音轨时要小心,因为有些可能是评论音轨,而在某些 DVD 上,某些条目可能只是空白。

从“音频编解码器”下拉框中,选择您希望如何编码音频。选项取决于您安装的编解码器。在我的机器上,它们是 copy、pcm、mp3lame、lavc 和 faac。为了速度,copy 是最快的,因为它只是将 DVD 中的音轨直接复制到生成的 .avi 文件中。如果您选择使用 mp3lame 或 lavc 编解码器将音频编码为 MP3,您可以调整比特率,但比特率设置得越高,编码所需的时间就越长。如果您发现您的编码声音太轻或太大,您可以根据需要向上或向下调整增益。在大多数情况下,即使不是全部,我也没有发现有必要这样做。

AcidRip—a Gtk2 Front End to MEncoder

图 2. AcidRip 视频设置选项卡

现在我们需要设置视频选项。单击“视频”选项卡以查看它们。同样,您看到的编解码器选择取决于您安装的编解码器。在我的机器上,选项是 copy、raw、nuv、lavc、vfw、qtvideo、libdv、xvid 和 x264。为了获得与文件大小相关的最佳质量,请使用 x264 编解码器。我也在使用 lavc 编解码器的默认值时取得了巨大的成功。稍后我们将介绍“Passes”、“Bitrate”和“Bits/Px”框。

始终建议选中“裁剪”复选框,尤其是在翻录宽屏 DVD 时。您最不想做的事情是浪费大量时间和磁盘空间来编码视频帧顶部和底部的两条黑条。通过按“检测”按钮,AcidRip 使用 MPlayer 跳到您选择的视频轨道的几个不同的单独帧。然后,MPlayer 使用这些帧来尝试猜测适当的裁剪设置。如果您愿意,您可以调整“宽度”、“高度”、“水平”和“垂直”来调整自动检测到的裁剪,但我通常将它们保持原样。有关手动裁剪,请参阅“手动裁剪”侧边栏。

如果您尝试将整部电影装到单张 CD-ROM 上,您可能需要缩放画面。“缩放”功能在裁剪完成后进行缩放,因此不要尝试调整裁剪以适应缩放,只需输入您想要的缩放尺寸即可。还要勾选“锁定纵横比”复选框,以避免画面失真。

“视频”选项卡上的最终选项是调整“预滤波器”和“后滤波器”。我通常保持原样。

如果您选择 lavc 作为您的视频编解码器,您可以调整“比特率”、“Bits/Px”并设置您想要使用的编码遍数。一般来说,对于 MPEG-4 视频,最佳 Bits/Px 设置约为 0.249。如果您勾选“锁定”复选框,您可以手动调整比特率,直到达到大约 0.249 的 Bits/Px 设置。多遍编码可以并且将会大大增加编码时间,但它们也会提高文件质量。

通过锁定比特率,您将无法控制生成的文件的大小。设置视频选项后,切换回“常规”选项卡,您将看到已输入估计的文件大小。如果您想手动确定文件大小并相应地调整比特率,请取消选中“视频”选项卡上的“锁定”复选框,切换回“常规”选项卡并调整文件大小。当您想将 DVD 放入一张或多张 CD-R 中时,通常会这样做。

如果您计划将翻录的 DVD 刻录到 CD 上,有两种方法可以实现。第一种是以全尺寸编码为多个文件。四张 700MB 的 CD 通常足以容纳高质量的全尺寸电影。第二种选择是设置您的目标文件大小,然后向下缩放,直到 Bits/Px 良好。

调整缩放尺寸时,请使用向上和向下箭头。这样,您将能够实时看到比特率调整。如果您手动输入其他字段,则会发生故障,阻止其他字段自动更新。这适用于您可以调整的所有字段。

AcidRip—a Gtk2 Front End to MEncoder

图 3. 在此处预览您的设置。如果您看不到图片或听不到任何音频,您可能需要调整您的设置。

一旦您认为您的设置正确,请切换到“预览”选项卡。保持“嵌入”复选框选中,“翻页书”复选框取消选中,然后单击“预览”按钮。只要您的设置中没有错误,电影就会播放。您可能会发现您必须调整您的裁剪设置。我喜欢做的一件事是为了更好地了解电影的外观,是在“视频源”部分中从电影中间选择一个章节,而不是从头开始观看电影。这样做时,我只需要确保在进行实际编码之前将其改回。当您看得足够多时,请按“停止”按钮。

AcidRip—a Gtk2 Front End to MEncoder

图 4. “队列”选项卡——这显示了 AcidRip 将运行以翻录您的 DVD 的 MEncoder 命令。

一旦您对设置感到满意,您就可以通过按“队列”按钮将电影排队等待编码。切换到“队列”选项卡,您可以选择清除队列或将当前队列导出为 shell 脚本。您还可以设置多个编码按顺序运行,这对于将一组幕后花絮全部编码到它们自己的文件中非常有用。

AcidRip—a Gtk2 Front End to MEncoder

图 5. 非常不提供信息的进度对话框

一旦您的队列设置好您想要的编码,请按“开始”按钮开始。然后,您将看到一个小的进度窗口,显示——什么也没有。这可能是 AcidRip 最大的故障。在您阅读本文时,这可能已被修复,但在当前版本的 AcidRip (0.14) 和 MEncoder (1.0pre8) 中,显示已损坏。MEncoder 正在工作;AcidRip 只是没有告诉您进度。

AcidRip—a Gtk2 Front End to MEncoder

图 6. 非常提供信息的输出日志

要查看进度,请单击“完整视图”按钮返回到常规界面,然后单击“调试”按钮以查看 MEncoder 的原始输出。滚动到底部,您将看到其进度。如果 AcidRip 因某种原因未能编码电影,您也应该查看调试窗口,因为它可能为您提供有关原因以及哪个选项导致编码失败的良好线索。

AcidRip—a Gtk2 Front End to MEncoder

图 7. AcidRip 设置选项卡

AcidRip 中的最后一个选项卡是“设置”选项卡。您可以在其中调整各种设置,包括 MEncoder 和 MPlayer 应用程序的路径——如果您将它们安装在非标准位置,这将非常有用。您还可以设置其他选项,这些选项是不言自明的。

总而言之,AcidRip 是一个非常有用的应用程序,至少对我而言,它帮助我掌握了将我的 DVD 收藏翻录到我的计算机上的方法。它可以进行一些错误修复以纠正界面故障,但除了这些之外,它可以正常工作并且工作良好。

关于 AcidRip 唯一真正不幸的事情是,作者 Chris Phillips 表示他对更新该产品不太感兴趣,甚至根本不感兴趣。但是,由于开源的美好之处,一位精力充沛的 Perl 黑客可以轻松地 fork 该项目并进行必要的更新。有人愿意吗?

手动裁剪

某些 DVD 可能会因模糊的边框给 AcidRip 带来麻烦,因此如果它返回“裁剪失败”消息,您可能必须手动设置裁剪。如果是这种情况,请从宽度 720、高度 480 开始,然后向下调整。720x480 是标准 NTSC DVD 帧的大小。对于 PAL DVD,尺寸为 720x568。

手动裁剪时,“水平”和“垂直”部分可能会有点令人困惑。它们是从完整帧的左上角到裁剪帧应放置位置的偏移量。裁剪帧本身在宽度和高度框中指定。

AcidRip—a Gtk2 Front End to MEncoder

图 I. 电影 谜中谜 的示例帧

例如,以图 I 中显示的电影 谜中谜 的图像为例,主演是奥黛丽·赫本和加里·格兰特。这部电影很适合用作示例,原因有两个。首先,AcidRip 无法检测到正确的裁剪设置。其次,由于美国版权法中的一个怪癖,当这部电影发行时,谜中谜 进入了公有领域,任何人都可以出于任何目的使用它,包括这个目的。

正如您从图 I 中看到的那样,电影的左侧有一条黑条,这条黑条贯穿整部电影。右侧也有一条小的黑色边框。两个边框都是模糊的,因此很难准确检测到。电影的顶部和底部边框在整个过程中也表现出一些变化。最终对我有用的手动裁剪设置是

Width: 705
Height: 346
Horiz: 11
Vert: 71

这只是另一种说法,我的裁剪矩形宽 705 像素,高 346 像素。裁剪矩形从左边缘偏移 11 像素,从上边缘偏移 71 像素。

AcidRip—a Gtk2 Front End to MEncoder

图 II. 我在这部电影中使用的最终裁剪设置。

为了获得这些最终尺寸,我首先从宽度 700、高度 400、水平偏移 10 和垂直偏移 60 开始,这些是我对尺寸的最佳猜测。然后,通过在“视频”和“预览”选项卡之间来回切换,我能够微调设置,直到我对结果感到满意。

高级编码

现在我已经熟悉了使用 AcidRip 进行编码,我的下一个项目是尝试通过直接使用 MEncoder 将其提升到一个新的水平。AcidRip 的队列导出功能对此非常有帮助。您可以导出 AcidRip 传递给 MEncoder 的确切命令的小型 shell 脚本。以它为起点,我可以进一步调整设置。

MEncoder 文档也是编码说明和调整参数以获得最佳图像质量的绝佳来源。现在如果我能抽出时间就好了。

本文的资源: /article/9389

Daniel Bartholomew 自 1980 年代初他的父母购买了一台 Apple IIe 以来就开始使用计算机。在 Mac 和 Windows 机器上工作了一段时间后,他于 1996 年发现了 Linux,并从此一直使用各种发行版。他与妻子和孩子住在北卡罗来纳州。

加载 Disqus 评论