当前位置:首页 >> >>

使用AVS+MeGUI压制PSP用480P&272P详细教程

本教程所讲内容针对于使用 AVS+MeGUI 压制 PSP 用视频的方法 本教程共五部分,分别为: 一、工具篇 二、AVS 基础与 MeGUI 前期设置 三、压制基础及注意事项 四、参数详解 五、批处理批量生成 AVS 并压制的实现 如果想压制出一部高质量的视频,并且做到体积不大,则必须要选择一个高 清片源以及拥有足够的耐心 毕竟只有高质量的源才能转出高质量的成品视频;没有耐心,又谈何微调各 个参数的设置、对片源的处理以及漫长的等待呢? 同时,也希望大家能认真地、耐心地仔细看完本教程,只有这样才能真正掌 握所讲内容。 如果在亲自实践过程中出现错误,请先认真检查每一步操作是否正确 确认无误后仍有问题的,可以保存好错误信息之后 QQ 联系我 那么废话不多说了,我们直接进入正题吧

一、工具篇
所需软件及解码器合集 MeGUI、Microsoft .NET Frame work 2.0(或 2.0-3.x 内某个版本)、NeroAAC、 完美解码(解码器合集)、Avisynth 2.5.8、 AVSWriter(AVS 编写工具,软件作 者天神十三煞)

下载地址: MeGUI(115 网盘下载): MeGUI_0.3.5_x86_WithoutInstaller_OfflinePackage.zip 免安装版,加压后将文件拷贝至所需存放目录即可,详细设置见下文 Microsoft .NET Frame work 2.0 (XP 及之前的操作系统需安装,若已安装则不必重复下载安装) (Vista 及以后 的操作系统不必安装) http://download.microsoft.com/download/c/6/e/c6e88215-0178-4c6c-b 5f3-158ff77b1f38/NetFx20SP2_x86.exe NeroAAC http://ftp6.nero.com/tools/NeroDigitalAudio.zip 完美解码 http://www.skycn.com/soft/29561.html 安装本解码包前请先卸载任何其他解码包,包括暴风影音等 若已安装其他的完整解码包(需包含 Avisynth)则无需下载 Avisynth AVSWriter 很多人更新 MeGUI 之后因为 MP4BOX 的问题悲剧了 OTL… 于是这里附上旧版 MP4BOX AVSWriter: NeroAAC: 第三部分提到的 Profiles:

二、AVS 脚本基础及 MeGUI 前期设置
(1)AVS 脚本基础
由于 MeGUI 不支持视频文件的直接加载,必须要借助 AVS 滤镜来加挂视频文 件,同时 AVS 脚本的编写直接影响到压制成品的基本信息,所以 AVS 脚本的编 写尤为重要, 而这一部分又是比较令人头疼的, 所以在讲解的同时附上一款 AVS 编写工具,方便大家快速编写 AVS(工具见论坛附件) 我们用来写 AVS 的工具就是 AVSWriter,已上传至附件供下载 AVSWriter 的用法非常简单,见下图

下面是手动编写 AVS 的方法,对压片感兴趣或者想学习一下的同学可以看一看 首先建立一个文本文档,打开文档进行代码编写,最后保存该文档为 XXX.avs

(后缀名为 avs,即将 XXX.txt 更名为 XXX.avs); 我们先看一个 AVS 成品样例:
1. LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\ColorMatrix.DLL") 2. LoadPlugin("D:\软件\MeGUI\AVSWriter\dll\VSFilter.DLL") 3. DirectShowSource("K:\Wait for 1st-PASS\[TGHD][Hayate_the_combat_butler_2nd_Season][01][BDRIP][480P][x 264_AAC].mkv",23.976,convertFPS=True) 4. ConvertToYV12() 5. TextSub("D:\软件\MeGUI\AVSWriter\奋起作品.ssa") 6. TextSub("K:\Wait for 1st-PASS\[TGHD][Hayate_the_combat_butler_2nd_Season][01][BDRIP][480P][x 264_AAC].ass") 7. LanczosResize(704,480) 8. AddBorders(8,0,8,0) 复制代码

在该成品中: LoadPlugin()是 AVS 滤镜中加载插件的代码, VSFilter.dll 是字幕插件, 而 其中 的 D:\软件\MeGUI\AVSWriter\dll\是所需插件的具体路径; DirectShowSource()是 AVS 脚本中的滤镜代码, 一般情况下使用该滤镜来加挂 视频文件 K:\Wait for 1st-PASS\是视频的路径, [TGHD][Hayate_the_combat_butler_2nd_Season][01][BDRIP][480P][x264 _AAC].mkv 为视频的文件名及扩展名(视频的格式) 23.976 是指转换后的视频成品的帧速,一般应设为片源的帧率; ConvertFPS=True 防止转换后 MP4-AVC 声音与画面不同步, VFR 源更要注意 加上此行;

LanczosResize(704,480)是控制转换后视频成品的分辨率大小的代码,其中宽 与高之间用逗号隔开,且宽和高必须为 8 的倍数 该 AVS 是压制 480P 视频用,若想压制 272P 视频则可改为: LanczosResize(480,272)并去掉 AddBorders(8,0,8,0) TextSub()为加载文本字幕文件(包括 srt、ass、ssa 等)的加载代码,K:\Wait for 1st-PASS\为字幕所在目录的路径

[TGHD][Hayate_the_combat_butler_2nd_Season][01][BDRIP][480P][x264 _AAC].ass 为视频所对应的文本字幕文件; 与此相似的还有 VobSub(),VobSub()为 sub 字幕文件的加载代码,括号内写 法与 TextSub()中括号内写法相同;

AddBorders()为加黑边语句 AddBorders(8,0,8,0)即表示视频左右各加 8 黑边 (因为 PSP 播放 480P 的视频时,会首先左右各裁去 8 个像素,这样我们会有左 右各 8 个像素的画面看不到,所以我们先将画面先 Resize 成 704x480,然后再 在画面左右各加 8 像素的黑边[即:AddBorders(8,0,8,0)] 变为 720x480,这样 PSP 播放时只会裁去那 8 像素的黑边从而使得播放时画面没有损失)

ColorMatrix(mode="Rec.709->Rec.601");若为 1080P/720P 转为 480P/272P,请载入视频后加上此行,否则请不要加 关于 AVS 中其他的各种滤镜的用法本贴不加以介绍,有兴趣的同学可以参考以 下两个文档:

