找回密码
 立即注册

QQ登录

只需一步,快速开始

教程经验总索引TVMW5/小日本5 索引【视频转换】小日本4/TE4XP 索引【视频转换】TAW4 / TDA3 索引【DVD打包软件】
Nero 索引DVD-Lab 索引【DVD打包软件】编解码器 索引 【必读】固顶帖011号
查看: 9213|回复: 4

[资料] 什么是AVS?——AVS(AviSynth)基础知识教程

[复制链接]

9333

威望

818

金钱

1万

贡献

管理员

自由的灵魂

积分
100458
主题
5590
回帖
26310
注册时间
2003-4-10
最后登录
2024-11-21
发表于 2008-10-5 01:27:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 IsaacZ 于 2011-1-9 23:08 编辑

作者:ciey  

IsaacZ注:本篇文章主要帮助网友了解AVS的基本概念,后面的滤镜介绍内容有些枯燥,看不懂的话不看也罢,很多是用不到的。
                                                   
何为AVS?

(请先安装AviSynth)(IsaacZ注:完美解码自带此程序,通过完美解码设置可以开启或关闭)

AVS是AviSynth的简称。简单来说它是一个合成平台!它并不是一个独立的影像处理程序,而是在影像文件和影像处理软件之间担任“中间人”的角色。先来简单了解下它的工作过程:

新建个文本文件,然后将后缀改为.avs(文件名可任意,但后缀必须是.avs)如:01.txt->01.avs。AVS文件中包含的是一行行的特定命令的文本,称之为"脚本"。举个最简单的例子:将下面的一行代码保存在新建的AVS文件中。这里假设D盘根目录中有一段AVI视频。文件名自己校对。

  1. Directshowsource(“d:\test.avi”)
复制代码


然后把这个AVS文件拖到暴风影音里放放看。当然如果AVS仅限这点功能,我们还不如直接用暴风打开源视频。下面再举个最常用的滤镜---加载字幕。

  1. Loadplugin(“d:\avsplugin\vsfilter.dll”)
  2. Directshowsource(“d:\test.avi”)
  3. Textsub(“d:\test.srt”)
复制代码


脚本说明:
Loadplugin()是加载插件的意思,括号里面的是插件的路径。Textsub滤镜没有被AVS内置,所以需要加载vsfilter.dll这个文件字幕文件。请先下载滤镜插件包,里面有vsfilter.dll。
Directshowsource()是读取源视频文件,括号里面的是影片的路径。更详细的关于这个滤镜的介绍请往下看。
Textsub()这个就是为视频加载上字幕的语句。

这样再用暴风打开这个AVS看看是否已经为影片增加字幕了。
目前论坛的水印也是一个字幕文件。你可以像挂字幕一样把它挂上去。

  1. Textsub(“d:\VPLOGO.ssa”)
复制代码


以上只是个开头,AVS可谓是功能强大。往下再看可以再学到一些常用的滤镜,它们的作用很多,比如缩小画面尺寸,增加亮度,使画面锐利或柔化,去噪点等等。但是想在之前声明的是,无论怎样去增加滤镜,片源的质量才是关键所在。VCD的片源再怎么处理也不可能达到DVD的效果,而DVD片源,再怎么胡乱压制也不会差到哪里。我们在利用的avs滤镜更应该持慎重态度,需要反复看使用滤镜后的效果是否满意。当然有些片子在使用滤镜后画面效果有提升,每个片子的情况都不一样,这就需要我们自己去调整使用了。所以滤镜的使用非常的灵活,需要具体情况具体分析。


先了解几个概念:

函数(参数表)——函数的英文名字叫function,这个词在英文中还有“功能”意思, AVS中绝大部分的功能都是通过各种各样的函数来实现的。 “函数”也被称为“滤镜(filter)”或“插件(plugin)”,其实都是一个意思,一般称为滤镜。AVS中的函数按调用方式分为两类,一种是内置函数,一种是外挂函数。内置函数已经放置在AviSynth软件内部,可以在脚本中直接调用;外挂函数不包含于AviSynth中,需要在脚本中额外加载相应的DLL文件或其他AVS脚本函数才能调用。

外置函数可以在网上下载得到。正是因为这点,AVS被赋予了几乎无限的扩展性,我们可以通过在网上找到各种函数来实现五花八门的功能。有个前提,说明档(大多都是英文)要自己看得懂。
内置的例:
  1. Directshowsource()  #加载片源
