
第二讲,利用AVS加载字幕和一些转片常用的滤镜!
一、初识AVS
AviSynth是AVISYNTHesizer的缩写,意思就是AVI和成器,是一个Frameserver。(Frameserver就是一个把影像文件从一个程序转换到另外一个程序的过程,其间没有临时文件或中介文件产生)
AviSynth是由BenRudiak-Gould首创的一种非常有用的工具,能够提供各种方式来合并和滤镜处理影像文件。最独特的就是AviSynth并不是一个孤立的影像处理程序,而是在影像文件和应用程序之间担任“中间人”的角色。
因此使用AviSynth有5大优势:
1.YUV支持:内建滤镜可以在YUV环境下运行,第三方滤镜几乎也兼容YUV,所以比起VirtualDub、NanDub的内嵌滤镜必须在RGB环境下运行要快很多。省却了一个转换的过程,将来还可以支持YV。
2.滤镜处理:内建许多影像处理滤镜,比如Resizing,Cropping等。还有大量的第三方强力滤镜,并可以调用VirtualDub以及AviUtl的第三方滤镜。
3.突破2G限制:通过AviSynth打开影像文件就相当于应用程序直接打开,这样就可以使本身有2G限制的程序也能突破2G的限制。
4.打开格式:AviSynth可以打开几乎所有影像文件,包括MPEG和QuickTime。所以当影像应用程序通过AviSynth打开这些文件时,会被认为是打开标准的AVI,这样就可以处理影像应用程序本身并不支持的格式。
5.节省硬盘空间:AviSynth处理的影像文件在运行过程中直接导入应用程序,没有临时文件,所以节省硬盘空间。
AviSynth现在有3个版本,第一个是Ben Rudiak-Gould的首先编译的AviSynth v1.0b;在Ben Rudiak-Gould停止开发后,Edwin van Eggelen继续开发,最新的版本是AviSynth v1.0b6;在2002年7月第二次源码编写计划开始,目前最新的版本是AviSynth v2.5.7,新的v2.6版还在开发中。
最后一个版本比较强大,更新速度快,增加了许多实用的命令,也吸收了一些优秀的第三方滤镜成为内建滤镜,强力推荐使用。
对于AVS文件,我们可以把它当作是视频文件,因为安装好AviSynth以后,AVS文件可以像AVI那样被暴风影音打开。
先来简单了解下它的工作过程:
新建个文本文件,然后将后缀改为.avs(文件名可任意,但后缀必须是.avs)如:01.txt->01.avs。AVS文件中包含的是一行行的特定命令的文本,称之为"脚本"。举个最简单的例子:将下面的一行代码保存在新建的AVS文件中。这里假设D盘根目录中有一段AVI视频。文件名为test。
Directshowsource(“d:\test.avi”)
然后把这个AVS文件拖到暴风影音里放放看。当然如果AVS仅限这点功能,我们还不如直接用暴风打开源视频。下面再举个最常用的滤镜---加载字幕。
Loadplugin(“d:\avsplugin\vsfilter.dll”)
Directshowsource(“d:\test.avi”)
Textsub(“d:\test.srt”)
*脚本说明:
Loadplugin() 是加载插件的意思,括号里面的是插件的路径。
Textsub 滤镜(字幕滤镜)没有被AVS内置,所以需要加载vsfilter.dll这个文件字幕文件。请先下载滤镜插件包,里面有vsfilter.dll。
Directshowsource() 是读取源视频文件,括号里面的是影片的路径。更详细的关于这个滤镜的介绍请往下看。
Textsub() 这个就是为视频加载上字幕的语句
这样再用暴风打开这个AVS看看是否已经为影片增加字幕了。
二、特效的内嵌
AviSynth内建了数目繁多的滤镜,所以只能介绍一些最常见实用的一部分。
1、源文件滤镜
1.AVISource
导入AVI,对于DivX或XviD,需要安装相应的Codec。
例:AVISource("test.avi")
打开avi的影片
2. WAVSource
导入WAV
例:WAVSource("test.wav")
3.Directshowsource
般directshowsource 如同其名,只要安装directshowsource 的插件,也就是说,可以用mediaplayer来播放,那么就可以用Directshowsource 来加载。Iphone压片用的比较多。
例:Directshowsource(“d:\test.mkv”) 打开mkv的影片
4.MPEG2Dec
由dividee编写的读取DVD2AVI产生的d2v工程文件的滤镜,同时内建去除Noise的TemporalSmoother。
例:LoadPlugin("MPEG2Dec.dll")
MPEG2Source("test.d2v")
5.MPEG2Dec2
trbarry在MPEG2Dec的基础上进行了改进,支持P4的SSE2指令集。用文本编辑工具打开d2v,把iDCT_Algorithm=?改成5就可以了。速度很快,效果也好,推荐P4 CPU的用户使用。
例:LoadPlugin("MPEG2Dec2.dll")
MPEG2Source("test.d2v")
6.MPEG2Dec3
在MPEG2Dec2的基础上再进行了改进,加入了Nic的图像后处理(PP),一定程度上可以减少Noise。好像除了P4的SSE2外,还加入了AMD的3D Now!优化,目前还在开发中,是个非常有前途的滤镜。
例:LoadPlugin("MPEG2Dec3.dll")
MPEG2Source("test.d2v",CPU=4) # CPU=4就是开启了PP模式
2、处理滤镜
1.AddBorders
加边:给影像加黑边,尤其适用于对16:9的影像加字幕,希望不影响图像,把字幕加在图象的下方的情况。参数是整数,顺序是左、上、右、下。
例:AddBorders(0,64,0,64)
# 把640*352(16:9)改成640*480(4:3)
说明一下(0,64,0,64)这个参数。(0左边加0像素黑边,64上边加64像素黑边,0右边加0像素黑边,64下边加64像素黑边),这样就是把640*352上下各加上了64,也就是加上128。所以就等于是640*(352+128)。
2.ConvertToRGB 和 ConvertToYUY2
改变颜色环境:VirtualDub和AviUtl第三方滤镜有的需要RGB环境才能运行,需要ConvertToRGB来进行切换。
有的RAW文件是RGB的,但调用的AVISynth滤镜只能运行在YUV下,就需要用ConvertToYUY2来运行。
例:ConvertToRGB()
# 改变成RGB颜色环境,这个是截取图片采用的参数。
ConvertToYUY2()
# 改变成YUV颜色环境,如果转一些RM、RMVB,才有可能用到!
3.Crop
切边:为了保持比例或切除黑边,参数是整数,顺序是左、上、宽、高。
例:Crop(8,0,704,480)
# 左右各切去8,以保持比例
说明:(8,0,704,480)对应的是(左、上、宽、高)
4.Levels
层次:可以调节亮度、对比度和Gamma值,一般常用来调节亮度。
例:Levels(0,1.2,255,0,255)
#增加画面亮度
其它参数默认,只改第二个亮度参数,数值在1.2-1.7之间比较合适,一般1.5比较合适. vob文件一般会出现背景暗的问题,就需要增加点亮度。
5.LanczosResize
放大缩小:Lanczos采样方法可以在图像处理中看到,是BicubicResize的替代者,提供更精准、更锐利的画质。本来是日本人开发的第三方滤镜,在日本普遍使用,欧美使用BicubicResize。自2.05版本开始吸收为内置滤镜。最新的是Lanczos4Resize参数
例:LanczosResize(640,480)
# 把分辨率改变为640x480
Lanczos4Resize(640,480)
# 把分辨率改变为640x480一样的效果,比上面相对好些
6.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。
一般将亮度(第三个参数)调节在10-20之间。注意Tweak的其他调节可能和颜色控制环境有关,如YUY2,因此其它的最好不要再改动。
3、编辑滤镜
1.FadeIn 和 FadeOut
淡入和淡出:提供淡入和淡出功能,尤其是淡出功能,可以使影片结束地更自然。参数为整数,表示需要编辑的帧数。
例:FadeOut(24)
# 影片最后1秒淡出,看你影片的FPS,如果是23.97,则24帧=1秒。以此类推。
2.Trim
截取:决定需要处理的部分。参数为整数,表示需要编辑的开始帧和结束帧。对抽样做Sample比较有用。
例:Trim(240,480)
# 决定处理240~480这一片断
3.ChangeFPS
改变影片帧率,iphone一般来说支持最大30fps。
例:ChangeFPS(23.976)
#改变影片帧率有几种数值 12、15、20、23.976、24、25、29.97、30这几种,一般来说不改变也行。
4.undot()
消除噪点,可以使用一个或多个,可以连在一起用,自己看效果体会。
无参数,直接加上就行了。undot滤镜是进行象素及细小噪点降噪,一般用来去除细小的、肉眼不容易察觉的噪点,所以具体效果上并不明显。
例:加在其它滤镜后,使用多次。
LoadPlugin("UnDot.dll")
DirectShowSource("test.avi")
UnDot()
LanczosResize(480,272)
UnDot()
或者:
UnDot().UnDot().UnDot().UnDot()
具体用暴风预览效果。
5.FluxSmooth()
柔化兼有降噪功能,比UnDot()作用要强些.
例:LoadPlugin("fluxsmooth.dll")
fluxsmooth(5,7)
一般用这个默认(5,7)
6.KenKunNR()
KenkunNR是WarpSharp自带的降躁插件,具体参数KenKunNR(threshold=1 to 3),数值越大,强度越大。
例:LoadPlugin("WarpSharp.dll")
KenKunNR(threshold=1)
7.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) 强力
8.SpatialSoften()
空间轴柔化滤镜。基本参数3个,如SpatialSoften (4,8,8)第一个指柔化程度,数值不要太大,2-5之间,后2个是亮度域值和色彩域值,均为整数型数值,需要测试调节.
9.TemporalSoften()
时间轴柔化滤镜。
例:Temporalsoften(2,3,3,mode=2,scenechange=6)
#一般用这个参数就行了
10.Convolution3d()
3D柔化滤镜.参数一般动画用animeHQ,电影用movieHQ.
例: LoadPlugin("Convolution3d.dll")
#转电影
Convolution3d("movieHQ")
#转动画
#Convolution3d("animeHQ")
11.sharpen()
锐化滤镜:数值越大, 锐化效果越强.
例:sharpen(0.2) 一般取0.2~0.3
12.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) #线条比上细,全屏的时候,明显感觉出锯齿
13.mergechroma(blur(1.3))
模糊滤镜.
柔化滤镜可以参考一些自动生成的模板,如
# 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)就相当于锐化滤镜了
[ 本帖最后由 5531915 于 2007-10-8 22:12 编辑 ]