AviSynth2.5 核心滤镜 AviSynth2.5 扩展滤镜

(注意:所有代码的编写必须用英文输入法!编写完后将所编写的 AVS 文件拖 到播放器中播放一下,如果能正常播放就说明编写没有问题,有问题的会在播放 器中显示具体哪出了问题,这个大家到实际中自己摸索即可!)

关于加黑边使得视频不变形的问题,参考此贴: 关于视频如何加黑边和裁边教程@TGHD——节奏蓝调

下面提供模板:

(DirectShowSource 内的 FF 指片源的帧率--当然你也可以自定)

片源为 16:9
272P
1. LoadPlugin("X:\XXXXXX\XXXXX\XXXX.dll") 2. DirectShowSource("X:\XXXX\XXXX\XXXX.XXX",FF,ConvertFPS=True) 3. ConvertToYV12() 4. VobSub("X:\XXXXXX\XXXXX.sub")或者 TextSub("X:\XXXXXX\XXXXXX.xxx") 5. LanczosResize(480,272) 复制代码

480P
1. LoadPlugin("X:\XXXXXX\XXXXX\XXXX.dll") 2. DirectShowSource("X:\XXXX\XXXX\XXXX.XXX",FF,ConvertFPS=True) 3. ConvertToYV12()

4. VobSub("X:\XXXXXX\XXXXX.sub")或者 TextSub("X:\XXXXXX\XXXXXX.xxx") 5. LanczosResize(704,480) 6. AddBorders(8,0,8,0) 复制代码

片源为 4:3
272P
1. LoadPlugin("X:\XXXXXX\XXXXX\XXXX.dll") 2. DirectShowSource("X:\XXXX\XXXX\XXXX.XXX",FF,ConvertFPS=True) 3. ConvertToYV12() 4. VobSub("X:\XXXXXX\XXXXX.sub")或者 TextSub("X:\XXXXXX\XXXXXX.xxx") 5. LanczosResize(360,272) 复制代码

480P
1. LoadPlugin("X:\XXXXXX\XXXXX\XXXX.dll") 2. DirectShowSource("X:\XXXX\XXXX\XXXX.XXX",FF,ConvertFPS=True) 3. ConvertToYV12() 4. VobSub("X:\XXXXXX\XXXXX.sub")或者 TextSub("X:\XXXXXX\XXXXXX.xxx") 5. LanczosResize(640,480) 复制代码

AVS 脚本基础部分到此结束 (2)MeGUI 前期设置
将下载到的压缩包解压,之后将全部文件拷贝到你所需存放 MeGUI 的目录,之 后运行 MeGUI.exe 首先我们先来更新 MeGUI,因为此时它只是一个空壳而已,还不能用于压片

之后会弹出这个界面:需更新的全部勾选后点 Update

弹出这个时右键,选择 Check All 之后点 Import

更新完毕~,点 Yes 重启 MeGUI

接下来我们关联 NeroAAC,解压下载的 NeroDigitalAudio.zip,之后进入 NeroDigitalAudio\win32 文件夹,找到 neroAacEnc.exe 复制这个文件,打开 MeGUI 的存放目录,进入 tools 文件夹,后新建一个文件

夹名为“NeroDigitalAudio”,进入这个新建的文件夹,将 neroAacEnc.exe 复制进去。 随后打开 MeGUI,上方菜单中选择:Options-settings 并按照图片上所注明的进行关联

至此 NeroAAC 与 MeGUI 关联完毕,前期准备结束

三、压制基础及注意事项
关于此段,如果只是为了放到 PSP 里看看而已的话可以直接使用我提供的 Profiles(下载地址见二楼,即工具篇),将解压出来的后缀为 xml 的文件放到 MeGUI 目录下\allprofiles\x264 文件夹中即可 想具体学一下的可以看看图片上所附文字以及第四、第五部分 进入 MeGUI 主界面,在 Video encoding 和 Audio 中的 Encoder settings 选 项中分别选择 X264 和 Nero AAC 在 File format 和 Extension 分别选择 RAWAVC 和 M4A

设置好后我们点击 Video encoding 中的 Config 开始进行基本视频压制参数设 置

打开视频部分的 Config 后可见如下界面: 我们首先勾选 Show Advanced Settings 开启高级选项

之后注意看红色的 Modes 区域的下拉列表,有多重编码模式,这里简单介绍一 下: 1pass 即仅编码一次,2pass 则为编码两次,3、4…pass 以此类推

ABR 平均码率压制,一次成形。码率的分配来自即时验算。通常不应该使用这

个模式。 Const Quantizer(qp) 固定量化值输出。每一类帧采用相同的量化值来量化(停 用弹性量化),使得全片的质量大体相近。速度较 CRF 模式更快一点,但个人不 推荐这个模式。 2pass - 1st/2nd 手动进行 2pass 压制。1st 时可以用 turbo 以加快压制速度。 automated 2pass 自动 2pass 压制。一次设置就能生成 2 个任务,比手动更方 便些。 3pass 与上面同理,只不过多增加了一次编码,3pass 对码率的分配更优化,但 是效果不大,而转换时间会增加很多,所以一般不推荐。 Const Quality(crf) 固定速率系数,对于体积没有要求的压制,对于相同的视觉 品质,CRF 比 QP 输出的档案更小,如果只是 1pass 的话推荐选用这个模式。

若是 QP/CRF 模式下,Modes 后的 Quantizer/Quality 即为量化值,该数值越 小画质越高、码率越高、文件体积越大,默认值为 23 片源好的话可以把该值加大,但最好不要低于 15 或超过 28

若是码率模式下,Mode 后的 Bitrate 即为码率,码率越高画质越高、文件体积 越大,默认值为 700 关于这个值,272P 的话动画 400-600 即可,电影 600-800。(动态画面很多的 加高一点码率,追求质量可加高一些码率) 480P 的话动画 700-1000 即可,电影 1100-1300。(动态画面 很多的加高一点码率,追求质量可加高一些码率)

另注明:如果你用的参数很变态(即很高的参数,压制速度极低)或者比较好的 片源(比如 BD,HDTV),这个值可以减小。比如极限参数可以做到 CRF18 下, 272P 动画仅 200-300K 码率