复制代码

外挂的例:
  1. Loadplugin(“d:\avsplugin\vsfilter.dll”)   #挂上字幕滤镜所需DLL文件
  2. Textsub(“d:\test.srt”)    #挂上字幕
复制代码

参数——既然有函数,就要说参数。如果说函数是实现某样功能用的,那么参数就是告诉函数通过什么方式实现、实现到什么程度等等的信息。上面说的f(x)的调用形式,f是函数名称,x就是参数。有的函数一个参数就够了,有的函数却要很多参数,四个、五个、十多个。比如Telecide这个函数如果把所有的参数加起来一共有十四个之多。好在不是所有的参数都是必要的。有些参数可以写也可以不写。如果不写,函数就会自动使用其内部的默认值。但是,如果必写的参数不写,那么函数就无法启动。[]中括号代表里面的参数可写可不写。
Directshowsource("filename"[,...][,...])
例:Directshowsource("d:\test.avi",false,fps=23.976)  #读取test.avi视频文件,false表示禁掉音频,fps表示改变帧率为23.976

变量——变量是个抽像的具体对象。可以理解为数学当中的x,y未知数,它们可以被赋值啊,运算啊什么的。这里虽很少用到数学,但变量常被用来代替文件,或用做运算。
例:
  1. video=avisource(“xxx.avi”,false,fps=23.976)   #video为变量,=为赋值功能
  2. audio=wavsource(“xxx.wav”)     #audio为变量
  3. AudioDub(video,audio)   #合成视频和音频
复制代码



注释:
一些播放器如暴风和大部分压缩软件如VDM都能直接打开AVS文件。它被直接识别为一个影像文件,而不是简单的一个文本文件。
AviSynth忽略任何以#开头直到这行末尾的内容。
忽略大小写:DirectShowSource 和directshowsource是一样的。
编写脚本时全部的字母符号,如() , . "都是在英文输入法状态下的。中文输入法和英文输入法的逗号是不一样的,不然会出错.



安装AVS

(IsaacZ注:完美解码自带此程序,可不必单独安装,通过完美解码设置可以开启或关闭)

                               
登录/注册后可看大图
附件: AviSynth_2.5.7.part1.rar (2007-2-7 12:40, 1.91 M)

                               
登录/注册后可看大图
附件: AviSynth_2.5.7.part2.rar (2007-2-7 12:40, 1.33 M)

