Featured image of post x264 标清压制指南

x264 标清压制指南

指南原文来自:https://tehconnection.eu/forums.php?action=viewthread&threadid=619,由于年代久远,部分内容可能已经跟不上时代,但是最开始的基本操作仍然亲测可用。

所需环境和软件

  • Windows (XP、Vista、Win7 或 Win10)
  • 图形界面现在允许运行 32 位的 x264,但请记住,使用 64 位的 x264 版本压制,平均比「标准」的 32 位版本快上 10%。
  • RipIt4Me:将 .zip 解压到 %programfiles%\RipIt4Me 并设一个指向 RipIt4Me.exe 的快捷方式放在方便之处。
  • DVD Decrypter
  • AviSynth
  • DGMPGDec:将 .zip 解压到 %programfiles%\DGIndex 并设一个指向 DGIndex.exe 的快捷方式放在方便之处。
  • tritical’s Avisynth Filters:在本指南中你只需要 TIVTC、NNEDI3 和 yadifmod。解压 TIVTC.dll、nnedi3.dll 和 yadifmod.dll,将它们放入 %programfiles%\AviSynth\plugins。对 DGDecode.dll(在 DGIndex 的文件夹中寻得)也如法炮制。
  • AvsP:将 .zip 解压到 %programfiles%\AvsP 并设一个指向 AvsP.exe 的快捷方式放在方便之处。
  • SubRip:将 .zip 解压到 %programfiles%\SubRip 并设一个指向 SubRip.exe 的快捷方式放在方便之处。
  • MKVToolNix
  • Chapter Grabber:将 .zip 解压到 %programfiles%\ChapterGrabber 并设一个指向 ChapterGrabber.exe 的快捷方式放在方便之处。
  • eac3to:为 eac3to 制作的图形界面有好几个,我建议不要使用它们——坚持命令行好榜样。相关 wiki 在此。
  • oggenc2:下载 aoTuV 版本,因为它提供更优质的音频,尤其是在低比特率条件下。解压出 oggenc2.exe 并移入 eac3to 的安装目录。
  • x264:下载其最新的 32 位及 64 位版本。解压 64 位的压缩包并将 x264.exe 重命名为 x264_x64.exe。然后解压 32 位的压缩包。将 x264_x64.exex264.exe 移入 Program Files\x264(注意不是Program Files (x86))。
  • Lord Mulder’s x264 GUI:解压压缩包。删除其中的两个 x264 可执行文件,然后将剩余文件移入 Program Files\x264。再设一个指向 launcher.exe 的快捷方式放在方便之处。

友情提示:在所有操作过程中,尽可能避开中文文件名、文件夹名,以免出现未知的 BUG。

步骤详解

安装并配置 RipIt4Me 和 DVD Decrypter(只需一次)

启动 RipIt4Me,然后前往「Logs/Settings」→「Preferences」。

你的设置应如图所示,除了你的 DVD Decrypter 安装路径(你需要将 RipIt4Me 指向它)可能与我不同。

然后,启动 DVD Decrypter。前往「Tools」→「Settings」。其中的设置应如下图所示:

启动 DGIndex。前往「Video」→「iDCT Algorithm」勾选「IEEE-1180 Reference」。

提取 DVD 数据

将 DVD 放入光驱。

启动 RipIt4Me,点击「1-Click Mode」,然后点击「Next」。

在点击「Next」之后,稍等几秒,让 RipIt4Me 启动 DVD Decrypter。在出现如下图的窗口,其中的进度条指示翻录已经开始之前,不要操作电脑(不过我亲测的时候偶尔需要手动让 DVD Decrypter 开始翻录):

等到 DVD Decrypter 完事,RipIt4Me 会花费几分钟时间「清洗」你刚抓取出来的文件。等到这一步也完成(你很容易获知,因为 DVD 会从光驱里弹出(我自己的光驱并没有自动弹出 DVD,手动也是一样的)),你应在硬盘的根目录下看到与 DVD 同名的一个文件夹,及其内部的 VIDEO_TS 文件夹。

准备压制

启动 DGIndex,再打开包含翻录 DVD 所得文件的文件夹。找到包含主要内容的 .vob 文件——几乎所有 DVD 的目录结构都如下图所示:

将所需的 .vob 文件拖入 DGIndex。点击确认窗口的「OK」按钮,然后前往「File」→「Save Project」:

DGIndex 会处理 .vob 文件,将音轨和视频轨拆分开。如果出现一条关于「Field Order Transition」的消息,点击「Yes」。等 DGIndex 干完活,就把它关了。前往 DGIndex 输出音频和 .d2v 文件的目录,删除你不希望出现在最终成品中的音轨。每个音轨都应以 DVD 信息中所描述的顺序正确编号。