Modes 下方有 Prestes 区域,是一个滑块,由左到右压制速度越来越低,压制 质量越来越高,码率控制越来越佳,自行根据电脑配置及个人能容忍的速度范围 而定 (注意每次调整该滑块后将 Frame-Type 选项卡下的 Number of Reference Frame 的值改为 0、1、2 或 3,该值定义见下文) 以下是在 PSP 上播放所必须注意的设置: 我们首先切换到 Misc 选项

Custom Command Line 中填上:“--b-pyramid none” 【若为 480P 则还 需加上“--sar 40:33”,注意两参数之间必须加空格】

转入 AVC Level 和 AVC Profile 区域,若压制的是仅 PSP 或 PC 使用的 272P 或 480P,应选择 Level 3,Main Profile 若想要压制 PSP 与 IPhone 均兼容的 272P 则必须选择 Level 1.3,Baseline Profile,否则 IPhone 无法播放

关于多线程以及快速一次编码设定参考图片上的说明即可

接下来我们切换到 Frame-Type 选项

此处需注意的是 Number of Reference Frames 不可超过 3、B-Pyramid 必须 设为 Disabled,否则 PSP 不能播放 B 帧设置最好位于 3-8 之间(静态画面多则高,反之则设低),太高了极影响速度

关于 P-frame Weighted Prediction,建议关闭,否则在部分色彩过渡处 PSP 可能会花屏(例子:《Angel Beats》这部动漫的 OP 出现 Angel Beats 字样时)

其他的注意看图片即可 接下来切换到 Rate Control 选项

这里没什么好设置的,注意看一下图片里的说明即可

然后切换到 Analysis 选项,这里要说明的内容比较多

对着图片认真看看这里然后设置吧 这里要说一点的是关于 Macroblocks 区域下 P4x4 的勾选问题,许多教程中指 出这里不应该勾选(Level3 以上都不应该勾选) 但是实际应用中,打开 p4x4 以及 B 帧并不会造成问题,详细原因我们到第四部 分再解释 当然了,如果想保险一点,还是可以不勾选 p4x4 的 全部设定完之后点 OK 保存, 然后回到 MeGUI 主界面, Audio 部分的 Config 点

音频部分比较简单,照着来就可以了,设置好后点击 OK 保存

至此 MeGUI 基本设置完毕,可以开始压制啦~

回到 MeGUI 主界面,我们分别添加好视频和音频文件,之后点击 AutoEncode (不加音频文件的话 PSP 是不能播放的,大家要注意哦)

按照图片所写的提示设置好后点击 Queue,加入任务队列 之后回到 MeGUI 主界面,选择 Queue 选项卡

点击 Start 开始转换,点击 Stop 停止转换。使用 Ctrl+M 组合键可以最小化到 任务栏。 Delete 删除所选任务;Clear 清除任务栏所有任务。 之后我们只需要等待一段时间就可以看到成品了,还可以把它复制到 PSP 里观

看~

Enjoy~ 另外补充:

关于压制出来的视频文件字幕变形的问题 如果用的是外挂字幕,例如 ass,ssa 之类的,压制 480P 之后为使画面不变形需 按 16:9 播放(PSP 就按这个播放),但这么做的话,如果 AVS 中载入字幕语句 在 Resize 语句之后的话,字幕字幕会变形

解决方法分为两种, 第一种是把 AVS 里的载入字幕的语句(TextSub 或 VobSub) 放到 Resize 语句前面(推荐这一种,改字幕很费时费力)

第二种就是修改字幕文件了: 如果是 ass 字幕,我们打开它,找到[V4+ Styles],可见类似于下面的这些代码
1. [V4+ Styles] 2. Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding 3. Style: Default,simhei,28,&H00FFFFFF,&H00000000,&H00111111,&H000D0D0D,-1,0,0,0, 100,100,1,0.00,1,2,0,2,30,30,10,1 4. Style: staff,youyuan,26,&H00EBEBEB,&H00000000,&H28000000,&H00000000,-1,0,0,0,1 00,100,0,0.00,1,0,2,2,15,15,10,1 复制代码

我们可以在 Format:后面找到 ScaleX, ScaleY, 这两项对应了字幕的变形,即 X 轴、Y 轴的拉伸

我们找到它们在下面的 Style:中的对应位置,即下面一行中的加亮部分 Style: Default,simhei,28,&H00FFFFFF,&H00000000,&H00111111,&H000D0D0 D,-1,0,0,0,100,100,1,0.00,1,2,0,2,30,30,10,1 100,100,即对应了 X、Y 轴长度均为 100%

由于视频是 sar40:33 变形,所以为了防止字幕变形,须将字幕的 X、Y 轴长度 比变成 33:40,即大约 82:100 故将 100,100,改成 82,100,即可: Style: Default,simhei,28,&H00FFFFFF,&H00000000,&H00111111,&H000D0D0 D,-1,0,0,0,82,100,1,0.00,1,2,0,2,30,30,10,1

ssa 字幕的变形设置于此类似,不同的是 ssa 字幕使用的是 V4 Styles,不可在 Style 部分直接全部修改,需手动加上变形命令 找到[Events],可见与下面类似的文本:
1. [Events] 2. Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text

3. Dialogue: Marked=0,0: 23.80,0: 28.19,*Default,说话人,0000,0000,0000,, 02: 02: 她都不太跟我说话了 复制代码

我们在字幕正文之前插入一个变形命令{\fscx82}, x 轴长度变为原来的 82%, 即 此时,原字幕变为:

1. [Events] 2. Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text 3. Dialogue: Marked=0,0:02:23.80,0:02:28.19,*Default,说话 人,0000,0000,0000,,{\fscx82}她都不太跟我说话了 复制代码

若想批量修改,可以使用记事本进行批量替换(比如将“,0000,,”,批量替换为 “,0000,,{\fscx82}”)

若为 srt 字幕, 可以使用 PopSub 一类的字幕转换软件将其转换为 ass 或 ssa 后 进行修改

四、参数详解 Main

这一区域第三部分已经基本说明过了, 这里稍微说明下下关于速率控制的有关内 容

