| tabctrl |
2008-01-17 07:58 |
一、简述 ]Qn im;[+ f[EsY7#f6 AviSynth是AVI SYNTHesizer的缩写,意思就是AVI和成器,是一个Frameserver。(Frameserver就是一个把影像文件从一个程序转换到另外一个程序的过程, 其间没有临时文件或中介文件产生) 61sx$3Y 7m6U8u AviSynth是由Ben Rudiak-Gould首创的一种非常有用的工具,能够提供各种方式来合并和滤镜处理影像文件。最独特的就是AviSynth并不是一个孤立的影像处理程序,而是在影像文件和应用程序之间担任“中间人”的角色。 *EO.}Q /AD2|o+ AviSynth的基本工作原理是这样的: `R2&R)o~ 首先建立一个包含特定命令的文本,称之为“脚本”(后缀为avs),这些命令指定要运行处理的影像文件和滤镜; r.3-Sa& 然后运行影像应用程序,比如VD或ND,打开脚本。此时AviSynth就开始工作了,打开脚本中指定的影像文件,运行特定的滤镜,并把输出结果提供给影像应用程序。但影像应用程序并不了解AviSynth在后台所做的处理,而认为是直接打开了一个“被处理过”的影像文件。 T]W:m4a
Pq?c.C 因此使用AviSynth有5大优势: )0vsJ+8L) 1. YUV支持:内建滤镜可以在YUV环境下运行,第三方滤镜几乎也兼容YUV,所以比起VD、ND的内嵌滤镜必须在RGB环境下运行要快很多。省却了一个转换的过程,将来还可以支持YV。 *WfgB7Y( 2. 滤镜处理:内建许多影像处理滤镜,比如Resizing,Cropping等。还有大量的第三方强力滤镜,并可以调用VD以及AviUtl的第三方滤镜。 ( t*`3[ 3. 突破2G限制:通过AviSynth打开影像文件就相当于应用程序直接打开,这样就可以使本身有2G限制的程序也能突破2G的限制。 g tm*8 4. 打开格式:AviSynth可以打开几乎所有影像文件,包括MPEG和QuickTime。所以当影像应用程序通过AviSynth打开这些文件时,会被认为是打开标准的AVI,这样就可以处理影像应用程序本身并不支持的格式。
(%WeA"sX 5. 节省硬盘空间:AviSynth处理的影像文件在运行过程中直接导入应用程序,没有临时文件,所以节省硬盘空间。 &9B~]FkK. e}WGqnfs AviSynth现在有3个版本,第一个是Ben Rudiak-Gould的首先编译的AviSynth v1.0b;在Ben Rudiak-Gould停止开发后,Edwin van Eggelen继续开发,最新的版本是AviSynth v1.0b6;在2002年7月第二次源码编写计划开始,目前最新的版本是AviSynth v2.0.6,新的v2.5版还在开发中。 Vl!.W1jmq 最后一个版本比较强大,更新速度快,增加了许多实用的命令,也吸收了一些优秀的第三方滤镜成为内建滤镜,强力推荐使用。 RSUnIv* V(.18$ 二、安装 ~;;- /S98 OE67wO^h AviSynth的安装可谓简单,先下载AviSynth,然后解压缩,把AviSynth.dll复制到Windows\System下(W98,ME)或Windows\System32下(W2K,XP),然后运行INSTALL.REG就完成安装了。 dp!{,cY dAsTp=9 iNH#
R_Z 三、内建滤镜 hE %^TJz7= =<ev"*p AviSynth内建了数目繁多的滤镜,所以只能介绍一些最常见实用的一部分。 OQVe?I j;N/^ 1、源文件滤镜 y(
cRHM[ '+7!9VVp ① AVISource `C+ ~ P 导入AVI,对于DivX或XviD,需要安装相应的Codec。 1.k?&tcr' 例:AVISource("test.avi") 3H]]P+q|m ② WAVSource UD
jD^:Jn 导入WAV *;+1oItXvx 例:WAVSource("test.wav") X-{#E *7!f
EF 2、处理滤镜 >Ua '7N4PU<[i| ① AddBorders -rrjSH! 加边:给影像加黑边,尤其适用于对16:9的影像加字幕,希望不影响图像,把字幕加在图象的下方的情况。参数是整数,顺序是左、上、右、下。 F1X>;?y:V 例:AddBorders(0,64,0,64) # 把640*352(16:9)改成640*480(4:3) U[64X.A.S 3W/7oEy ② ConvertToRGB 和 ConvertToYUY2 m0?p0 z 改变颜色环境: 9 ob(z/l VD和AviUtl第三方滤镜有的需要RGB环境才能运行,需要ConvertToRGB来进行切换。 xE[ mHLm 有的RAW文件是RGB的,但调用的AVISynth滤镜只能运行在YUV下,就需要用ConvertToYUY2来运行。 50PQC0f 例:ConvertToRGB() # 改变成RGB颜色环境 /lM}xx4 f ConvertToYUY2() # 改变成YUV颜色环境 EDni (;#;K#F ③ Crop +xDk* 切边:为了保持比例或切除黑边,参数是整数,顺序是左、上、宽、高。 :n'|y
^Q)` 例:Crop(8,0,704,480) # 左右各切去8,以保持比例 QMgO{3
% 9sknY">a" ④ Levels ?^ nhb 层次:调节亮度、对比度和Gamma值。 Hm;d0sq 例:Levels(0,1.2,255,0,255) # 调整Gamma,使画面变亮 ]g- A?z&. g3#z3\4x^
"W 2Ifi; ⑤ LanczosResize 9cPjdR5h7 放大缩小:Lanczos采样方法可以在图像处理中看到,是BicubicResize的替代者,提供更精准、更锐利的画质。本来是日本人开发的第三方滤镜,在日本普遍使用,欧美使用BicubicResize。自2.05版本开始吸收为内置滤镜。 x@KbYOL10 例:LanczosResize(640,480) # 把分辨率改变为640*480 0d|{2#JOu M1oBY!_y ⑥ Tweak m8%XpK% 调整:可以调节色度,饱和度,亮度,对比度。 fja\f 色度:-180.0~180.0,默认0.0。正数趋向红色,负数趋向绿色。 %@G``4 饱和度:0.0~10.0,默认1.0。0.0为黑白。 f!V64/(j 亮度:-255.0~255.0,默认0.0。 ZWO~v$riG 对比度:0.0~10.0,默认1.0。 ;^}\Zdw, 9UZe_{R 3、编辑滤镜 Vl0
@rd! <OJwt_jn ①FadeIn 和 FadeOut $?d'` &0E6 淡入和淡出:提供淡入和淡出功能,尤其是淡出功能,可以使影片结束地更自然。参数为整数,表示需要编辑的帧数。 k^T8'&c 例:FadeOut(24) # 影片最后1秒淡出 ?]tR)Zn(7 RsJ#Lu)gij ②Trim 4{z9H@RR- 截取:决定需要处理的部分。参数为整数,表示需要编辑的开始帧和结束帧。对抽样做Sample比较有用。 bg fWV8lmM 例:Trim(240,480) # 决定处理240~480这一片断 #+[] mNhr ZHT?R:/ 4、声音滤镜 <EwLCKaw "afw;,N ① AudioDub P8(#1lvf 影音合并:可以把影像和声音合并在一起。适用用用Helix直接做RMVB格式的DVDrip。 g0{ ;1B 例:Video = AVISource("test.avi") 32<.8/9 Audio= WAVSource("test.wav") !EC Qe~v AudioDub(Video,Audio) # 把test.avi和test.wav合并 C@5n,DHG4 + 6>
/ ② GetLeftChannel 和 GetRightChannel xqB\X! 获取声道:把立体声的左右声道单独返回,适用于左右声道不同语种的WAV。 l7uSq\ 例:stereo=WavSource("test.wav") 7u]w ac` return GetLeftChannel(stereo) # 返回test.wav的左声道 X
[nM,XF 'huEvGhz( ③DelayAudio Pm#M.m^:' 声音延迟:由于从VOB里分离的AC3通常有延迟,所以用Azid转码得到的WAV也有延迟,在用AudioDub合并时就需要加上这个延迟。
1YMzLQ`: 例: WavSource("test.wav").DelayAuido(0.5) # 把test.wav延迟半秒 ;+qi<.@v @Ur_M K!R \F ~?Ax/b-I tOmU_),U G8J<jaZO 四、第三方滤镜 ;a n'Qo H.tD<Ny AviSynth最强大之处就是有数目繁多、功能强大的第三方滤镜;同时还可以调用VD以及AviUtl的滤镜;甚至还有特别开发的接口,可以让TMPGEnc和AviUtl读取AVS。 `B Hl| 和内建滤镜不同,第三方滤镜需要先调用声明,再可以使用。 I?4bnj2f l
eNcm=3 1、源文件滤镜 .!lL:T
B @,%
o{@]i ① MPEG2Dec oKr}zRtP 由dividee编写的读取DVD2AVI产生的d2v工程文件的滤镜,同时内建去除Noise的TemporalSmoother。 uTp x%<m] 例:LoadPlugin("MPEG2Dec.dll") IDmf*
MPEG2Source("test.d2v") jvM uK6 ?wY
<dPqp ② MPEG2Dec2 ^ow;NR trbarry在MPEG2Dec的基础上进行了改进,支持P4的SSE2指令集。用文本编辑工具打开d2v,把iDCT_Algorithm=?改成5就可以了。速度很快,效果也好,推荐P4 CPU的用户使用。 y
@%Hy/u` 例:LoadPlugin("MPEG2Dec2.dll") g@>v\c(A MPEG2Source("test.d2v") ol%
'B>"BN_, ③ MPEG2Dec3 4"Ai3y`8% 在MPEG2Dec2的基础上再进行了改进,加入了Nic的图像后处理(PP),一定程度上可以减少Noise。好像除了P4的SSE2外,还加入了AMD的3D Now!优化,目前还在开发中,是个非常有前途的滤镜。 j&Y` %m 例:LoadPlugin("MPEG2Dec3.dll") t^ S)/" MPEG2Source("test.d2v",CPU=4) # CPU=4就是开启了PP模式 #i6_eNb ZXIh*iv 2、处理滤镜 ;6|euH}4 WV<[N2% ① SimpleResize (:YT_',U 放大缩小:由trbarry编写的,由于对SSE进行了优化,所以速度快,效果好。替代了AviSynth中的BilinearResize。和LanczosResize的米切尔双立方体算法不同,这个是单纯的双线性算法。LanczosResize的画质更锐利和真实,适合普通电影;而SimpleResize的画质较柔和,适合动画。 wUJXL0X 例:LoadPlugin("SimpleResize.dll") (/iNsF SimpleResize(640,480) @lG'
? BPa/uA9XU ② ColorYUY2 Ub)!T
3J 颜色补偿:Kiraru2002编写的滤镜。由于经过编码,得到的结果和DVD相比较,颜色有所改变,所以要对颜色进行补偿。 NI(':u: 例:LoadPlugin("ColorYUY2.dll") 2V$>_ ColorYUY2(0,10,0,10,0,0,0,0,0) Lm $B*R :'
c]]R t{IVMw 3、交错滤镜 ])rM3 e]w.`ims Decomb RRry"3{ IVTC和Deinterlace滤镜:由Donald A.Graft编写,新增加的专门处理NTSC格式动画的mode=2,要和Avisynth2.05以上版本使用,不然速度会慢一倍。 NB1KvN7+} 087p
]c@Gu guide 0~2,默认0, NTSC用1,PAL用2,可以提高IVTC准确度。 @fyC=7rmn gthresh 0~100,默认15,控制区分不同帧的程度。 $Q!]f>g t post 默认true,用来处理IVTC遗漏的细节,使画面略微模糊。 i<iuaUu threshold 0~255,默认15,控制post的程度。 -0F8^Bsii dthreshold 0~255,默认9,控制threshold判定IVTC遗漏的程度。 ea7?i(Oi[ blend 默认true,在交错画面用渲染来替代填充。 }<ke1>!9 chroma 默认false,在交错画面的亮度色度调整。 m\Tc?iz cycle 2~25,默认5,每n帧删除1帧,NTSC选5,PAL选25。 ;(^ w6%S+' mode 0~2,默认2。 ;>wv-{#o mode=0 对cycle里最相近的帧不进行处理。 (B&a_TI5 mode=1 对cycle里最相近的帧进行处理,用于处理混合帧速。 7=~HtbR\y mode=2 在一个很长的范围里进行帧对比,可以正确处理动画里由8帧或12帧复制为29.97帧的情况。 u>s4m;x~ Threshold 默认0,控制mode=1时的处理重复帧的程度,Threshold默认100,控制mode=2时的处理重复帧的程度。 M6o%HAJ Quality 0~3,默认2,采样和色度的质量,与速度成反比。 elD'4-aD 55Q!OdDgn 但是最近的几个版本似乎都存在一个问题,就是处理后的画面有波动现象,并伴随影片里文字闪烁现象,所以还是用老版本的保险。 J3+f6Y
2v6 o0h
h 例:LoadPlugin("Decomb.dll") rqgF Telecide(Guide=1,Gthresh=50,Chroma=True,Quality=3,Post=false) B4i)P# i Decimate(cycle=5) # NTSC 3:2 PullDown P~v]wXR- ~/YU$]
^ LoadPlugin("Decomb.dll") W|A!U0Cy Telecide(Guide=1,Gthresh=50,Chroma=True,Quality=3,Post=false) 2
b1R Decimate(Cycle=5,Mode=2) # NTSC Progressive和Interlaced混合 pmaJQYf-: zIZgybSg!. LoadPlugin("Decomb.dll") ,Ptis .J Telecide(Guide=2,Gthresh=50,Chroma=True,Quality=3,Post=false) 5sxkKl( Decimate(Cycle=25) # PAL :}>{a:% H=DG< >cp~>F[[] 4~`-0E 4、字幕滤镜 [Z)96
H> Ac2dFl[pY ① VobSub AyEt"K Sub字幕:VobSub不但是外挂字幕的好手,内嵌字幕也是一样的强。 O@b<ZF 将字幕的2个文件test.idx和test.sub放在同一个目录下就可以了。 FF8"C(: 例:LoadPlugin("VobSub.dll") ;Wt(6 9;:s VobSub("test") NtZ$_e* wAref ② TextSub $3x[,y| SSA和ASS字幕:这个也是VobSub自带的,可以内嵌特效字幕。 B6:1yd0 例:LoadPlugin("TextSub.vdf") {S6p'h0?g TextSub("test.ssa") |
|