当前位置:文档之家› AVS使用

AVS使用

AVS使用
AVS使用

第一节 AviSynth 简介

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

过程, 其间没有临时文件或中介文件产生)

AviSynth 是由Ben Rudiak-Gould 首创的一种非常有用的工具,能够提供各种

方式来处理影像文件。最独特的就是AviSynth 并不是一个独立的影像处理程序,而是在影像文件和影像处理软件之间担任“中间人”的角色。

AviSynth 的基本工作原理是这样的:

首先由使用者建立一个包含特定命令的文本,称之为“脚本”(后缀为avs),这

些命令指定要运行处理的影像文件和滤镜;然后运行影像应用程序,比如VD 或ND,

打开脚本。此时AviSynth 就开始工作了,打开脚本中指定的影像文件,运行特定的滤镜,并把输出结果提供给影像应用程序。但影像应用程序并不了解AviSynth 在后台所做的处理,而认为是直接打开了一个“被处理过”的影像文件。

第二节 AVS 语法及基本应用技巧——写给新手

既然要编写脚本,就要知道怎么写。在本节中,我们结合实例来了解一下AVS

脚本的基本语法。只有懂得了写法,才能更好的运用。当然,不少人会觉得本节都是

废话——那么恭喜你,你已经是老手了,你可以直接跳到下一节。

AVS 脚本的语法非常类似于C 语言的语法,但比C 要简单得多。如果你有一定

的C 语言(或以C 为基础的脚本语言,如PHP)的编写经验,那么你会发现AVS 竟然

是如此的简单——你甚至可以跳过本节直接进行下节的内容。比如,笔者有过将近一

年的PHP 编程经验,当接触到AVS 的时候,几乎没有花费任何力气就上手了。

跟往常一样,先了解几个概念。

函数——函数的英文名字叫function,这个词在英文中还有“功能”意思,没错!AVS中绝大部分的功能都是通过各种各样的函数来实现的。至于“函数”的确切定义,高一《数学(上册)》中写得很明白,笔者就不废话了。AVS 中的函数按调用方式

分为两类,一种是内置函数,一种是外挂函数。内置函数已经放置在AviSynth 软件内部,可以在脚本中直接调用;外挂函数不包含于AviSynth 中,需要在脚本中额外加载相应的DLL 文件或其他AVS 脚本函数才能调用。AVS 包含的众多内置函数我们将会专

门抽出一节来介绍。

外置函数可以在网上下载得到。正是因为这点,AVS 被赋予了几乎无限的扩展性,我们可以通过在网上找到各种函数来实现五花八门的功能。忘记说了,有些人喜欢管“函数”叫做“滤镜(filter)”或“插件(plugin)”,实际上这么叫也是正确的,

就连AVS 的众多官方文档都称之为滤镜、插件。但是就笔者个人来说,更愿意叫“函数”,因为这些“滤镜”的使用方式是函数的f(x)的形式。

参数——既然有函数,就要说参数。如果说函数是实现某样功能用的,那么参数

就是告

诉函数通过什么方式实现、实现到什么程度等等的信息。上面说的f(x)的调用形式,f 是函数名称,x 就是参数。有的函数一个参数就够了,有的函数却要很多参数,四个、五个、十多个。比如Telecide 这个函数如果把所有的参数加起来一共有十四个之多。好在不是所有的

参数都是必要的。有些参数可以写也可以不写。如果不写,函数就会自动使用其内部的默认值。但是,如果必写的参数不写,那么函数就无法启动。

变量——变量可以简单的理解成某个对象的名字(实际上要复杂一些^^;;)。比如,我们规定“本文作者=大虾”,那么当我们提到“本文作者”的时候,我们的第一反应就是那个叫“大虾”的家伙,HeiHei。

好了,下面我们借个一段极其简单的范例来了解一下AVS 的语法:

#plugin

LoadPlugin("E:gkAviSynthPluginsDGDecode.dll")

#source

mpeg2source("F:dvdrip-tempsoultaker.d2v")

#crop

crop(4,4,712,476)

#resize

LanczosResize(640,352)