1.QP
三种速率控制方法之一。设定 x264 以固定量化值(Constant Quantizer)模式 来编码视讯。这里给的值是指定 P 帧的量化值。I 帧和 B 帧的量化值则是衍生自 --ipratio 和--pbratio。 CQ 模式把某个量化值作为目标,这意味着最终档案大小是未知的(虽然可以透 过一些方法来准确地估计)将值设为 0 会产生无失真输出。 。 对于相同视觉品质, qp 会比--crf 产生更大的档案。qp 模式也会停用弹性量化,因为按照定义“固 定量化值”意味着没有弹性量化。

此选项与--bitrate 和--crf 互斥。 通常应该改用--crf,尽管 QP 不需要 lookahead 来执行因此速度会较快。

2.Bitrate
三种速率控制方法之二。以目标位元速率(target bitrate)模式来编码视讯。 目标位元速率模式意味着最终档案大小是已知的,但最终品质则未知。x264 会 尝试把给定的位元速率作为整体平均值来编码视讯。此参数的单位是千位元/秒 (8 位元=1 字节) 注意, 千位元(kilobit)是 1000 位元, 。 1 而不是 1024 位元。 此设定通常与--pass 在两阶段(two-pass)编码一起使用。 此选项与--qp 和--crf 互斥。

3.CRF
最后一种速率控制方法:固定速率系数(Constant Ratefactor)。当 qp 是把 某个量化值作为目标,而 bitrate 是把某个档案大小作为目标时,crf 是把某个 “品质”作为目标。构想是让 crf n 提供的视觉品质与 qp n 相同,只是档案更 小一点。crf 值的度量单位是“速率系数(ratefactor)”。 CRF 是借由降低“较不重要”的帧之品质来达到此目的。在此情况下,“较不重 要”是指在复杂或高动态场景的帧,其品质不是很耗费位元数就是不易察觉,所 以会提高它们的量化值。 从这些帧中所节省下来的位元数被重新分配到可以更有 效利用的帧。 CRF 花费的时间比两阶段编码少,因为两阶段编码中的“第一阶段”被略过了。 另一方面,要预测 CRF 编码的最终位元速率是不可能的。根据情况哪种速率控

制模式更好是由你来决定。 此选项与--qp 和--bitrate 互斥。

各种速率控制系统的详细资讯可以参阅: http://git.videolan.org/?p=x264.git;a=blob_plain;f=doc/ratecontrol.txt;hb=HEAD

另外说明下 Tunings 区 Tunings 下的下拉菜单中有多种预置参数可供选择,比如 Film-电影, Animation-动画等,压制不同类型的影片时可以先在这里选择后进行其他参数 的微调 (一般直接调整各个参数即可,无需改动 Tunings)

Frame-Type

1.H.264 Features 选项区
Deblocking:开启环路滤波,可以除马赛克。 默认值:勾选 (当不勾选该项时该参数显示为:--no-deblock) (注意:选上该选项后,在解码时也要打开 deblocking,否则会出现色块、马 赛克现象!) (PSP 自动就会打开的,不用担心)

Deblocking Strength:--deblock 0:0:设置环路滤波的 AlphaC 的参数,范 围-6-6。 默认值:0

Deblocking Threshold:--deblock 0:0:设置环路滤波的 Beta 的参数,范围 -6-6。 默认值:0 (注意: Deblocking Strength 对应--deblock 0:0 中前面的数值; Deblocking Threshold 对应--deblock 0:0 中后面的数值!)

CABAC:内容自适应二进制算术编码,高效率的熵编码。关闭该参数时会严重 降低画面质量,但是能提高编码速度。 默认值:勾选 (当不勾选该项时该参数显示为:--no-cabac)

2.GOP Size 选项区

Maximum GOP Size:--keyint:最大 IDR 帧间距。一般来说压制动画时,可 以增大该值。 默认值:250

Minimum GOP Size: --min-keyint: 最小 IDR 帧间距。 一般来说压制动画时, 可以减小该值。 默认值:25

3.Other 选项区

Number of Reference Frame:--ref:最大参考帧数,范围 0-16。该参数对 质量和压缩比都有提高。 默认值:1 建议:大于 1 小于等于 3 (注意:最高不超过 3,否则 PSP 无法播放,数值越高速度越慢!)

Number of Extra I-Frame:--scenecut:画面动态变化值,当超出此值时插入 I 帧。 默认值:40

P-frame Weighted Prediction:--weightp:P 帧加权预测 0 – 关闭 Disabled 1 – 常规 Blind 2 – 智能 Smart 默认值:2 建议:0(防花屏.PSP 用)

Encode Interlaced:--interlaced:启用纯交错模式。用于隔行扫描的源。 默认值:不勾选

Adaptive I-Frame Decision:自适应 I 帧判定 默认值:勾选 建议:勾选 (注意:若不勾选此项,则 Number of Extra I-Frame[--scenecut] 不可用, 同时显示为--no-scenecut)

4.B-Frames 选项区
(注意:要使该区域参数生效需要让 Number of B-frames 设置大于 1!) Weighted Prediction for B-frames:--weightb:允许 B 帧加权预测,可以减 少相邻 B 帧质量低的影响,对质量和压缩比都有提高,且对速度影响极少。 默认值:勾选 建议:勾选

Number of B-frames:--bframes :在 I 帧与 P 帧之间可插入 B 帧数量的最大 值,范围 0-16。 默认值:0 建议:大于 1 (注意:数值越高速度越慢!) Adaptive B-Frames:--b-adapt:自适应 B 帧判定模式。 0-Off 为:关闭; 1-Fast 为:快速; 2-Optimal 为:优化。 默认值:1-Fast 建议:2-Optimal (注意:当该选项选择为 2 时, Number of B-frames 参数设置较高时,编码 速度会下降!) B-Pyramid:--b-pyramid:允许 B 帧做参考帧。 none – 禁用 Disabled

Strict – 严密 Strict Normal – 标准 Normal 默认值:Norma 建议:Disabled (注意:压制 PSP 用视频时必须选择 Disabled,否则无法播放)

5.Slicing 选项区

这一区域就不要去动了,除非你为了压好之后刻录成 BD 盘让 BD 播放器播放

Nb of slices by Frame:--slices: 设定每个帧的切片数,而且强制为矩形切片;会被 slice-max-size (最大切块体 积[单位为字节]),和 slice-max-mbs (最大切块体积[单位为宏区块])覆盖。 为蓝光播放机刻盘而编码,需要设置为 4,不是为蓝光播放机刻盘而编码的话, 建议默认设置 0。设置为 0 以外的参数会降低压缩效率。

