AVS基本代码【转+整理】

1. LoadPlugin(),加载插件。
如:
LoadPlugin("VSFilter.dll") 加载字幕插件
LoadPlugin("mpeg2dec3.dll") 加载DVD的mpeg2编码器插件
LoadPlugin("mpasource.dll") 加载mp3插件

滤镜解压制到plugin目录里是最好的(这样可以不写加载滤镜这条语句了),如果avs文件和滤镜不再同一个目录下,记得要把加载滤镜的路径名写全 了。有些滤镜或者脚本是avisynth核心的滤镜或脚本,也就是avisynth本身提供的功能,这些就不需要加载,其它的都需要加载。你也可以用 SetWorkingDir设定插件文件的工作路径

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

2.源媒体读取
DirectShowSource("e:vobss.VOB")
DirectShowSource()在高版本avisnyth中显得更万能些,常用的媒体格式,如avi、mpge1/dat、 mpge2/vob/bin都可以加载,其实只要你用mpc能播出来的都可以加载,但是注意帧率问题,另外可以不用分离视频和音频,而直接压缩!现在通常用来处理一些mkv和mp4源转rmvb,其实avi我也经常是用它来加载。vob就不要用这个了,有更好的办法,但是不在本文讨论范围之内。

AVISource(e:avi1.avi,false)
这个对于DVDRIP压制者来说可能更常用些.false表示禁止音频!

mpeg2source("XXX.d2v")
这个用于解码DVD的mpeg2格式的视频,vob可以通过软件生成d2v,具体去查dvdrip的相关资料吧!

WAVSource("e:vobss.wav") 读取wave音频
AC3SOUECE("e:vobss.ac3") 读取ac3音频
MPASOURCE("e:vobss.MP3") 读取mp3音频
注:WAVSOURCE和AVISOURCE是属于核心脚本,无须读取插件,但AC3SOURCE和MPASOURCE需要读取AC3SOURCE和MPASOURCE插件。其实这些都很少用了,真需要的话用DirectShowSource就行了。

3. crop()、LanczosResize()裁黑边和调整大小
crop(a,b,c,d)a b c d都是整形数,a和b大于零,c和d小于零。也就是这样crop(0,6,-2,-4)这样是左裁0,上裁6,右裁2,下裁4。由于色彩空间原因通常都裁剪偶数单位。
LanczosResize(848,480)参数必须是整型偶数,通常最好是可以被16整除。

4.亮度滤镜

介绍2个
Levels(0,1.5,255,0,255)
改第二个,我感觉数值在1.3-2之间比较合适,一般1.5比较合适

Tweak(0,1,20,1)
4个浮点数分别表示:调节色度,饱和度,亮度,对比度。一般将第三个调节在0-30之间,以15-20为宜

个人感觉level()比较好,主要调背景为主,而vob文件主要是背景暗。注意Tweak的其他调节可能和颜色控制环境有关,如YUY2,因此其它的最好不要再改动

注:ffdshow目前的版本还是不能支持mpge2唉!否则可以利用它来调节亮度了

这里还有一个blur(0,1)是模糊化。

5.字幕滤镜
TextSub("h:avsjrvs.ssa") 加载水印文本
VobSub("e:vobss.idx") 加载影片字幕

6.其它虑镜介绍,在rmvb压制中不推荐使用,如部分朋友选用的
FluxSmooth(5,7) 柔化滤镜
Convolution3d("moviehq") 3D优化滤镜
2者需要加载相应的滤镜插件 ,具体去看滤镜的说明文档吧!

7.常用音频处理脚本:
ResampleAudio(44100)
DELAYAUDIO(XXX,30)
AmplifydB(wavsource(“XXX.WAV”),3,3)
例子:
DelayAudio(wavsource(”XXX.WAV“),-30)30的单位是毫秒,经典的解决音画同步问题;没有前面的参数也可以,系统会自动处理默认音频。
又如:
WAVSOURCE(“xxx.wav”).ResampleAudio(48000)
音频重新采样,采样率48
再如:
AmplifydB(wavsource(“xxx.wav”),3,3)
左右声道放大3DB

8.色彩模式的转换
有些压缩软件不支持某些色彩模式,例如默认情况下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()
其他的也类似

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

directshowsource("C:1.rmvb",fps=23.976).ConvertToRGB24
trim(0,19)
#这里说一下trim()这个函数是取一段视频,0,19就表示从开始到19帧,如果是19,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")

10.合成
AudioDub(video, audio)
合成常用于real格式的压制,制作rmvb的时候就需要把视频和音频合成后交给real压缩软件,而制作avi则不需要合成视音频。这主要是因为 real格式要求视音频都必须用real压缩,而avi则可以使用多种音频格式,一般是单独压缩视频,然后再用其他软件合成视频音频。
简单的例子
V=AVISOURCE(“xxx.avi”,FALSE,“YUY2”)
A=WAVSOURCE(“xxx.wav”)
AudioDub(V,A)
合成在rmvb压制方面的例子可以参考后面的rmvb压制部分

PS:一直想找一篇比较完备的avs基本介绍,一是留作备忘,二是留着给问我的人看,可惜这东西变化太快,有些可遇不可求的感觉于是先转一篇写得比较全的自己有时间的时候慢慢修订好了……

文章节选自这里