上面的例子中,“#”后面跟着的句子是被“注释”掉的。注释是什么意思呢?就是说, AviSynth 读到这句话的时候,一看到这句话前面有“#”,就会54(无视)它,继续读到下已行。编写脚本写注释是一个好习惯,尤其是极其复杂的脚本。这种情况AVS 脚本大概不会遇到,但是当编写PHP 的时候,成千上万行的代码如果没有注释……那无论是试图阅读代码的人还是作者本人,都会头晕脑胀。

紧接着下面,“LoadPlugin”,这是一个函数的名字,后面的括号“()”中的内容就是参数。LoadPlugin 函数的功能是载入插件,后面括号中的参数便是告诉函数,要载入“E:gkAviSynthPluginsDGDecode.dll”这个插件。

Mpeg2source 是包含于上面提到的“DGDecode.dll”中的外挂函数,也就是说,如果不加载DGDecode.dll 这个文件的话,mpeg2source 就无法使用。

Crop 是AviSynth 的内置函数。这里涉及到了多参数函数。这个函数有四个参数,每个参数之间用“,”隔开(注意是英文逗号,不是中文逗号)。

函数的写法多种多样,像LanczosResize 函数,只有两个参数,所以我们写“640,352” 即可。但是像前文提到的Telecide 这样复杂的函数,我们需要将参数的名字也写进去。

比如:

Telecide(order=1,guide=1,post=2,vthresh=25,show=true)

其中,order、guide、post 等等的,就是参数名称,参数名称和参数值之间用“=”连接

还有一点要注意,数值型(比如1、25 之类的)/真假型(true 或者false)

的参数,不需要用双引号(英文双引号)引起来。但是,字符型的参数,必须要用双

引号引起来。

例如:

mpeg2source("F:dvdrip-tempsoultaker.d2v",idct=7)

这个例子很明白,"F:dvdrip-tempsoultaker.d2v"是字符型的变量值,要加双引号;7 是数字型的参数,不用加双引号。

下面介绍一些小花招,让我们的处理更加轻松。

AVS 技巧1:使用变量

当我们在一段AVS 之中需要打开多段片源、需要分别处理的时候,就要用到变量。请看下面的例子:

Clip1=avisource(“d:1.avi”)

Clip2=avisource(“d:2.avi”)

Clip3=clip1+clip2

Return(clip3)

在这个例子中,clip1、clip2、clip3 都是变量,现在你也能够理解变量的概念

了吧。

很明显,我们在clip3 中将前两个片源合并在了一起,然后用return 函数输出clip3,我们在视频编缉软件中最终看到的结果是:播放1.avi,1.avi 放完后,紧接

着放2.avi。

当然,这里只是举例子,其实合并没这么简单的,因为两段片源的fps、分辨率、颜色模式都要完全相同。至于怎么让他们“完全相同”,将会在后面的章节中讲到。

这里只是要大家了解变量是什么东西。

AVS 技巧2:“.”的妙用

看下面的AVS 脚本:

v1=avisource("C:1.avi").ConvertToYUY2()

v2=avisource("C:2.avi").ConvertToYUY2()

……

这样写等价于:

v1=avisource("C:1.avi").ConvertToYUY2()

v1= ConvertToYUY2(v1)

v2=avisource("C:2.avi").ConvertToYUY2()

v2= ConvertToYUY2(v2)

是不是省了很多事?赫赫~在编写复杂的脚本的时候尤其好用~(至于ConvertToYUY2是什么东西……我们后文再讲)

AVS 技巧3:分段处理

就算是同一影片在不同的段落中也会表现出来不同的特色。有时候我们需要对一

些片源进行特殊处理,这就用到了截取。

还是先看例子:

Source=avisource(“c:clip.avi”)

Clip1=trim(source,0,1999)

Clip2=trim(source,2000,3000)

……

这样,我们就用trim 函数分别截取了影片的0~1999(包括1999)号帧和

2000~3000 帧。

下面就能针对两段影片分别进行处理了。

有一点请注意:0 号帧也算一帧,0 号帧其实是影片的第一帧,1 号帧是第2 帧,依此类推……我们截取到1999 号帧,事实上截取了2000 帧!自然,2000 号帧