Max size(in bytes):--slice-max-size:最大切块体积(单位为字节)

Max size(in mbs):--slice-max-mbs:最大切块体积(单位为宏区块)

另附上这一区域的英文释义 slices Default: 0 Sets the number of slices per frame, and forces rectangular slices. (Overridden by either --slice-max-size or --slice-max-mbs if they are set.) If you are encoding for Blu-ray, set this to four. Otherwise, don't use this unless you know you need to. See Also: --slice-max-size, --slice-max-mbs.

slice-max-size Default: 0 Sets the maximum slice size in bytes, including estimated NAL overhead. (Currently is not compatible with --interlaced.) See Also: --slices

slice-max-mbs Default: 0 Sets the maximum slice size in macroblocks. (Currently is not compatible with --interlaced.) See Also: --slices

Rate-Control

1.Quantizers 选项区
Min/Max/Delta: Min:--qpmin:设置最小量化值,范围 0-51; 默认值:10 Max:--qpmax:设置最大量化值,范围 0-51; 默认值:51 Delta:--qpstep:设置相邻帧之间的量化值差,范围 0-50。 默认值:4 (注意:该选项的三个空按从左到右分别对应 Min、Max、Delta!)

Quantizers Ratio(I:P/P:B): Quantizers Ratio I:P:--ipratio:I 帧和 P 帧之间的量化系数; 默认值:1.4 Quantizers Ratio P:B:--pbratio:P 帧和 B 帧之间的量化系数。 默认值:1.3 (注意:该选项的两个空从左到右分别对应 Quantizers Ratio I:P、Quantizers Ratio P:B!)

Deadzones(Inter/Intra): Deadzones Inter:--deadzone-inter:设置 inter 模式下,亮度死区量化值,范 围 0-32; 默认值:21 Deadzones Intra:--deadzone-intra:设置 intra 模式下,亮度死区量化值,范 围 0-32; 默认值:11 (注意: 该选项的两个空从左到右分别对应 Deadzones Inter、 Deadzones Intra!)

Chroma Qp Offset:--chroma-qp-offset:色度和亮度之间的量化差,范围-12 -12。 默认值:0

Credits Quantizer:演员表量化值。

默认值:40

2.Rate Control 选项区
VBV Buffer Size:--vbv-bufsize:码率控制缓冲区的大小,单位 kbit。 默认值:0

VBV Maximum Bitrate:--vbv-maxrate:平均码率模式下,最大瞬时码率。 默认值:0

VBV Initial Buffer:--vbv-init:码率控制缓冲区数据保留的最大数据量与冲区大 小之比,范围 0-1.0。 默认值:0.9

Bitrate Variance:--ratetol:在编码模式为平均码率模式下,瞬时码率可以偏离 的倍数,范围 0.1-100.0。 默认值:1.0

Quantizer Compression:--qcomp:线性量化控制,0.0 为固定码率,1.0 为固 定量化值,只能用于二次压缩和基于质量的压缩模式。 默认值:0.6

Temp. Blur of est. Frame complexity: --cplxblur:相邻帧的平滑量化值的比例

的最大值,范围 0-99,只能用于二次压缩和基于质量的压缩模式。 默认值:20

Temp. Blur of Quant after CC:--qblur:对统计文件结果的平滑量化值的比例 的最大值,范围 0-99.9,只能用于二次压缩。 默认值:0.5

Nb of Frames for Lookahead:--rc-lookahead:设定 mb-tree 速率控制和 vbv-lookahead 使用的帧数。对于 mb-tree 部分,增加帧数带来更好的效果但 速度也较慢;对于 vbv-lookahead 部分,当使用 vbv 时增加帧数带来更好的稳 定性和准确度。最大值不超过 250 或 keyint。该值越高对内存的占用越高,内 存低的话还是默认或者开低吧,内存够大的话就调高点。

Use MB-Tree:使用 Macroblock Tree,一个基于 macroblock 的 qp 控制方 法。简单来说此参数理论上能够优化 P 帧,但实际测试对所有帧压缩比均有提 升,此参数请务必开启,特别是对于静态/动画效果明显;若关闭此参数则 crf 算法也会改变,若一定要关闭则 crf 的改动请自行摸索;此外 qcomp 会对 MB-Tree 效果造成影响。

3.Adaptive Quantizers 选项区
Mode:--aq-mode:自适应量化模式,可以在 1 帧中不同宏块间重新分配量化 值,能提高暗部细节,但会提高码率。不能在固定量化模式(Const.Quantizer

模式)中使用。 Disabled:关闭(0); Variance AQ (complexity mask):开启(1); Auto-variance AQ(experimental):开启(2) 默认值:1 建议:1

Strength:--aq-strength:AQ 强度,减小低细节宏块的量化值。 默认值:1.0 建议:动画略低,范围 0.5-0.9

Analysis

1.Motion Estimation 选项区
Chroma M.E.:进行色度的动态预测。 默认值:勾选 (当不勾选该项时,该参数显示为:--no-chroma-me)

M.E. Range:--merange:当 M.E. Algorithm 选择 Multi hex 或 Exhaustive 时 的搜索半径,最大 64。 默认值:16

M.E. Algorithm:--me:对全像素块动态预测搜索的方式,可选项: Diamond:菱形搜索,搜索半径为 1; Hexagon:正六边形搜索,搜索半径为 2; Multi hex:可变半径六边形搜索; Exhaustive:全面搜索; SATD Exhaustive: 用 Hadamard 方式进行全面搜索,比 Exhaustive 更慢。 默认值:Hexagon。 建议:选择 Multi hex (注意:建议设为 Multi hex。Exhaustive 和 SATD Exhaustive 实在太慢了, 而且质量提高极不明显。 除非你不怕浪费时间且追求高质量画面的骨灰级玩家并 且很相信自己机器配置那么就选 SATD Exhaustive 吧!)