GordianKnot.RipPack035_2.exe       简称:GK
(IsaacZ注:点拨论坛有单帖介绍:[下载] Divx工具GordianKnot RipPack

GK安装后里面有一个插件集合。如安装在C盘,那么插件在C:\Program Files\GordianKnot\AviSynthPlugins自己找下。里面包含了大部分常用滤镜插件。

下载并安装avisynth,并将常用滤镜插件dll文件拷贝到安装目录的plugin目录里。或者单独设置一个文件夹。请看下文。

如果缺少影片的相应解码器的话,AVS也可能用不起来,更不用说压片了。建议安装暴风之类的播放器,其里面集成了大多数的影片解码器,够用了。(IsaacZ注:现在的暴风已经不能再作为解码包使用,推荐用完美解码再者为了检查AVS编写是否正确,及看处理后的效果,类似暴风的播放器必不可少。

建议将GordianKnot也一并安装。滤镜插件包来自GK。

一些第三方的滤镜也可以从网上下载得到。
AVS官方网http://www.avisynth.org/warpenterprises/



常用基本滤镜介绍:

注:以下不详细说明每个滤镜是否为第三方。第三方的会在滤镜语句前加上Loadplugin(“***.dll”)。“[...]”表示可省略。碰到不会用的滤镜可以查看avisynth的说明文档(查看下avisynth安装目录)(IsaacZ注:安装目录里面是英文版,点此查看中文版帮助说明),第三方的插件也有自带的说明.

一.加载插件

LoadPlugin ("filename")  #加载.dll插件
例:
  1. LoadPlugin("C:\Program Files\Ringz Studio\Storm Codec\Codecs\VSFilter.dll ") #加载字幕滤镜
复制代码

还有两个,只做简单介绍:
LoadVirtualDubPlugin ("filename")  #加载VD的滤镜,.vdf文件
LoadVFAPIPlugin("filename") #加载TMPGEnc滤镜(IVTC处理)

如果用到插件比较多的话,这样Load确实比较烦。其实你可以将常用的.Dll插件复制到avisynth安装目录的plugin目录里,这样滤镜就可以不用增加LoadPlugin()语句。
例如:最常用的字幕滤镜。将VSFilter.dll复制到plugin目录里,这样就可以不用LoadPlugin()语句了,直接就可以使用VobSub()语句了。方便很多!
还可以使用以下命令指定插件目录:

  1. SetWorkingDir("d:\avsplugin")   #设定AVS 脚本调用dll 插件文件的工作路径
  2. LoadPlugin("VSFilter.dll")
  3. LoadPlugin("undot.dll")
复制代码

再需要调用很多插件时这样做会更方便些。


二.读取源文件滤镜


1.视频滤镜Directshowsource("filename"[,...][,...])
例:
  1. DirectShowSource ("D:\test.avi")  #直接打开test.avi源文件
  2. DirectShowSource("D:\test.rmvb",fps=23.976, convertfps=true)  #直接打开rmvb格式,对于rm/rmvb和asf格式的,需要定义帧率才能读取。如里面的fps=23.976,convertfps=true语句的作用是防止转换可变桢率的RMVB和WMV时出现影音不同步。这两个语句望大家在转片时都加上。
复制代码

DirectShowSource()在avisnyth中很强大,常用的媒体格式,如avi、mpge1/dat、mpge2/vob (DVD) ,bin (SVCD)都可以加载.只要有解码器的支持,很多格式都可以使用这个滤镜加载。

AVISource("filename"[,...])
加载AVI文件,对于常见的DVDRIP格式来说可能更常用些.,DVDRIP都是DivX或XviD编码的,需要安装相应的解码器(Codec)。
例:
  1. AVISource("D:\test.avi")
复制代码
  1. AVISource("d:\test.avi",false)#false表示禁止音频
复制代码


MPEG2Source("filename")
由dividee编写的读取DVD2AVI产生的d2v工程文件的滤镜,同时内建去除Noise的TemporalSmoother。
例:
  1. LoadPlugin("MPEG2Dec3.dll")  #此为第三方滤镜需要先调用声明,再使用
  2. MPEG2Source("D:\test.d2v")  #读取d2v工程文件
复制代码




2.音频滤镜
WAVSource("filename")  #读取WAV格式的音频。


LoadPlugin("AC3SOURCE.dll")
AC3Source("filename")
  #读取AC3的音频。


LoadPlugin("MPASOURCE.dll")
MPASource("filename")
  #读取MPG的音频。


DelayAudio()
声音延迟
  1. DelayAudio(WAVSource("test.wav") ,100) #把test.wav延迟100毫秒
复制代码

GetLeftChannel() 和 GetRightChannel()
声道获取:把立体声的左右声道单独返回,适用于左右声道不同语种片子。
例:
  1. stereo=WavSource("test.wav")
  2. return GetChannel(stereo)   # 返回test.wav的左声道
复制代码


AmplifydB()
  1. AmplifydB(WavSource("test.wav"),3,3)   #左右声道放大3DB
复制代码


AudioDub()
影音合成:把影像和声音合并在一起。
例:
  1. Video=AVISource("test.avi")
  2. Audio=WAVSource("test.wav")
  3. AudioDub(Video,Audio)   #把test.avi和test.wav合并
复制代码




三.编辑滤镜


ConvertToXXX()
颜色环境转换 (某些滤镜需要特定的颜色环境才能运行)
例:
  1. ConvertToRGB()      #改变成RGB颜色环境
  2. ConvertToYUY2()     # 改变成YUV颜色环境
  3. ConvertToYV12()      #加载RMVB时用到,因为X264编码器不支持某些RMVB的色彩环境
复制代码
  1. ChangeFPS(23.976)    #改变影片帧率,推荐用这个数值
复制代码



AddBorders(左,上,右,下)
给影像加黑边:参数是整数,顺序是左、上、右、下。尤其适用于对2.35:1的影像加黑边,为了不使图像缩放后变形,而且可以把字幕加在图象的下方黑边里。PSP的分辨率为480*272,为1.76:1的画面。接近常见的1.85:1的比例,所以可以不加黑边。但是对于2.35:1的宽影屏画面需要加上黑边。更详细的请参见画面比例问题的教程。
例:
  1. AddBorders(0,32,0,32)   # 上下各增加32象素的黑边。
复制代码

Crop(左切,上切,-右切,-下切)
切边:为了保持比例或切除黑边,参数是整数,顺序是左、上、-右、-下。   
例:
  1. Crop(16,8,-16,-8)  #16为起始数值,如果切不干净,再增加数值,一般加4的倍数
复制代码


LanczosResize(宽,高)
放大缩小滤镜:参数是整数,顺序是宽度、高度。
例:
  1. LanczosResize(480,272) #把分辨率改变为480*272.
复制代码

SimpleResize(宽,高)
放大缩小滤镜:LanczosResize的画质更锐利和真实,适合普通电影;而SimpleResize的画质较柔和,适合动画。
例:
  1. LoadPlugin("SimpleResize.dll")
  2. SimpleResize(480,272)
复制代码


字幕滤镜

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



VobSub("filename")
图片字幕:此种字幕有2个文件test.idx(索引)和test.sub(字幕内容)。两个文件需在同一个目录下。
例:
  1. LoadPlugin("VSFilter.dll")
  2. VobSub("e:\sub\test") #加载sub影片字幕,可以不用后缀。
复制代码


TextSub("filename")
文本字幕:常见格式为srt, ssa和ass字幕, ssa和ass常被用来做压片小组的水印文件格式。
例:
  1. LoadPlugin("VSFilter.dll ")
  2. TextSub("D:\avs\vplogo.ssa")  #加载水印字幕
  3. TextSub("D:\movie\test.srt")  #加载影片字幕
复制代码

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

Trim(开始帧,结束帧)
截取:决定需要处理的部分。参数为整数,表示需要编辑的开始帧和结束帧。对抽样做Sample和影片分割比较有用。
例:
  1. trim(0,100)  #截取1-101frame(帧),trim是以0为第一帧的。
复制代码




四.处理滤镜

这一类滤镜再改善画面效果的同时,画质也在下降,请谨慎使用.当然如果片源质量不好,有必要使用以下滤镜来改善画面效果的.

1.亮度滤镜Levels()
层次:可以调节亮度、对比度和Gamma值,一般常用来调节亮度。
例:
  1. Levels(0,1.2,255,0,255)   #增加画面亮度
复制代码

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

Tweak()
调整:可以调节色度,饱和度,亮度,对比度。
例:
  1. 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。
一般将亮度(第三个参数)调节在10-20之间。注意Tweak的其他调节可能和颜色控制环境有关,如YUY2,因此其它的最好不要再改动。

ColorYUY2()
颜色补偿:由于经过编码,得到的结果和DVD相比较,颜色有所改变,所以要对颜色进行补偿。
例:
  1. LoadPlugin("ColorYUY2.dll")
  2. ColorYUY2(0,10,0,10,0,0,0,0,0)
复制代码



2.降噪滤镜

undot()  #可以使用一个或多个
无参数,直接加上就行了。undot滤镜是进行象素及细小噪点降噪,一般用来去除细小的、肉眼不容易察觉的噪点,所以具体效果上并不明显。
例:加在其它滤镜后,使用多次。
  1. LoadPlugin("UnDot.dll")
  2. DirectShowSource("test.avi")
  3. UnDot()
  4. LanczosResize(480,272)
  5. UnDot()
复制代码

具体用暴风预览效果。


FluxSmooth()
柔化兼有降噪功能,比UnDot()作用要强些.
例:
  1. LoadPlugin("fluxsmooth.dll")
  2. fluxsmooth(5,7)
复制代码



KenKunNR()
KenkunNR是WarpSharp自带的降躁插件,具体参数KenKunNR(threshold=1 to 3),数值越大,强度越大。
例:
  1. LoadPlugin("WarpSharp.dll")
  2. KenKunNR(threshold=1)
复制代码


deen()
降噪锐化功能. 用后画面就会比较干净,但细节都被抹杀. 视情况而用
例:
  1. LoadPlugin("deen.dll")
  2. #deen("c2d",2,3,3) 较轻
  3. #deen("a3d",3,3,1,3) 较轻
  4. #deen("c2d",2,6,6) 中等
  5. #deen("a3d",3,6,1,6) 中等
  6. #deen("c2d",2,10,12) 强力
  7. #deen("a3d",3,10,1,12) 强力
复制代码


3. 柔化、锐化、模糊类滤镜

SpatialSoften()
空间轴柔化滤镜。基本参数3个,如:
  1. SpatialSoften (4,8,8)
复制代码

第一个指柔化程度,数值不要太大,2-5之间,后2个是亮度域值和色彩域值,均为整数型数值,需要测试调节.

TemporalSoften()
时间轴柔化滤镜。
  1. Temporalsoften(2,3,3,mode=2,scenechange=6)  #一般用这个参数就行了
复制代码


Convolution3d()
3D柔化滤镜.参数一般动画用animeHQ,电影用movieHQ.
例:
  1. LoadPlugin("Convolution3d.dll")
  2. Convolution3d("movieHQ")    #转电影
  3. #Convolution3d("animeHQ")    #转动画
复制代码




sharpen()
锐化滤镜:数值越大, 锐化效果越强.
例:
  1. sharpen(0.2)
复制代码


WarpSharp()
锐化滤镜: 主要改动depth,bump这两个数值
越下面的线条越细

                               
登录/注册后可看大图
warpsharp_YV12_dll.zip (31.38 KB)

                               
登录/注册后可看大图
warpsharp_YV12_dll.zip (31.38 KB)

例:
  1. LoadPlugin("WarpSharp.dll")
  2. #WarpSharp(depth=30,blur=2,bump=40,cubic=-0.6)  
  3. #WarpSharp(depth=40,blur=2,bump=60,cubic=-0.6)
  4. #WarpSharp(depth=60,blur=2,bump=96,cubic=-0.6) #线条比上细,全屏的时候,明显感觉出锯齿
复制代码


mergechroma(blur(1.3))
模糊滤镜.


柔化滤镜可以参考一些自动生成的模板,如
  1. # 1) little noise
  2. #Temporalsoften(2,3,3,mode=2,scenechange=6)
  3. #mergechroma(blur(1.3))#可以换成MergeLuma(blur(1.0))
  4. #FluxSmooth(5,7)
  5. #
  6. # 2) medium noise
  7. #Temporalsoften(3,5,5,mode=2,scenechange=10)
  8. #Convolution3d("moviehq")
  9. #FluxSmooth(7,7)
  10. #
  11. # 3) heavy noise
  12. #Temporalsoften(4,8,8,mode=2,scenechange=10)
  13. #Convolution3d("movielq")
  14. #FluxSmooth(10,15)
复制代码

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


五. IVTC场处理/交错滤镜
还没深入研究,故暂时不放上了~


本文难免有不足的地方,望高手指正!继续补充完善中......

相关参考:[教程] AVS(AviSynth)工作原理浅析、工作流程图解


来源:http://bbs.verypsp.com/forum.php?mod=viewthread&tid=52010
IsaacZ的发言中如果提到任何字母缩写或专有名词,在本论坛中一般都能搜索到。点此立即搜索点拨论坛。如有搜索不到的,请尝试搜索百度百科,或者跟帖提问。
发帖前请注意看置顶帖。如果你发现自己的问题没有得到回答,说明你的问题提错了地方或者提问前未先阅读版规。

8

威望

3560

金钱

31

贡献

中级会员

少校

积分
3747
主题
19
回帖
188
注册时间
2009-11-6
最后登录
2024-2-21
发表于 2010-6-12 14:54:26 | 显示全部楼层
看着挺复杂的,只会简单的几个。一看E文就头痛。
这儿不错。
回复

使用道具 举报

0

威望

78

金钱

0

贡献

新手上路

积分
79
主题
1
回帖
5
注册时间
2010-6-17
最后登录
2018-11-20
发表于 2010-8-15 13:15:01 | 显示全部楼层
呵呵 。原来是这样啊。谢谢楼主。
回复

使用道具 举报

0

威望

343

金钱

4

贡献

初级会员

0000000000000000

积分
364
主题
6
回帖
53
注册时间
2010-9-25
最后登录
2024-9-26
QQ
发表于 2011-1-5 22:48:39 | 显示全部楼层
太好了,这是介绍avs最详细、最耐心的教程了。多谢管理员。
回复

使用道具 举报

6

威望

1175

金钱

51

贡献

初级会员

积分
1429
主题
25
回帖
217
注册时间
2009-5-14
最后登录
2021-7-12
发表于 2011-1-10 00:23:21 | 显示全部楼层
Levels滤镜的Gamma值我一般取1.3以下,如果取值到1.5有部分画面会有失真现象。

评分

参与人数 1贡献 +1 收起 理由
IsaacZ + 1 谢谢提供经验!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|点拨论坛 |网站地图

GMT+8, 2024-11-23 19:35 , Processed in 0.147205 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表