是影片的第2001 帧。

AVS 的基础语法以及一些小技巧就讲到这里了,更多的应用技巧还希望大家自己

去探索。这一章对已经掌握AVS 的人来说可能是废话,但是对于从来没接触过AVS 得

初心者,却是需要重点掌握的。俗话说,工欲善其事,必先利其器。要写好AVS 脚本,必须要打好基础才行。

第三节 AVS 常用内置滤镜介绍

一、加载插件

1.LoadPlugin() 加载插件

如:

LoadPlugin("VSFilter.dll") 加载字幕插件

LoadPlugin("mpeg2dec3.dll") 加载DVD的mpeg2编码器插件

LoadPlugin("mpasource.dll") 加载mp3插件

请下载以上提到的滤镜!并解压制到plugin目录里(当然目录可以自己选定),如果avs文件和滤镜不再同一个目录下,记得要把加载滤镜的路径名写全了。有些滤

镜或者脚本是avisynth核心的滤镜或脚本,也就是avisynth本身提供的功能,这些

就不需要加载,其它的都需要加载。你也可以用SetWorkingDir设定插件文件的工作

路径。

2. SetWorkingDir() 指定插件路径

SetWorkingDir("d:GORDIA~1") # 设定AVS 脚本调用dll 插件文件的工作

路径。

这样设置好后,就可以在下面直接写调用语句了,不需要再一个一个的写

滤镜的路径了,但前提是.dll的滤镜文件已经复制到设置的文件夹下了。

例:

SetWorkingDir("D:AviSynth 2.5plugins") #设置滤镜的目录

LoadPlugin("VSFilter.dll") #调用字幕滤镜插件

二、源媒体读取

1.DirectShowSource() 万能调用

如:DirectShowSource("e:vobss.VOB")

DirectShowSource()在高版本avisnyth中显得更万能些,常用的媒体格式,如avi、mpge1/dat、mpge2/vob/bin都可以加载,另外可以不用分离视频和音频,而

直接压缩!想要直接压制vob请使用高版本的avisynth,如目前的2.54。如果遇到打

不开的媒体格式你大都可以试试看DirectShowSource。

2.AVISource() avi文件调用

如:AVISource(e:avi1.avi,false)

用于导入AVI格式的影片,需要安装相应的Codec才能导入。这个对于DVDRIP压制者来说可能更常用些.false表示禁止音频!

3.mpeg2source() 用于解码DVD的mpeg2格式的视频

例:mpeg2source("XXX.d2v")

4.WAVSource("e:vobss.wav") 读取wave音频

5.AC3SOUECE("e:vobss.ac3") 读取ac3音频

6.MPASOURCE("e:vobss.MP3") 读取mp3音频

注:WAVSOURCE和AVISOURCE是属于核心脚本,无须读取插件,但

AC3SOURCE和MPASOURCE需要读取AC3SOURCE和MPASOURCE插件。DirectShowSource

的读取需要安装各种音频和视频的解码器。

7.convertfps=true

这个要特别说明一下,convertfps=true语句的作用是防止转换可变桢率

的RMVB和WMV时出现影音不同步。rmvb/wmv都是是浮动帧率,如果你指定帧率反而会不同步,所以不要指定fps这个数值。载入行要这么写:directshowsource(“文件

路径全名”,convertfps=true)。

三、调整大小

1.LanczosResize()

缩放滤镜:LanczosResize是BicubicResize的替代者,提供更精准、更

锐利的画质。在日本普遍使用LanczosResize,欧美大多使用BicubicResize。本来是

日本人开发的第三方滤镜,自AviSynth 2.05版本开始吸收为内置滤镜。

例:LanczosResize(640,480) #把分辨率改变为640*480

2.SimpleResize() 外置滤镜

放大缩小:由trbarry编写的,由于对SSE进行了优化,所以速度快,效

果好。替代了AviSynth中的BilinearResize。和LanczosResize的米切尔双立方体算法不同,这个是单纯的双线性算法。LanczosResize的画质更锐利和真实,适合普通电影;而SimpleResize的画质较柔和,适合动画。

例:LoadPlugin("SimpleResize.dll")

