AVS+MeGUI与MediaCoder制作MP4教程.docx
《AVS+MeGUI与MediaCoder制作MP4教程.docx》由会员分享,可在线阅读,更多相关《AVS+MeGUI与MediaCoder制作MP4教程.docx(39页珍藏版)》请在冰豆网上搜索。
AVS+MeGUI与MediaCoder制作MP4教程
[转帖]运用AVS+MeGUI与MediaCoder制作MP4-AVC教程
第一部分:
运用AVS+MeGUI制作MP4-AVC
所需软件及编码器:
1.MeGUI,官方下载地址:
http:
//x264.nl
2.AviSynth,官方下载地址:
http:
//www.avisynth.org
3.Microsoft.NETFramework2.0,官方下载地址:
4.neroAacEnc.exe,官方下载地址:
(注意:
解压NeroDigitalAudio.zip后我们只使用neroAacEnc.exe!
)
简介:
MeGUI是一款功能强大的x264编码器的GUI界面软件,该软件的运行和视屏转换需要安装Microsoft.NETFramework2.0和AviSynth。
MeGUI有着较为完整的x264参数选项加上AviSynth的强大功能MeGUI成为制作高质量MP4-AVC的利器之一,但是该软件目前只有英文版且不支持视屏文件的直接转换(需要将视屏文件挂进AVS滤镜中)使得很多人望而却步。
本教程就AVS的简单编写与MeGUI中x264的参数解释与选择进行简单的说明。
(注意:
选项名后面的括号内是对应X264的参数及解释!
)
AVS脚本的编写
由于MeGUI不支持视屏文件的直接加载所以要借助AVS滤镜来加挂视屏文件,同时AVS脚本的编写直接影响到MP4-AVC,所以AVS脚本的编写尤为重要,而这一部分又是比较令人头疼的,所以这一步如果进行下不去,那么后面的工作全部免谈!
首先建立一个文本文档,打开文档进行代码编写,最后保存该文档为XXXX.avs;
先看一个例子,打开文档编写如下代码:
LoadPlugin("X:
\XXXXXX\XXXXX\VSFilter.dll")
DirectShowSource("X:
\XXXX\XXXX.XXX",29.97,ConvertFPS=True)
ConvertToYV12()
LanczosResize(480,272)
VobSub("X:
\XXXXXX\XXXXX.sub")或者TextSub("X:
\XXXXXX\XXXXXX.srt")
LoadPlugin()是AVS滤镜中加载插件的代码,而VSFilter.dll是字幕插件,其中的X:
\XXXXX\XXXXX\是所需插件的具体路径;
DirectShowSource()是AVS脚本中的滤镜代码,一般情况下使用该滤镜来加挂视屏文件;X:
\XXXXX\XXXXX\是视屏的路径,XXXX.XXX为视屏的文件名及扩展名(视屏的格式)
29.97是指转换后的MP4-AVC的帧速,大家可以根据源视屏的帧率来设定;
(注意:
不要超过源文件的帧速,那样做没有意义!
但是可以小于源文件帧速!
)
ConvertFPS=True是保证MP4-AVC与原视屏的帧率保持一致的代码防止转换后MP4-AVC声音与画面不同步;
ConvertToYV12()是转换视屏文件色彩模式的代码;
(注意:
这条代码必须按例子中的写法加上!
)
LanczosResize()是控制转换后MP4-AVC的分辨率大小的代码,其中宽与高之间用逗号隔开,且宽和高必须为8的倍数,因为PSP的屏幕分辩率为480x272所以我们设置的分辨率为480,272。
如果要转480P(720x480)的MP4-AVC则编写如下代码:
LanczosResize(704,480)
AddBorders(8,0,8,0)
因为PSP播放720x480的MP4-AVC时,会左右各裁去8个像素,然后Resize成480x272输出,这样我们会有左右各8个像素的画面看不到,所以我们先将画面先Resize成704x480,然后再在画面左右各加8像素的黑边变为720x480,这样PSP再Resize成480x272播放时只会裁去那8像素的黑边从而使得播放时画面没有损失;
VobSub()为sub字幕文件的加载代码,X:
\XXXXX\XXXXX\为字幕所在目录的路径XXXX.sub为视屏所对应的sub字幕文件;
TextSub()为srt字幕文件的加载代码,X:
\XXXXX\XXXXX\为字幕所在目录的路径XXXX.srt为视屏所对应的srt字幕文件;
(注意:
所有代码的编写必须用英文输入法!
编写完后将所编写的AVS文件拖到播放器中播放一下,如果能正常播放就说明编写没有问题,有问题的会在播放器中显示具体哪出了问题,这个大家到实际中自己摸索即可!
)
MeGUI的使用及x264参数设置
运行MeGUI,可以看到MeGUI的主界面
第一次运行MeGUI需要更新,点击Options中的Update
将方框中全部打上√点击Update即可。
更新后点击Options中的Settings,再点击ProgramPaths选择Audio在neroAacEnc选项中选择硬盘中的neroAacEnc.exe(因为我们转换视屏的声音选择AAC格式的,而neroAacEnc所转换出的音质优于其他编码器)
点击Save保存,在主界面中的Videoencoding和Audio中的Encodersettings选项中分别选择X264和NeroAAC在Fileformat和Extension分别选择MP4和MP4-AAC
视屏编码设置
在Videoencoding区域中点击Config进行视屏编码参数设置
在Main选项栏中的参数设置及含义如下:
1.General选项区
Mode:
是选择压缩方式。
可选项:
ABR:
--bitrate:
平均码率;
Const.Quantizer:
--qp:
固定量化模式并设置使用的量化值;
Const.Quality:
--crf:
质量模式,量化值动态可变,此时转换后的视屏文件大小不能确定;
Bitrate:
在ABR模式下是画面的平均码率,数值越大换面越清晰,文件越大。
建议:
22-28
(注意:
当Mode中选择为Const.Quantizer或Const.Quality时输入值为0-51,数值越小画质越好,文件越大,0为无损压缩!
)
2.Misc选项区
EnablePSNRcalculati:
--no-psnr:
关闭PSNR计算。
这是个画面质量的校验机制,关掉不会影响画质,还会缩短压缩时间。
默认值:
不勾选(关闭)
EnableSSIMcalculati:
--no-ssim:
关闭SSIM计算。
这是个画面质量的校验机制,关掉不会影响画质,还会缩短压缩时间。
默认值:
不勾选(关闭)
Threads:
--threads:
编码线程,使用多线程技术。
多核CPU可以选择自己的CPU核数加快编码速度。
默认值:
0(自动)
3.Deblocking选项区
EnableDeblocking:
开启环路滤波,可以除马赛克(当不勾选该项时该参数显示为:
--nf)。
默认值:
勾选(打开)
(注意:
选上该选项后,在解码时也要打开deblocking,否则会出现色块、马赛克现象!
)
DeblockingStrength:
--deblock0:
0:
设置环路滤波的AlphaC的参数,范围-6-6。
默认值:
0
DeblockingThreshold:
--deblock0:
0:
设置环路滤波的Beta的参数,范围-6-6。
默认值:
0
(注意:
DeblockingStrength对应--deblock0:
0中前面的数值;DeblockingThreshold对应--deblock0:
0中后面的数值!
)
4.AVCProfiles选项区
选项中有BaselineProfile、MainProfile、HighProfile
建议:
选择MainProfile
(注意:
压缩后的MP4-AVC要想在PSP上播放必须选择MainProfile!
,否则PSP见无法播放!
)
5.AVCLevel选项区
--Level:
表示编、解码等级
(注意:
无论是转480x272的MP4-AVC还是720x480的MP4-avc,Level最好选择Level3.0,防止PSP无法播放!
)
在RCandME选项栏
1.RateControl选项区
VBVBufferSize:
--vbv-bufsize:
码率控制缓冲区的大小,单位kbit。
默认值:
0
VBVMaximumBitrate:
--vbv-maxrate:
平均码率模式下,最大瞬时码率。
默认值:
0
(注意:
该参数的取值和在ABR编码模式下的Bitrate(码率)保持一致!
)
VBVInitialBuffer:
--vbv-init:
码率控制缓冲区数据保留的最大数据量与冲区大小之比,范围0-1.0。
默认值:
0.9
BitrateVariance:
--ratetol:
在编码模式为平均码率模式下,瞬时码率可以偏离的倍数,范围0.1-100.0。
默认值:
1.0
QuantizerCompression:
--qcomp:
线性量化控制,0.0为固定码率,1.0为固定量化值,只能用于二次压缩和基于质量的压缩模式。
默认值:
0.6
Temp.Blurofest.Framecomplexity:
--cplxblur:
相邻帧的平滑量化值的比例的最大值,范围0-99,只能用于二次压缩和基于质量的压缩模式。
默认值:
20
Temp.BlurofQuantafterCC:
--qblur:
对统计文件结果的平滑量化值的比例的最大值,范围0-99.9,只能用于二次压缩。
默认值:
0.5
2.Misc选项区
KeyframeInterval:
--keyint:
最大IDR帧间距。
一般来说压制动画时,可以增大该值。
默认值:
250
Min.GOPSize:
--min-keyint:
最小IDR帧间距。
一般来说压制动画时,可以减小该值。
默认值:
25
NoiseReduction:
--nr:
噪声去除,范围0-100000。
默认值:
0
Encodeinterlaced:
--interlaced:
启用纯交错模式。
用于隔行扫描的源。
默认值:
不勾选。
(注意:
在压制720x480(480P)分辨率的MP4-AVC时千万不能勾选该项!
)
3.M.E.选项区
ChromaM.E.:
进行色度的动态预测。
(当不勾选该项时,该参数显示为:
--no-chroma-me)。
默认值:
勾选
M.E.Range:
--merange:
当M.E.Algorithm选择Multihex或Exhaustive时的搜索半径,最大64。
默认值:
16
SceneChangeSensitivity:
--scenecut:
画面动态变化值,当超出此值时插入I帧。
默认值:
40
M.E.Algorithm:
--me:
对全像素块动态预测搜索的方式,可选项:
Diamond:
菱形搜索,搜索半径为1;
Hexagon:
正六边形搜索,搜索半径为2;
Multihex:
可变半径六边形搜索;
Exhaustive:
全面搜索;
SATDExhaustive:
用Hadamard方式进行全面搜索,比Exhaustive更慢。
默认值:
Hexagon。
建议:
选择Multihex
(注意:
建议设为Multihex。
Exhaustive和SATDExhaustive实在太慢了,而且质量提高极不明显。
除非你不怕浪费时间且追求高质量画面的骨灰级玩家并且很相信自己机器配置那么就选SATDExhaustive吧!
)
SubpixelRefinement:
--subme:
动态预测和分区方式,可选项1-9
1-QpelSAD:
用全像素块进行动态搜索,对每个块再用快速模式进行四分之一像素块精确搜索
2-QpelSATD:
用半像素块进行动态搜索,对每个块再用快速模式进行四分之一像素块精确搜索
3-HpelonMBthenQP:
用半像素块进行动态搜索,对每个块再用质量模式进行四分之一像素块精确搜索
4-AlwaysQPel:
用快速模式进行四分之一像素块精确搜索
5-Qpel&BidirME:
用质量模式进行四分之一像素块精确搜索
6-RDonI/Pframes:
进行I、P帧像素块的速率失真最优化(rdo)
7-RDonallframes:
进行全部帧像素块的速率失真最优化
8-RDrefinementonI/Pframes:
进行I、P帧运动矢量及块内部的速率失真最优化
9-RDrefinementonallframes:
进行全部帧运动矢量及块内部的速率失真最优化
默认值:
5
建议:
选择7
(注意:
该选项选择的数值越大画面质量越好速度越慢!
)
4.QuantOptions选项区
CABAC:
内容自适应二进制算术编码,高效率的熵编码。
关闭该参数时会严重降低画面质量,但是能提高编码速度。
(当不勾选该项时该参数显示为:
--no-cabac)。
默认值:
勾选
NumberofReferenceFrame:
--ref:
最大参考帧数,范围0-16。
该参数对质量和压缩比都有提高。
默认值:
1
建议:
大于1
(注意:
数值越高速度越慢!
)
MixedReferenceframes:
--mixed-refs:
可以在一帧内使用不同参考帧。
该参数能提高画面质量,但对速度影响较大。
默认值:
不勾选
建议:
勾选
Trellis:
--trellis:
Trellis量化,对每个8x8的块寻找合适的量化值,需要勾选CABAC才能使用该参数。
可选项:
0-None:
关闭;
1-FinalMB:
只在最后编码时使用;
2-Always:
一直使用。
默认值:
0
建议:
开启该参数
(注意:
该参数能提画面高质量,配置较低的电脑且对画面质量没有要求的用户可以选择1-FinalMB,配置较高的电脑且对画面质量有要求的用户可以选择2-Always;画面质量:
1-FinalMB比2-Always差!
编码速度:
1-FinalMB比2–Always快!
)
Psy-RDStrength:
--psy-rd0:
0:
在rdo中使用Psy算法(一种心理视觉模型)。
默认值:
1.0
建议:
0
(注意:
这个参数对应--psy-rd0:
0中前面的数值!
当SubpixelRefinement参数选择大于等于6时才能使用该这个参数。
该参数会影响到ChromaQpOffset的参数。
当设置该数设置为1.0时ChromaQpOffset会自动设置为-2;当该参数设置为0时ChromaQpOffset会自动设置为0!
)
Psy-TrellisStrength:
--psy-rd0:
0:
Psy-Trellis量化,可提高细节,但会大幅提高码率。
默认值:
0.0
(注意:
该参数需要SubpixelRefinement大于等于6且Trellis大于等于1才能使用。
这个参数对应--psy-rd0:
0中后面的数值!
)
NoDctDecimation:
--no-dct-decimate:
关闭P帧联合编码。
勾选上该项后可以增加细节,但也会增大体积。
默认值:
不勾选
建议:
勾选
NoFastP-Skip:
--no-fast-pskip:
关闭P帧快速跳过的检测。
默认值:
不勾选
建议:
勾选
在Advanced选项栏中的参数设置及含义如下:
1.Quantizers选项区
Min/Max/Delta:
Min:
--qpmin:
设置最小量化值,范围0-51;
默认值:
10
Max:
--qpmax:
设置最大量化值,范围0-51;
默认值:
51
Delta:
--qpstep:
设置相邻帧之间的量化值差,范围0-50。
默认值:
4
(注意:
该选项的三个空按从左到右分别对应Min、Max、Delta!
)
QuantizersRatio(I:
P/P:
B):
QuantizersRatioI:
P:
--ipratio:
I帧和P帧之间的量化系数;
默认值:
1.4
QuantizersRatioP:
B:
--pbratio:
P帧和B帧之间的量化系数。
默认值:
1.3
(注意:
该选项的两个空从左到右分别对应QuantizersRatioI:
P、QuantizersRatioP:
B!
)
Deadzones(Inter/Intra):
DeadzonesInter:
--deadzone-inter:
设置inter模式下,亮度死区量化值,范围0-32;
默认值:
21
DeadzonesIntra:
--deadzone-intra:
设置intra模式下,亮度死区量化值,范围0-32;
默认值:
11
(注意:
该选项的两个空从左到右分别对应DeadzonesInter、DeadzonesIntra!
)
ChromaQpOffset:
--chroma-qp-offset:
色度和亮度之间的量化差,范围-12-12。
默认值:
0
CreditsQuantizer:
演员表量化值。
默认值:
40
2.MacroblockOptions选项区
下拉菜单:
--partitions可选项:
ALL:
将能选则的动态块划分方法全部选中;
None:
不选择任何动态划分方法。
建议:
选择Custom后,如过你压缩的MP4-AVC的分辨率为480x272(AVCLevel为Level2.1)勾选P8x8、B8x8、I4x4、P4x4;如过你压缩的MP4-AVC的分辨率为720x480(AVCLevel为Level3.0)勾选P8x8、B8x8、I4x4。
请严格按照该建议修改MacroblockOptions选项区参数!
!
!
(注意:
当在下拉菜单中选择Custom(--partitionsp8x8,b8x8,i4x4,(p4x4))参数时,动态划分方法变为手动选择,此时,如果AVCLevel参数为Level2.1(MP4-AVC分辨率:
480x272)时可以勾选P8x8、B8x8、I4x4、P4x4;如果AVCLevel参数为Level3.0(MP4-AVC分辨率:
720x480(480P的MP4-AVC))时只能勾选P8x8、B8x8、I4x4,如果非要在此情况下勾选P4x4,那么只能设置B帧数为0(NumberofB-frames参数为0)!
)。
3.AdaptiveQuantizers选项区
Mode:
--aq-mode:
自适应量化模式,可以在1帧中不同宏块间重新分配量化值,能提高暗部细节,但会提高码率。
不能在固定量化模式(Const.Quantizer模式)中使用。
0:
关闭;1:
开启。
可选项:
Disabled:
关闭(0);
VarianceAQ(complexitymask):
开启
(1)。
默认值:
开启
Strength:
--aq-strength:
AQ强度,减小低细节宏块的量化值。
默认值:
1.0
4.B-Frames选项区
NumberofB-frames:
--bframes:
在I帧与P帧之间可插入B帧数量的最大值,范围0-16。
默认值:
0
建议:
大于1
(注意:
数值越高速度越慢!
)
AdaptiveB-Frames:
--b-adapt:
自适应B帧判定模式。
0:
关闭;1:
快速;2:
优化。
下可选项:
0-Off为:
关闭;
1-Fast为:
快速;
2-Optimal为:
优化。
默认值为:
1-Fast
建议:
2-Optimal
(注意:
当该选项选择为2时,NumberofB-frames参数设置较高时,编码速度会下降!
)。
B-Pyramid:
--b-pyramid:
允许B帧做参考帧。
建议:
不勾选
WeightedB-Prediction:
--weightb:
允许B帧加权预测,可以减少相邻B帧质量低的影响,对质量和压缩比都有提高,且对速度影响极少。
建议:
勾选
B-framemode:
--direct:
动态预测方式。
可选项:
None、Spatial、Temporal、Auto。
默认值:
Temporal
建议:
选择Auto
B-framebias:
--b-bias:
控制插入B帧判定,范围-100-100,越高越容易插入B帧。
默认值:
0
提示:
设置完成后可以点击Presets选项区的New保存自己的设置,下次转换MP4-AVC时,可以直接在MeGUI主界面的Videoencoding中的Encodersettings下拉菜单中选择已设置好的预设文件。
音频编码设置
在Audio选项区中,AudioInput音源输入选项,既可以将前面我们编写的AVS脚本拖入其中,也可以直接将要转换的视屏原文件拖入该选项。
推荐:
拖入AVS脚本
(注意:
如果想直接拖入视频文件,那么原文件必须为2声道立体声!
)
点击Audio选项区中的Config进行音频编码参数设置
在这里主要对NeroDigitalAACOptions选项区的参数进行介绍,其他区域采用默认参数即可。
AdaptiveBitrate@16kbit/s:
(ABR)平均比特率方式编码,在声音较为简单时按低于设置的码率编码,在声音较为复杂的情况下自动采用高于设置的码率进行编码,但是总体平均下来的码率就时你预设的码率。
在体积一定得情况下能够获得较好的音质。
“@”后面的数字为当前设置的码率(码率越大音质越好,在ConstantBitrate@16kbit/s下面的滑动条中调节)
ConstantBitrate@16kbit/s:
(CBR)固定编码率方式编码,有始到终按设定的码率对原音频文件进行编码。
VariableBitrate:
(VBR)动态编码率,以音源质量的百分比表示,范围0-1,数值越大音质越好。
在该参数下有专门的滑动条调节该参数。
建议:
选用VariableBitrate(Q=0.5)
(注意:
选用VariableBitrate转换的音频文件的大小不可预测!
)
AACProfile:
选用Automatic即可。
视频转换
将编写好的AVS文件拖入到AviSynthScript和AudioInput中后,点击右下角的AutoEncode
出现如下界面:
Container:
分装容器。
如XXXX.MKV就是使用的MKV作为容器,由于我们是转MP4-AVC所以选择MP4。
Splitting:
分割方式。
当转换后文件体积大于预设大小时,按预设大小进行分割。
(例如:
转换后的视频文件大小为1200MB时,如果该选项选择700MB,那么最后生成的视频文件被分为一个700MB和一个500MB两个文件。
)
建议:
选择Nosplitting
Nameofoutput:
转换后的文件名和存放位置。
剩余的选项默认即可。
最后点击Queue后在主界面选择Queue栏,出现如下界面:
点击Start开始转换,点击Stop停止转换。
使用Ctrl+M组合键可以最小化到任务栏。
Delete删除所选任务;Clear清除任务栏所有任务。
点击Options菜单栏中的Settings后再选择Extraconfig选项栏出现如下界面: