2024年1月3日发(作者:)

AVS相关参数的调用与设定

AviSynth是AVI SYNTHesizer的缩写(以下简称AVS),意思就是AVI和成器,是一个Frameserver。(Frameserver就是一个把影像文件从一个程序转换到另外一个程序的过程,

其间没有临时文件或中介文件产生)。

简单来说就是个合成平台。在媒体文件和应用程序之间担任"中间人"的角色。如对于压制pmp avc格式来说,源媒体文件是vob、d2v(DVD处理过程中的中间文件)、avi、DAT/mpge等,而应用程序是各种pmp的压缩软件如VDM、AVS_Converter和3gp_avc等,它们都支持avs的导入。avs脚本中指定要运行处理的影像文件和滤镜,然后运行影像应用程序,比如VDM,打开的是刚才编辑好的avs脚本,而不是源媒体文件。此时AviSynth就开始工作了,打开脚本中指定的影像文件,运行特定的滤镜,并把输出结果提供给影像应用程序。但影像应用程序并不了解AviSynth在后台所做的处理,而认为是直接打开了一个“被处理过”的影像文件。

因此使用AviSynth有5大优势:

1. YUV支持:内建滤镜可以在YUV环境下运行,第三方滤镜几乎也兼容YUV,所以比起VD、ND的内嵌滤镜必须在RGB环境下运行要快很多。省却了一个转换的过程,将来还可以支持YV。

2. 滤镜处理:内建许多影像处理滤镜,比如Resizing,Cropping等。还有大量的第三方强力滤镜,并可以调用VD以及AviUtl的第三方滤镜。

3. 突破2G限制:通过AviSynth打开影像文件就相当于应用程序直接打开,这样就可以使本身有2G限制的程序也能突破2G的限制。

4. 打开格式:AviSynth可以打开几乎所有影像文件,包括MPEG和QuickTime。所以当影像应用程序通过AviSynth打开这些文件时,会被认为是打开标准的AVI,这样就可以处理影像应用程序本身并不支持的格式。

5. 节省硬盘空间:AviSynth处理的影像文件在运行过程中直接导入应用程序,没有临时文件,所以节省硬盘空间。

首先安装avisynth,并将常用虑镜插件dll文件拷贝到安装目录的plugin目录里,如此有些滤镜不用增加LoadPlugin()语句。几个常用的辅助滤镜如:

IVTC/Deinterlace类:,

降噪、柔化类: ,,,等

缩放滤镜:

字幕滤镜:

插件可以到官方网站上下载/warpenterprises/

如何使用:

新建一个文本文件,并将其扩展名改成*.avs。就是一个AVS脚本了。

下面介绍些基本代码和常用滤镜。

说明

#表示禁止某句语法

.(点)表示连用,如此可以省略一些变量。当然有些滤镜,特别是组合套用的滤镜不能用点来

引出。在写语句时注意语句的大小写无所谓但必须用英文标点。

对于第三方滤镜需要用到LoadPlugin语句。

LoadPlugin ("filename") #加载.dll插件

例:

LoadPlugin("C:Program FilesRingz StudioStorm ")#加载字幕滤镜

还有两个,只做简单介绍:

LoadVirtualDubPlugin ("filename") #加载VD的滤镜,.vdf文件

LoadVFAPIPlugin("filename")#加载TMPGEnc滤镜(IVTC处理)

如果用到插件比较多的话,这样Load确实比较烦。其实你可以将常用的. Dll插件复制到avisynth安装目录的plugin目录里,这样滤镜就可以不用增加LoadPlugin()语句。

例如:最常用的字幕滤镜。将复制到plugin目录里,这样就可以不用LoadPlugin()语句了,直接就可以使用VobSub()语句了。方便很多!

AviSynth内建了数目繁多的滤镜,所以只能介绍一些最常见实用的一部分。

1、源文件滤镜

DirectShowSource ("D:")#直接打开源文件

DirectShowSource("D:", fps=24, convertfps=true)#直接打开rmvb格式,对于rm/rmvb和asf格式的,需要定义帧率才能读取。如里面的fps=24,convertfps=true语句的作用是防止转换可变桢率的RMVB和WMV时出现影音不同步。

DirectShowSource()在avisnyth中很强大,常用的媒体格式,如avi、mpge1/dat、mpge2/vob

(DVD) ,bin (SVCD)都可以加载.