然后启动 AvsP,向其窗口拖入 DGIndex 制作的 .d2v 文件。 如果你的 DVD 是 NTSC,在第二行添加 TFM().TDecimate()。 如果是 PAL,就不用管。 如果 DVD 是隔行扫描的,就另起一行添加 YADIFMod(edeint=NNEDI3())。 下一步,你需要去掉所有的黑边,前往「Video」→「Crop Editor…」

关于隔行扫描的处理

有两个推荐的可选项,第一个是 QTGMC,从质量的角度来看,它胜过目前其他一切反交错滤镜。另一个建议项是「购买」一个 DgDecNV 的许可。它反交错处理速度极快且输出质量相当不错。值得注意的是,如果你拥有一块 purevideo VP5 和 VDPAU feature set D 的英伟达 GPU,DgDecNV 将能够以大约 40-60 fps 的速度反交错……这就有效地消弭了作为压制过程瓶颈的反交错步骤。

彻底裁去黑边。唯一的限制,就是在裁切任何一边时务必保证数值为偶数。

在完成裁边之后,AvsPmod 会在窗口底部展示视频源的分辨率以及长宽比。为保证它能够与原始长宽比相匹配,你应参考下方的 SAR (Sample aspect ratio,采样纵横比) 表:

源分辨率 合适的 SAR
宽荧幕 NTSC (720 × 480) 40:33 (ITU) 或 32:27 (Non-ITU)
宽荧幕 PAL (720 × 576) 16:11 (ITU) 或 64:45 (Non-ITU)
全荧幕 NTSC (720 × 480) 10:11 (ITU) 或 8:9 (Non-ITU)
全荧幕 PAL (720 × 576) 12:11 (ITU) 或 16:15 (Non-ITU)

Non-ITU 比例更准确一些。你可能会需要一个计算比例用的小工具:ARS Calculator(提取码:pgw9)。

我们的目标是找到一个合适的比值。在与 AvsPmod 内提供的长宽比相乘时,若不能得到整数比,且有两个同等近似的比值时,选择优先确保纵向分辨率的那个。一旦你确认了该数值,就将它添加到你的 x264 参数尾部,例如 --sar 40:33。注意,并非所有可能的 SAR 值都列在此处。在极少情况下(奇怪的长宽比、超烂的 DVD 源),你可能需要做点儿数学运算来人工找到正确的 SAR 值。

计算公式:屏幕长宽比 × 宽高像素数的倒数

例如,一部屏幕比例 16:9,分辨率为 720 × 480 的视频,SAR = 16/9 × 480/720 = 32:27

压制

首先,你需要确定你的压制参数。对于一个确定的等级,每种压制来源都应被区别对待——调整你的压制参数并试探性地压制数次来决定何者能产生最佳结果。尽你所能地避免比特率/文件大小浪费,但千万不要为了更小的压制结果导致可感知的质量牺牲。

下面是几个我在决定最终的压制参数前,用来作为起始的基本模板。请认真查看它们——如果你觉得存在过多、过少、无用,或者是别的什么不妥,好好研究一下。在你确定自己心里有数之后,修改它们使之以最佳状况达到你所预想的目的。

适用于真实的演员和场景:

1
--ref 16 --no-fast-pskip --bframes 8 --b-pyramid normal --direct auto --deblock -2:-2 --subme 11 --analyse all --trellis 2 --aq-strength 1.2 --psy-rd 1.0:0.0 --b-adapt 2 --me umh --merange 64 --thread-input

适用于像《半梦半醒的人生》和《盲区行者》这样的电影:

1
--ref 9 --no-fast-pskip --bframes 8 --b-pyramid normal --direct auto --deblock 1:1 --subme 11 --analyse all --trellis 0 --aq-strength 1.1 --psy-rd 0.7:0.0 --b-adapt 2 --me umh --merange 64 --thread-input

适用于三维动画:

1
--ref 9 --no-fast-pskip --bframes 8 --b-pyramid normal --direct auto --deblock 1:1 --subme 11 --analyse all --no-dct-decimate --trellis 0 --aq-strength 1.1 --psy-rd 0.9:0.0 --b-adapt 2 --me umh --merange 64 --thread-input

适用于画面复杂度较高的动漫:

1
--ref 9 --no-fast-pskip --bframes 8 --b-pyramid normal --direct auto --deblock 1:1 --subme 11 --analyse all --trellis 2 --aq-strength 1.0 --psy-rd 1.0:0.0 --b-adapt 2 --me umh --merange 64 --thread-input

适用于画面复杂度较低的动画:

1
--ref 9 --no-fast-pskip --bframes 8 --b-pyramid normal --direct auto --deblock 1:1 --subme 11 --analyse all --trellis 0 --aq-mode 0 --psy-rd 0.0:0.0 --b-adapt 2 --me umh --merange 64 --thread-input

注意:准备一些你自己专用的压制模板是个明智之选,然后将它们保存在你电脑的某处——这总比每次压制都手动码字容易得多。同时,请务必牢记我只是将它们作为起始点,而非能够胜任一切我所压制之物的一招鲜。我通常会生成几个 1000 帧左右的测试压制来确认哪种设置能提供最佳结果。

点击 launcher.exe 的快捷方式,加载你的 .avs 文件,选取一个输出文件名,然后向图形界面粘贴进你的压制参数。「Rate Control」区域中三个选框的参数完全取决于你。我个人总是会使用 CRF,然后根据视频源的类型,在 15 和 18 之间(通常是 16.2 左右)选择一个 quantizer(量化值)。还有,别忘了在压制参数的尾部加上 –sar 值(在本例中,我的是 --sar 40:33)。窗口应与下图类似:

点击「Start!」然后静等压制完成。

翻录字幕

启动 SubRip。前往「File」→「Open VOB(s)」。然后点击「Open Dir」,你需要再一次浏览 VIDEO_TS 文件夹。你所需要的 .vob 文件通常正好是包含了电影主体的部分。通过类似下图所示的东西,你可知道你的选择是正确的:

许多 DVD 只有一条字幕轨,其语言会显示为「???」。另外的 DVD 会拥有多条字幕轨,各自以其语种命名,且(有时)会标明其所对应的音频/视频轨。

现在到了最艰难的时刻。点击「Start」。SubRip 完全不「懂」字幕文件中每个字母是啥玩意儿,你必须为 SubRip 指认每一个字母。虽说每个字母只需要指认一次……比如说,只要你告诉它「S」是 S,它就能自动将电影中的每个大写的 S 识别出来。(但这个过程对于中文字幕来说就比较痛苦了。)

在完整地「识别」了所有的字幕之后,点击「Corrections」→「Post OCR Correction」:

确保所有内容看起来与上图一致,然后点击「Correct!」

保存字幕文件。如果 SubRip 询问,就以 Unicode 压制存储。不要保存「character matrix」。

有时候 SubRip 并不能保证万无一失。在 notepad 中打开 .srt 文件,复制所有文本,然后粘贴到拥有拼写检查功能的文本处理软件中。检查错误的拼写、引号前后额外的空格,以及偶尔存在的单词之间多余或缺失的空格。

将评论音轨转码为 Ogg

首先,用 eac3to 将评论音轨转换成 .wav。如果评论音轨拥有超过两个声道,在下面的例子尾部添加 -down2 -mixlfe

1
eac3to commentary.ac3 commentary.wav

然后打开另一个命令提示符,使用 oggenc2 将 .wav 文件转码成 .ogg 音频流:

1
oggenc2 commentary.wav -q 1.0 -o commentary.ogg

提取章节标记

打开 ChapterGrabber 然后选择「File」→「Open File」。定位到你的源碟片并找到 VIEDO_TS 文件夹。确认电影主体所对应的 .ifo 文件(通常是最大的那一个)。一旦你找到了正确的 .ifo 文件且章节时间压制出现在 ChapterGrabber 中,便为其填写电影名并点击搜索按钮来查找章节名。最终结果应该如下图所示:

将结果保存为 .xml 文件。

注:这个搜索引擎似乎必须要挂上梯子才能正常联络数据库,否则就会导致软件卡死、自动退出。

混流

启动 MKVToolNix GUI。拖入所有必要文件——你压制好的视频、音轨和字幕——到 Input files 一栏。

前往「MKVToolNix GUI」→「偏好设置」→「默认值」→「默认额外命令行选项」,输入命令行 --engage keep_bitstream_ar_info

  • 每一轨都应设置正确的语言。
  • Commentary audio(评论音轨)和 SDH(Subtitle for deaf and hard of hearing 听力障碍提示字幕)字幕轨应提供正确的轨道名称
  • 如果你的压制含有评论音轨,请确保主音轨的「“默认轨道”标记」值为「是」
  • 除非电影的语言不是英文,否则所有字幕轨的「“默认轨道”标记」值都应为「否」。

为输出文件命名,然后点击「开始混流」。混流进程需要几分钟。等它跑完,前往「章节编辑器」→「打开 Matroska/WebM/章节文件」:

最后,点击上方菜单中的「章节编辑器」→「保存到 Matroska 或 WebM 文件」,将章节信息存入你刚混流好的 .mkv 文件。

搞定之后,使用视频播放器打开 .mkv 文件,跳着浏览一遍,确保它的表现正如你的预期。

Written by ZexWoo. All rights reserved.
主题 StackJimmy 设计 | 使用 Hugo 搭建