SimpleResize(640,480) #作用与LanczosResize和BicubicResize

是一样的。

3. Crop()

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

例:Crop(8,0,704,480) 左右各切去8像素

vob文件画面大小一般720×480。16:9宽银幕的都带了很大的黑边,

需要裁减掉。也是avs用于vob压制的关键因素之一。裁减黑边和缩放画面是vob文

件压制中很重要的因素,一般连用。对于本身就无黑边的文件直接用LanczosResize()

16:9画面的有2种情况,请记住这几个数值,在rmvb压制中直接套用即可!

DVD变形宽银幕:640×352,608×336

电影宽银幕:640×272

如要将电影宽银幕的画面比列调整到640×272,avs里可以这么写:

Crop(8,90,704,300)

LanczosResize(640,272)

如要将DVD变形宽银幕的画面比列调整到608×336,avs里可以这么写:

Crop(8,64,704,352)

LanczosResize(608,336)

无黑边的画面的直接用:LanczosResize(512,384) 缩小同时画面强制到标准4:3

四、加黑边

AddBorders()

加边:给影像加黑边。参数是整数,顺序是左、上、右、下。

例:AddBorders(0,64,0,64) 就是给图像上下各加64像素的黑边

有的文章中讲这个滤镜似乎并不常用,但是我在做硬字幕的影片中常用这个滤镜把字幕加到黑边处,在欣赏影片的同时不至于失去影片画面的完整性。

五、亮度滤镜

亮度滤镜是使用avs压制vob-rmvb vcd-rmvb的又一关键因素。画面太暗的rmvb是失败之作。下面介绍2个:

1.Levels()

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

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

例2:Levels(0,1.5,255,0,255) 我感觉数值在1.3-2之间比较合适,一般1.5比较合适

2.Tweak()

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

色度:-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。

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

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

个调节在0-30之间,以15-20为宜。

个人感觉level()比较好,主要调背景为主,而vob文件主要是背景暗。注

意Tweak的其他调节可能和颜色控制环境有关,如YUY2,因此其它的最好不要再改动。

六、编辑滤镜

1.FadeIn ()淡入和 FadeOut()淡出

淡入和淡出:提供淡入和淡出功能,尤其是淡出功能,可以使影片结束地更

自然。参数为整数,表示需要编辑的帧数。

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

2.Trim()

截取:可以截取某段影片。参数为整数,表示需要编辑的开始帧和结束帧。

例:Trim(240,480) #截取240~480帧这一片断

七、声音滤镜

1.AudioDub()

影音合并:可以把影像和声音合并在一起。

AudioDub(video, audio)

下面是一个简单的实例:

Video=AVISOURCE(“xxx.avi”,FALSE,“YUY2”)

Audio=WAVSOURCE(“xxx.wav”)

AudioDub(Video,Audio) 把test.avi和test.wav合并

合成常用于real格式的压制,制作rmvb的时候就需要把视频和音频合成后

交给real压缩软件,而制作avi则不需要合成视音频。这主要是因为real格式要求

视音频都必须用real压缩,而avi则可以使用多种音频格式,一般是单独压缩视频,

然后再用其他软件合成视频音频。

2.GetLeftChannel() 和 GetRightChannel()

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

例:stereo=WavSource("test.wav")

return GetLeftChannel(stereo)

返回test.wav的左声道

3.DelayAudio()

声音延迟:由于从VOB里分离的AC3通常有延迟,所以用Azid转码得到的WAV也有延迟,在用AudioDub合并时就需要加上这个延迟。

例:写法①Wa vSource("test.wav").DelayAuido(0.5) #把test.wav延

迟半秒。

写法②DelayAudio(wavsource("XXX.WAV"),-30)30的单位是毫秒,经典的解决音画同步问题。

4.ResampleAudio() 音频重新采样

例:WAVSOURCE("xxx.wav").ResampleAudio(48000) #音频重新采样,

采样率48000

5.AmplifydB() 左右声道的放大减小

AmplifydB(wavsource("xxx.wav"),3,3)#左右声道放大3DB 6.Mergechannels() 组合左声道、右声道

例:Left=wavSource("C:1.wav").getleftchannel