AVISource()

加载AVI文件,对于DVDRIP压制者来说可能更常用些.,对于DivX或XviD,需要安装相应的Codec。

例:AVISource("D:")

AVISource("d:",false)#false表示禁止音频

WAVSource()

加载WAV文件

例:WAVSource("D:")

MPEG2Dec

由dividee编写的读取DVD2AVI产生的d2v工程文件的滤镜,同时内建去除Noise的TemporalSmoother。

例:LoadPlugin("")#此为第三方滤镜需要先调用声明,再使用

MPEG2Source("D:test.d2v")

MPEG2Dec2

trbarry在MPEG2Dec的基础上进行了改进,支持P4的SSE2指令集。用文本编辑工具打开d2v,把iDCT_Algorithm=?改成5就可以了。速度很快,效果也好,推荐P4 CPU的用户使用。

例:LoadPlugin("")

MPEG2Source("D:test.d2v")

MPEG2Dec3

在MPEG2Dec2的基础上再进行了改进,加入了Nic的图像后处理(PP),一定程度上可以减少Noise。好像除了P4的SSE2外,还加入了AMD的3D Now!优化,目前还在开发中,是个非常有前途的滤镜。推荐使用这个。

例:LoadPlugin("")

MPEG2Source("D:test.d2v",CPU=4) # CPU=4就是开启了PP模式

2. 处理滤镜

AddBorders(左,上,右,下)

给影像加黑边:尤其适用于对16:9的影像加字幕,希望不影响图像,把字幕加在图象的下方的情况。参数是整数,顺序是左、上、右、下。

例:AddBorders(0,32,0,32) # 上下各增加32象素的黑边。

PSP的分辨率为480*272,为16:9画面。

ConvertToXXX

颜色环境转换 (某些滤镜需要特定的颜色环境才能运行)

ConvertToRGB() #改变成RGB颜色环境

ConvertToYUY2() # 改变成YUV颜色环境

ConvertToYV12() #加载RMVB时用到,因为X264编码器不支持某些RMVB的色彩环境

Crop

切边:为了保持比例或切除黑边,参数是整数,顺序是左、上、-右、-下。

crop(左切,上切,-右切,-下切)

例:crop(16,8,-16,-8)#16为起始数值,如果切不干净,再增加数值,一般加4的倍数

LanczosResize

放大缩小滤镜,参数为:LanczosResize(宽,高)

例LanczosResize(480,272) #把分辨率改变为480*272.

Levels

层次:调节亮度、对比度和Gamma值。

例:Levels(0,1.2,255,0,255) # 调整Gamma,使画面变亮

改第二个,数值在1.2-1.7之间比较合适,一般1.5比较合适. vob文件一般会出现背景暗的问题,就需要增加点亮度。

Tweak

调整:可以调节色度,饱和度,亮度,对比度。

例:Tweak(0,1,20,1)

4个浮点数分别表示:调节色度,饱和度,亮度,对比度。

色度:-180.0~180.0,默认0.0。正数趋向红色,负数趋向绿色。

饱和度:0.0~10.0,默认1.0。0.0为黑白。

亮度:-255.0~255.0,默认0.0。

对比度:0.0~10.0,默认1.0。

一般将亮度调节在0 -30之间,以10-20为宜。

如果感觉片子偏红那么Tweak(-5,1.2,15,1)

如果感觉片子苍白,那么Tweak(5,1.4,10,1)

3. 字幕滤镜

字幕分为两种:文本字幕和图片字幕。文本字幕常见的有*.srt,*.ssa,*.ass

图片字幕常见的有(*.idx,*.sub)

VobSub

Sub字幕:VobSub不但是外挂字幕的好手,内嵌字幕也是一样的强。

将字幕的2个文件和放在同一个目录下就可以了。

例:LoadPlugin("")

VobSub("e:") #加载影片字幕

TextSub

SRT,SSA和ASS字幕,

例:LoadPlugin("D: ")

TextSub("D:") #加载水印字幕

TextSub("D:")#加载影片字幕

如果字幕和avs文件放在一个目录里,那么可以省去路径甚至是后缀名,如 VobSub("test")

注意,字幕应该加载整个avs语法序列的最后,特别是在裁减缩放滤镜的后面。

Trim

截取:决定需要处理的部分。参数为整数,表示需要编辑的开始帧和结束帧。对 抽样做Sample比较有用。