Subpixel Refinement:--subme:动态预测和分区方式,可选项 1-10 1 - Qpel SAD:用全像素块进行动态搜索,对每个块再用快速模式进行四分之 一像素块精确搜索 2 - Qpel SATD:用半像素块进行动态搜索,对每个块再用快速模式进行四分之 一像素块精确搜索 3 - Hpel on MB then QP:用半像素块进行动态搜索,对每个块再用质量模式 进行四分之一像素块精确搜索 4 - Always QPel:用快速模式进行四分之一像素块精确搜索 5 - Qpel & Bidir ME:用质量模式进行四分之一像素块精确搜索 6 - RD on I/P frames:进行 I、P 帧像素块的速率失真最优化(rdo) 7 - RD on all frames:进行全部帧像素块的速率失真最优化 8 - RD refinement on I/P frames:进行 I、P 帧运动矢量及块内部的速率失真 最优化 9 - RD refinement on all frames:进行全部帧运动矢量及块内部的速率失真最 优化 10 – QP-RD: 对每个块进行四分之一像素块精确搜索及块内部的速率失真最优 化 (需要 Trellis=2,AQ-Mode>0) 默认值:7 建议:7 (注意:该选项选择的数值越大画面质量越好速度越慢!)

2.Extra 选项区

MV Prediction Mode:Direct 预测模式 None - 无 Spatial - 空间 Temporal – 临时 Auto – 自动 默认值:Spatial 建议:Auto

Trellis:--trellis:Trellis 量化,对每个 8x8 的块寻找合适的量化值,需要勾选 CABAC 才能使用该参数。可选项: 0 - None: 关闭; 1 - Final MB: 只在最后编码时使用; 2 - Always:一直使用。 默认值:0 建议:开启该参数 (注意:该参数能提画面高质量[同码率下],配置较低的电脑且对画面质量没有 要求的用户可以选择 1 - Final MB, 配置较高的电脑且对画面质量有要求的用户 可以选择 2 - Always;画面质量:1 - Final MB 比 2 - Always 差!编码速度: 1 - Final MB 比 2 – Always 快!)

Psy-RD Strength: --psy-rd 0:0: rdo 中使用 Psy 算法 在 (一种心理视觉模型) 。 默认值:1.0

建议:0 (注意:这个参数对应--psy-rd 0:0 中前面的数值!当 Subpixel Refinement 参数选择大于等于 6 时才能使用该这个参数。该参数会影响到 Chroma Qp Offset 的参数。 当设置该数设置为 1.0 时 Chroma Qp Offset 会自动设置为-2; 当该参数设置为 0 时 Chroma Qp Offset 会自动设置为 0!)

Psy-Trellis Strength:--psy-rd 0:0:Psy-Trellis 量化,可提高细节,但会大幅 提高码率。 默认值:0.0 (注意:该参数需要 Subpixel Refinement 大于等于 6 且 Trellis 大于等于 1 才 能使用。这个参数对应--psy-rd 0:0 中后面的数值!)

Mixed Reference frames:--mixed-refs:可以在一帧内使用不同参考帧。该参 数能提高画面质量,但对速度影响较大。 默认值:不勾选 建议:勾选

No Dct Decimation:--no-dct-decimate:关闭 P 帧联合编码。勾选上该项后 可以增加细节,但也会增大体积。 默认值:不勾选 建议:勾选

No Fast P-Skip:--no-fast-pskip:关闭 P 帧快速跳过的检测。 默认值:不勾选 建议:勾选

No Psychovisual Enhancements:关闭 Psy 算法 默认值:不勾选 建议:不勾选 Noise Reduction:--nr:降噪,范围 0-10000。

3.Macroblocks 选项区
下拉菜单:--partitions 可选项: ALL:将能选的动态块划分方法全部选中; None:不选择任何动态划分方法; Custom:自行选择动态块划分方法; Default:按照默认的动态块划分方法选择。

关于这一区域中动态划分的选择问题 理论上来说, 由于 AVC 在 Level3 上的限制, 为了防止超过 MaxMvsPer2Mb=16, 故不能勾选 P4x4(若要勾选则 B 帧需设为 0)

但实际应用中, 打开 P4x4 并不会造成问题, 因为 MaxMvsPer2Mb 的目的是限

制计算能力的消耗,但由于 P4x4 只会被用在极少数(0.5%)的 MB 中,相对 于整帧的 MV 数量来说根本可以忽略不计,所以不会对解码器造成额外的负担 所以对于解码器,无论硬件还是软件,在高 level 下开 P4x4 并不会造成什么后 果 所以这一区域可以选择 ALL,即勾选 I4x4,P8x8,B8x8 和 P4x4(B 帧不必设 为 0) 但是如果担心出问题可以选择更为保险的 Default, 即仅勾选 I4x4, P8x8, B8x8, 或选择 Custom 手动勾选这三项 另外附上 AVC 各个 Level 的限制表 http://baike.baidu.com/view/403562.htm#4

4.Blu-Ray 选项区
这个区域不用管,也不要动,因为我们不是为了压好之后刻录成 BD 盘让 BD 播 放器播放。

Misc

1. Custom Command Line 选项
此区域供我们添加自定义的参数,比如 sar 这个参数等等

我们在这里填上“--b-pyramid none”,以防止 PSP 无法播放 若为 480P 视频,还需要加上“--sar 40:33”,需要注意的一点是两个我们自己 添加的参数之间一定要打上一个空格 关于--b-pyramid none,见 Frame-Type 选项卡下的 B-Frame 区域,其中的 B-Pyramid 即为此参数, 这里重复添加的原因是 MeGUI 的部分预设与 x264 的 实际默认值不符,为了保险起见所以再添加一次

关于--sar 40:33,由于 480P 的实际分辨率是 720X480,而去除黑边后,视频

部分分辨率为 704X480,则可知宽高比为 22:15,但是我们所播放的实际视频 经过加黑边、Resize 之后只有以 16:9 的宽高比播放才能呈现正确的图像,否则 人物会变形, 于是这里我们就使用一个 x264 的命令, “--sar x:y” y 对应 x、 (x: y 轴拉伸之长,为比值),来使得播放时的高宽比设置为 16:9

Sar 命令中 x、y 的值的计算公式为:SarX/SarY=(DarX*height)/(DarY*width) Dar 为显示宽高比(此时我们应设为 16:9),height 为视频原本的高,width 为 原本视频的宽,单位为像素 于是可以得出:SarX/SarY=(16X480)/(9X704)=40/33

2.Files 选项区
没什么好设置的,跳过

3.V.U.I 选项区
一样没什么好调整的,跳过