Right=wavsource("C:2.wav").getrightchannel

mergechannels(Left,Right)

八、字幕滤镜

1.VobSub()

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

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

例:LoadPlugin("VobSub.dll")

VobSub("test")

也可以这样VobSub("e:vob test.idx") 加载影片字幕

2.TextSub()

SSA和ASS字幕:这个也是VobSub自带的,可以内嵌特效字幕。

例:LoadPlugin("TextSub.vdf")

TextSub("h:avsjrvs.ssa") 加载水印文本

例2:LoadPlugin("VSFilter.dll")

TextSub("F:DVDjs60js601.srt") 加载srt字幕

需要调用字幕滤镜LoadPlugin("VSFilter.dll")

九、色彩模式的转换

有些压缩软件不支持某些色彩模式,例如默认情况下Helix不能在YV12环境下工作,需要将DVD的YV12转为YUY2

video=ConvertToYUY2(video)

当然如果你装了Xvid,Helix也是可以在YV12下工作的。

有如下的转换:

ConvertToRGB32()

ConvertToRGB24()

ConvertToRGB()

ConvertToYUY2()

ConvertToYV12()

简单例子:

AVISOURCE(“xxx.avi”)

ConvertToYUY2()

等价于AVISOURCE(“xxx.avi”,“YUY2”)或者AVISOURCE

(“xxx.avi”).ConvertToYUY2()其他的也类似。

十、截图

没有想到用avs来截图吧,只要用wmp6.4或mpc6468播放一下写好的avs 文件,截图就产生了。

directshowsource("C:1.rmvb",fps=23.976).ConvertToRGB24

trim(0,19)

ImageWriter("C:",0,0,"jpg")

这里我们假设的是要截取的rmvb为C:的1.rmvb,要截取的frame(幅)从第1到20共20幅(trim是以0为第一幅) ,保存路径为C:,格式为jpg(支持bmp, dds,jpg/jpe/jpeg, pal, pcx格式)

连续截图

例:Avisource("C:test,avi",false).ConvertToRGB24

trim(0,19)

ImageWriter("C:",0,0,"jpg")

截取特定的frame

例:Avisource("C:test,avi",false).ConvertToRGB24

trim(1920,1920)

ImageWriter("C:",0,0,"jpg")

十一、常见的外置滤镜

AviSynth最强大之处就是有数目繁多、功能强大的外置(或称“第三方”)滤镜;同时还可以调用VD以及AviUtl的滤镜;甚至还有特别开发的接口,可以让TMPGEnc和AviUtl读取AVS。和内置滤镜不同,外置滤镜需要先调用声明,再可以使用。

(1)源文件滤镜

① MPEG2Dec

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

例:LoadPlugin("MPEG2Dec.dll")

MPEG2Source("test.d2v")

② MPEG2Dec2

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

例:LoadPlugin("MPEG2Dec2.dll")

MPEG2Source("test.d2v")

③ MPEG2Dec3

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

例:LoadPlugin("MPEG2Dec3.dll")

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

(2)交错滤镜

Decomb

IVTC和Deinterlace滤镜:由Donald A.Graft编写,新增加的专门处理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("Decomb.dll")

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

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

LoadPlugin("Decomb.dll")

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

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

LoadPlugin("Decomb.dll")

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

Decimate(Cycle=25) # PAL

(3)处理滤镜

① ColorYUY2

颜色补偿:Kiraru2002编写的滤镜。由于经过编码,得到的结果和DVD相比较,颜色有所改变,所以要对颜色进行补偿。

例:LoadPlugin("ColorYUY2.dll")

ColorYUY2(0,10,0,10,0,0,0,0,0)

② ChangeFPS()

改变影片帧率,iphone一般来说支持最大30fps。

例:ChangeFPS(23.976)

#改变影片帧率有几种数值 12、15、20、23.976、24、25、29.97、30这几种,

一般来说不改变也行。

③ undot()

消除噪点,可以使用一个或多个,可以连在一起用,自己看效果体会。

无参数,直接加上就行了。undot滤镜是进行象素及细小噪点降噪,一般用来去

除细小的、肉眼不容易察觉的噪点,所以具体效果上并不明显。

例:加在其它滤镜后,使用多次。

LoadPlugin("UnDot.dll")

DirectShowSource("test.avi")

UnDot()

LanczosResize(480,272)

UnDot()

或者:

UnDot().UnDot().UnDot().UnDot()

具体用暴风预览效果。

④ FluxSmooth()

柔化兼有降噪功能,比UnDot()作用要强些.

例:LoadPlugin("fluxsmooth.dll")

fluxsmooth(5,7)

一般用这个默认(5,7)

⑤ K enKunNR()

KenkunNR是WarpSharp自带的降躁插件,具体参数KenKunNR(threshold=1 to 3),数值越大,强度越大。

例:LoadPlugin("WarpSharp.dll")

KenKunNR(threshold=1)

⑥ deen()

降噪锐化功能. 用后画面就会比较干净,但细节都被抹杀. 视情况而用

例:LoadPlugin("deen.dll")

#deen("c2d",2,3,3) 较轻

#deen("a3d",3,3,1,3) 较轻

#deen("c2d",2,6,6) 中等

#deen("a3d",3,6,1,6) 中等

#deen("c2d",2,10,12) 强力

#deen("a3d",3,10,1,12) 强力

⑦ SpatialSoften()

空间轴柔化滤镜。基本参数3个,如SpatialSoften (4,8,8)第一个指柔化程度,数值不要太大,2-5之间,后2个是亮度域值和色彩域值,均为整数型数值,需要测

试调节.

⑧ TemporalSoften()

时间轴柔化滤镜。

例:Temporalsoften(2,3,3,mode=2,scenechange=6)

#一般用这个参数就行了

⑨ Convolution3d()

3D柔化滤镜.参数一般动画用animeHQ,电影用movieHQ.

例: LoadPlugin("Convolution3d.dll")

#转电影

Convolution3d("movieHQ")

#转动画

#Convolution3d("animeHQ")

⑩ sharpen()

锐化滤镜:数值越大, 锐化效果越强.

例:sharpen(0.2) 一般取0.2~0.3

⑾WarpSharp()

锐化滤镜: 主要改动depth,bump这两个数值

越下面的线条越细

例:LoadPlugin("WarpSharp.dll")

#WarpSharp(depth=30,blur=2,bump=40,cubic=-0.6)

#WarpSharp(depth=40,blur=2,bump=60,cubic=-0.6)

#WarpSharp(depth=60,blur=2,bump=96,cubic=-0.6) #线条比上细,全屏的时候,明显感觉出锯齿

⑿mergechroma(blur(1.3))

(4)模糊滤镜.

柔化滤镜可以参考一些自动生成的模板,如

# 1) little noise

#Temporalsoften(2,3,3,mode=2,scenechange=6)

#mergechroma(blur(1.3))#可以换成MergeLuma(blur(1.0))

#FluxSmooth(5,7)

#

# 2) medium noise

#Temporalsoften(3,5,5,mode=2,scenechange=10)

#Convolution3d("moviehq")

#FluxSmooth(7,7)

#

# 3) heavy noise

#Temporalsoften(4,8,8,mode=2,scenechange=10)

#Convolution3d("movielq")

#FluxSmooth(10,15)

可以使用其中的一套,使用具有处理效果的滤镜会增加压片的时间.片源不好就按需选用些.总之能尽量少用就少用,或者干脆不用.

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

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

可以结合MergeChroma 或者MergeLuma来使用,如

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

十二、合成

1.

LoadPlugin("VSFilter.dll")

LoadPlugin("mpasource.dll")

video=AVISource("c:\1.avi",false).TextSub("c:\logo.ssa").VobSub("c:\1. idx").Lanczosresize(512,384) #定义了avi源、字幕、水印和画面大小

audio=mpasource("c:\1.mp3") #音频

AudioDub(video, audio)

为简便起见,以avi文件为例说明语法,但此例不推荐用,直接用压缩软件+ffdshow设置即可。原始avs加载了至少3个额外的滤镜,已略去!

该方法可以用于双语DVDRIP的压制,使用双语处理的软件提取自己要的声道即可,而不要再合并成avi了!

DTS音轨格式的可以用这个avs法压制

先根据中高级教程里的方法将DTS音频转换成wave格式,如放在e:\avi\目录

avs可以这么写:

LoadPlugin("VSFilter.dll")

video=AVISource("c:\1.avi",false).TextSub("h:\avs\jrvs.ssa").VobSub("e

:\avi\t1.idx")

audio=WAVSource("e:\avi\t1.wav")

AudioDub(video, audio)

如此可以不用再合并那么费事了!

2.

LoadPlugin("VSFilter.dll")

b=directshowSource("e:\avs\cd1.avi").TextSub("e:\BBSLogo\logo.ssa").Vo bSub("e:\avs\cd1.idx").Lanczosresize(608,320)

c=directshowsource("e:\avs\cd2.avi").VobSub("e:\avs\cd2.idx").Lanczosr esize(608,320)

final=b+c

return final

这个语法很好,直接将多CD的压制成一个rmvb,可以在一定程度上解决单CD

码率过度错位。如分别1pass压制CD1和CD2可能会由于码率错位太大而使文件增大,但如果2个一起压制,则可能由于码率补偿,平均码率错位反而不大,而使文件大小

减小。

请注意,这里自己可以将水印放在CD1上,而CD2不会显示(说明什么?呵呵!)

一般DTS的都要2CD以上,有时影片长度也不长,所以DTS的电影可以这么写

avs压制

video=AviSource("e:\cd1.avi",false).Vobsub("e:\cd1.idx").TextSub("c:\l ogo.ssa")+AviSource("e:\cd2.avi",false).VobSub("e:\cd2.idx")

audio=wavSource("e:\cd1.wav")+wavSource("e:\cd2.wav")

AudioDub(video, audio)

3.双语的vcd分成单语来做

LoadPlugin("VSFilter.dll")

video=DirectShowSource("F:\mpge\*.dat").Levels(0,1.7,255,0,255).Lanczo sResize(480,360)

return GetChannel(video,2)

1. left channel

2. right channel ,一般是国语

据说这里的*.dat表示成批压制!

如果要求控制帧率,那么有句改成这个

video=DirectShowSource("F:\mpge\*.dat",fps=25)

4.双语rmvb的制作

a,双语DVDRIP压制成双语的rmvb

先用AVIMux_GUI来处理音频。右键点击提示另存为mp3即可

对于喜欢压制rmvb而门外与DVDRIP压制的朋友建议使用AVIMux_GUI来处理音频,更显轻松合理。

avs语法如下:

LoadPlugin("VSFilter.dll")

video=AVISource("c:\1.avi",false).TextSub("c:\logo.ssa").VobSub("c:\1. idx")

R=MPASOURCE("e:\R.MP3")

L=MPASOURCE("e:\L.MP3")

stereo = MergeChannels(R,L)

return AudioDub(video, stereo)

5.双语VCD-rmvb的压制

avs语法如下

LoadPlugin("VSFilter.dll")

video=DirectShowSource("F:\mpge\*.dat").Levels(0,1.7,255,0,255).Lanczo sResize(480,360)

stereo=GetChannel(video,1,2)

return AudioDub(video,stereo)

注:不过双语VCD-rmvb可以直接使用压缩软件进行制作,声音码率使用44k以

上的立体声即可。我这里是想加大点亮度,那么同时就放大、水印一起来好了,呵呵!

以上都是avi,都可以自动关联ffdshow,所以亮度可以在ffdshow里设置!但

请同时去掉ffdshow的字幕和avisynth功能

下面集中给2个用avs法压制vob-rmvb的avs代码

先按照常规教程里介绍的方法将vob文件拷贝到硬盘上,然后在记事本里写上如

下语句,保存为后缀名为avs的文件即可

然后可以用mediaplayer播放这个avs(想一想,是怎么个效果。呵呵,avs不

是联系源文件和应用程序的桥梁吗,播放avs就相当于在播放带字幕和水印的影视了)

1.无黑边者

LoadPlugin("VSFilter.dll")

DirectShowSource("e:\vob\ts.VOB")

相关主题
相关文档 最新文档