例:

Trim(100,0) # delete the first 100 frames, audio padded

# or trimmed to match the video length.

Trim(100, 0,false) # delete the first 100 frames of audio and video,

# the resulting stream lengths remain independant.

Trim(100,-100) # is the same as trim(100,199)

Trim(100,199,false) # audio will be trimmed if longer but not

# padded if shorter to frame 199

Trim(0,-1) # returns only the first frame

FadeIn 和 FadeOut

淡入和淡出:提供淡入和淡出功能,尤其是淡出功能,可以使影片结束地更自然 。参数为整数,表示需要编辑的帧数。

例:FadeOut(24) # 影片最后1秒淡出

4、声音滤镜

① AudioDub

影音合并:可以把影像和声音合并在一起。适用用用Helix直接做RMVB格式的

DVDrip。

例:Video = AVISource("")

Audio= WAVSource("")

AudioDub(Video,Audio) #把和合并

② GetLeftChannel 和 GetRightChannel

获取声道:把立体声的左右声道单独返回,适用于左右声道不同语种的WAV。

例:stereo=WavSource("")

return GetLeftChannel(stereo) # 返回的左声道

③DelayAudio

声音延迟:由于从VOB里分离的AC3通常有延迟,所以用Azid转码得到的WAV也有延

迟,在用AudioDub合并时就需要加上这个延迟。

例: WavSource("").DelayAuido(0.5) # 把延迟半秒

6,降噪滤镜

undot()

可以连在一起用,自己看效果体会

undot().undot().undot().undot().undot()

7.柔化滤镜

SpatialSoften / TemporalSoften 空间轴和时间轴柔化滤镜

FluxSmooth(5,7) 柔化滤镜

Convolution3d("moviehq") 3D优化滤镜

deen()

2者需要加载相应的滤镜插件

柔化滤镜具体参数参见那2篇

8,锐化、模糊滤镜

Sharpen(0.2,0)/Blur(0,1)

2个数值分别表示水平参数和垂直参数

一般Sharpen(0.2)表示Sharpen(0.2,0.2)

Blur(0,1)是模糊滤镜,设置了垂直参数可以消除些边缘刻痕

可以连续加载Blur(0,1).Blur(0,1)

可以结合MergeChroma / MergeLuma来使用,如

MergeLuma(Blur(0,1)Blur(0,1))

Blur(-1)就相当于锐化滤镜了

VCD-rmvb压制的介绍中还有个Warpsharp()锐化滤镜介绍

交错滤镜

Decomb

IVTC和Deinterlace滤镜:由Donald 编写,新增加的专门处理NTSC格

式动画的mode=2,要和Avisynth2.05以上版本使用,不然速度会慢一倍。

guide 0~2,默认0, NTSC用1,PAL用2,可以提高IVTC准确度。

gthresh 0~100,默认15,控制区分不同帧的程度。

post 默认true,用来处理IVTC遗漏的细节,使画面略微模糊。

threshold 0~255,默认15,控制post的程度。

dthreshold 0~255,默认9,控制threshold判定IVTC遗漏的程度。

blend 默认true,在交错画面用渲染来替代填充。

chroma 默认false,在交错画面的亮度色度调整。

cycle 2~25,默认5,每n帧删除1帧,NTSC选5,PAL选25。

mode 0~2,默认2。

mode=0 对cycle里最相近的帧不进行处理。

mode=1 对cycle里最相近的帧进行处理,用于处理混合帧速。

mode=2 在一个很长的范围里进行帧对比,可以正确处理动画里由8帧或12帧

复制为29.97帧的情况。

Threshold 默认0,控制mode=1时的处理重复帧的程度,Threshold默认100,

控制mode=2时的处理重复帧的程度。

Quality 0~3,默认2,采样和色度的质量,与速度成反比。

例:LoadPlugin("")

Telecide(Guide=1,Gthresh=50,Chroma=True,Quality=3,Post=false)

Decimate(cycle=5) # NTSC 3:2 PullDown

LoadPlugin("")

Telecide(Guide=1,Gthresh=50,Chroma=True,Quality=3,Post=false)

Decimate(Cycle=5,Mode=2) # NTSC Progressive和Interlaced混合

LoadPlugin("")

Telecide(Guide=2,Gthresh=50,Chroma=True,Quality=3,Post=false)

Decimate(Cycle=25) # PAL