4.Input/Output 选项区
PSNR calculation:--psnr:开启 PSNR 计算。这是个画面质量的校验机制,关 掉不会影响画质,还会缩短压缩时间。 默认值:不勾选 SSIM calculation:--ssim:开启 SSIM 计算。这是个画面质量的校验机制,关掉 不会影响画质,还会缩短压缩时间。 默认值:不勾选

5.AVC Level 选项区
无论是 272P 还是 480P 均设为 Level3 即可,以防止不能播放

若想制作 IPhone 兼容的 272P.MP4,此处应选择 Level1.3,以防止不能播放

6.AVC Profiles 选项区
无论是 272P 还是 480P 均设为 Main Profile 即可,以防止不能播放 若想制作 IPhone 兼容的 272P.MP4, 此处应选择 Baseline Profile 此时 CABAC、 ( B 帧均不可用),以防止不能播放

7. Threads 选项区
Threads-Input:--thread-input:在单独线程上运行 AVS,建议勾选 Threads:--threads:编码线程,使用多线程技术。多核 CPU 可以选择自己的 CPU 核数加快编码速度。0 则为自动设定线程。

8.Slow first pass 选项区
Slow first pass:--slow-firstpass:缓慢一次编码,不自动使用能加速第一次 编码时速度的参数(即--ref 1 --no-8x8dct --partitions none --me dia --subme 2 --trellis 0 --fast-pakip) 不勾选此项可加快第一次编码时的速度,仅在 npass 模式中生效

9.Adjustments 选项区
Default Settings:点此还原所有设置 Preset Settings:点此使用预置设置 这两项就不要去点了,不然我们之前设置的东西都会被清除覆盖掉,万一不小心 点了那么请按左下角的 Cancel 撤销更改。

五、批处理批量生成 AVS、进行压制的实现方法

因为涉及到调用批处理以及 for 命令,只有自己动手多尝试才能更快掌 握此部分
当我们要压制很多视频时,比如压制一整部动画,动辄数十话,如果一个一个的 写 AVS,一个一个的添加到 MeGUI 中处理,很显然工作量相当巨大,那么有没 有可以节约我们的时间与精力让它自动压制的方法呢? 答案是肯定的,运用 Windows 自带的批处理(.bat)就可以做到 在这里简单说明一下,MeGUI 只是一个壳、一个图形界面,我们在它上面更容 易调整各个 x264 的参数,而后它会用我们所设置的参数调用 x264 这个程序进 行压制 所以说我们绕过 MeGUI,直接用命令行调用 x264 进行压制也是可以的,并且 这种方式不受限制,用处更多

关于批处理的简要介绍: http://baike.baidu.com/view/80110.htm 创建一个批处理文件的方法也很简单,右键新建一个文本文档,然后将它的后缀 名(.txt)改为(.bat)即可 之后我们在这个批处理文件上右键,选择“修改”,就会弹出一个文本文档的窗 口,在那里面直接编写命令之后保存、双击执行即可。

那么我们先开始学习批量编写 AVS 吧
首先我们先来看一个实例:

1. 文件:AVS.bat 2. for /r "K:\Wait for 1st-Pass" %%a in (*.ssa) do > ".\%%~na.avs" ECHO LoadPlugin("D:\软件\MeGUI\AVSWriter\dll\VSFilter.DLL") 3. for /r "K:\Wait for 1st-Pass" %%a in (*.ssa) do >>".\%%~na.avs" ECHO DirectShowSource("K:\Wait for 1st-Pass\%%~na.mkv",23.976,convertFPS=True) 4. for /r "K:\Wait for 1st-Pass" %%a in (*.ssa) do >>".\%%~na.avs" ECHO ConvertToYV12() 5. for /r "K:\Wait for 1st-Pass" %%a in (*.ssa) do >>".\%%~na.avs" ECHO TextSub("D:\软件\MeGUI\AVSWriter\奋起作品.ssa") 6. for /r "K:\Wait for 1st-Pass" %%a in (*.ssa) do >>".\%%~na.avs" ECHO TextSub("K:\Wait for 1st-Pass\%%~na.ssa") 7. for /r "K:\Wait for 1st-Pass" %%a in (*.ssa) do >>".\%%~na.avs" ECHO LanczosResize(704,480) 8. for /r "K:\Wait for 1st-Pass" %%a in (*.ssa) do >>".\%%~na.avs" ECHO AddBorders(8,0,8,0) 9. pause 复制代码

在这个批处理中: for /r "K:\Wait for 1st-Pass" %%a in (*.ssa) do 为 For 命令, 作用是对一组文件中的每一个文件执行指定的命令。 这个命令是我 们实现批量生成 AVS、进行压制所必需的,这里只简单说明一下,对该命令的 详细用法感兴趣的童鞋可以自行百度

/r "K:\Wait for 1st-Pass" 表示我们要选取的文件所位于的文件夹

%%a 定义该变量为%a

(*.ssa) 所筛选的文件的扩展名均为 ssa

综合起来,该命令表示进入"K:\Wait for 1st-Pass"这个文件夹,列举出所有扩 展名为 ssa 的文件并将其定义为变量%a,之后执行 do 后的语句,若 do 后的语 句中包括该变量,则表示多次执行该语句,并且变量的值依次为各个所筛选出文 件的值

> ".\%%~na.avs"与>>".\%%~na.avs" 及之后的 ECHO XXXXX >与>>将输出信息重定向到指定的设备或文件。系统默认输出到显示器。 比如> ".\123.avs"就表示将信息输出到该目录下的 123.avs 这个文件中(如果文 件 123.avs 本来已经存在, 该命令将首先擦除 123.avs 中的所有信息, 然后写入 信息;若 123.avs 本来就不存在,该命令即可新建一个 123.avs 文件,并写入信 息。

> 与>>的区别在于: 123.avs 原本已存在, ".\123.avs"会先擦除 123.avs 若 则> 中的所有信息, 然后写入信息; 而>>".\123.avs"则是直接将信息写入到 123.avs 的末尾,不会先清空信息。当没有 123.avs 这个文件时,> 与>>没有区别。

"%%~na.avs"中的%%~na:这个即为之前所设定的变量,%%~na 表示去掉所 有目录路径及扩展名、仅仅保留文件名的%a 变量(即%a 变量原本是 K:\999\123.ssa,改为%~na 后就是 123)

"%%~na.avs"中的.avs:即输出的文件的扩展名,因为我们是批量编写 AVS, 自然就要生成一个 XXX.avs 文件了

ECHO ABC:输出信息 ABC,在这里我们所输出的信息都会由>或>>定位到指 定的文件中去,所以我们将 ABC 替换为我们所要写的 AVS 语句即可

将一整个命令连起来,即: for /r "K:\Wait for 1st-Pass" %%a in (*.ssa) do >>".\%%~na.avs" ECHO %%~na.mkv 意思是:进入"K:\Wait for 1st-Pass"这个目录,筛选其中的所有扩展名为 ssa 的文件(我们记为文件 A、 C)并定义为变量%a, B、 之后执行将信息 A.mkv、 B.mkv、 C.mkv 依次输出到 A.avs、B.avs、C.avs 中

关于这个命令,建议大家自己动手试试,只有这样才能更快理解其用法
下面提供模板
1. for /r "X:\XXX" %%a in (*.xxx) do > ".\%%~na.avs" ECHO 自定义 AVS 语句 2. for /r "X:\XXX" %%a in (*.xxx) do >>".\%%~na.avs" ECHO DirectShowSource("X:\XXX\%%~na.xxx",23.976,ConvertFPS=True) 3. for /r "X:\XXX" %%a in (*.xxx) do >>".\%%~na.avs" ECHO 自定义 AVS 语句 4. for /r "X:\XXX" %%a in (*.xxx) do >>".\%%~na.avs" ECHO TextSub("X:\XXX\%%~na.xxx") 5. for /r "X:\XXX" %%a in (*.xxx) do >>".\%%~na.avs" ECHO 自定义 AVS 语句 复制代码

保存为 AVS.bat,之后执行即可

接下来我们学习如何批量压制,同样要用到 for 命令
首先我们进入 MeGUI 的存放目录,找到 Tools 文件夹,进入之后找到 x264 文 件夹并打开,可以看到有一个 x264.exe 记下 x264.exe 的存放路径

之后打开 MeGUI 中 Video 区域的 Config

复制图中所示的文字,即: program --profile main --level 3 --crf 20 --b-adapt 2 --me umh --partitions p8x8,b8x8,i4x4,p4x4 --no-8x8dct --psy-rd 0.40:0 --no-dct-decimate --no-fast-pskip --sar 40:33 --b-pyramid none --output "output" "input"

其中: program 在这里表示 x264,写批处理时应去掉此项 "output"表示输出的文件,扩展名建议为 264,比如"A:\C\123.264" "input"表示输入的文件,这里应该是 AVS 文件,比如"A:\C\123.avs" 中间的内容为压制参数

npass 的编码参数略微有点不同(命令行批量调用时需手动进行各个 pass): program --profile main --level 3 --pass 1 --bitrate 700 --stats ".stats" --b-adapt 2 --me umh --partitions p8x8,b8x8,i4x4,p4x4 --no-8x8dct --psy-rd 0.40:0 --no-dct-decimate --no-fast-pskip --sar 40:33 --b-pyramid none --output NUL "input"

".stats":表示输出的 stats 文件,因为 napss 时会先输出统计数据,即.stats, 这里的修改方法与其他位置相似,改为你要输出的文件名(最好与 AVS、输出的 264 文件的文件名相同),后缀为.stats,比如:"A:\C\123.stats"

若想批量调用,则: (这里假设 x264.exe 位于 A:\B\x264.exe,AVS 文件位于 A:\C 文件夹下,请自 行修改路径) 新建一个文本文档,输入以下命令:
1. for /r "A:\C" %%a in (*.avs) do "A:\B\x264.exe" --profile main --level 3 --crf 20 --b-adapt 2 --me umh --partitions p8x8,b8x8,i4x4,p4x4 --no-8x8dct --psy-rd 0.40:0 --no-dct-decimate --no-fast-pskip --sar 40:33 --b-pyramid none --output " A:\C\%%~na.264" " A:\C\%%~na.avs" 2>"A:\C\%%~na.txt" 复制代码

保存之后将该文本文档的扩展名从.txt 改为.bat 即可

大家不难发现,for /r "A:\C" %%a in (*.avs) do "A:\B\x264.exe"后面所跟着的 即为 x264 的参数,这个参数就是我们刚刚从 MeGUI 中复制出来的 区别在于 MeGUI 中的参数输入输出的文件(及统计文件.stats)都被 In/Output 所替代,我们这里则是确实的文件名及路径

命令结尾的 2>"A:\C\%%~na.txt"表示输出同名的日志文件到 A:\C\这个文件夹 中,日志文件中记录了包括码率在内的诸多信息

模板如下
1. for /r "X:\XX" %%a in (*.avs) do "X:\XXX\x264.exe" 参数 2>"X:\XX\%%~na.txt" 2. pause 复制代码

参数中的".stats"用"存放路径\%%~na.stats"代替;"output"用"存放路径 \%%~na.264"代替;"input"用"AVS 所在路径\%%~na.avs"代替

即:若我们把生成的文件和 AVS 文件均存放在 F:\123 文件夹中,则: ".stats"变为" F:\123\%%~na.stats";"output"变为" F:\123\%%~na.264"; "input"变为" F:\123\%%~na.avs"代替

另外补充一点: 命令行手动 npass 时,pass1 可以使用 CRF,将"--pass 1 --bitrate XXX"改为 "--pass 1 --crf XX"即可

之后使用这个命令生成 pass2 的命令脚本(类似于批量生成 AVS 脚本)

1. for /r "X:\XX" %%a in (*.avs) do > ".\2nd-PASS.bat" ECHO @echo on 2. for /r "X:\XX" %%a in (*.avs) do >> ".\2nd-PASS.bat" ECHO "X:\XXX\x264.exe" 参数 ^2^>"X:\XX\%%~na.pass2.txt" 3. pause 复制代码

最后将 pass2 时参数中--bitrate 后的数字改为 pass 1 编码完之后批处理界面 输出的数字即可 [即最后一句中的 XXXX.XX kb/s,输入时只输数字(整数部分)不输 kb/s,若选择 了输出日志文件(即末尾的 2>XXX),则批处理界面上不会有任何显示,所有信 息都保存在所指定的日志文件里] [当然,这个值也可以自行设置]


更多相关标签: