一、简述
AviSynth
是
AVI SYNTHesizer
的缩写,意思就是
AVI
和成器,是一个
Frameserver
。(
Frameserver
就是一个把影像文件从一个程序转换到另外一个程序的过程
,
其间没有临时文件或中介文件产生)
AviSynth
是由
Ben Rudiak-Gould
首创的一种非常有用的工具,能够提供各种方式来合并和滤镜处理影像文件。最独特的就是
AviSynth
并不是一个孤立的影像处理程序,而是在影像文件和应用程序之间担任“中间人”的角色。
AviSynth
的基本工作原理是这样的:
首先建立一个包含特定命令的文本,称之为“脚本”
(
后缀为
avs)
,这些命令指定要运行处理的影像文件和滤镜;
然后运行影像应用程序,比如
VD
或
ND
,打开脚本。此时
AviSynth
就开始工作了,打开脚本中指定的影像文件,运行特定的滤镜,并把输出结果提供给影像应用程序。但影像应用程序并不了解
AviSynth
在后台所做的处理,而认为是直接打开了一个“被处理过”的影像文件。
因此使用
AviSynth
有
5
大优势:
1. YUV
支持:内建滤镜可以在
YUV
环境下运行,第三方滤镜几乎也兼容
YUV
,所以比起
VD
、
ND
的内嵌滤镜必须在
RGB
环境下运行要快很多。省却了一个转换的过程,将来还可以支持
YV
。
2.
滤镜处理:内建许多影像处理滤镜,比如
Resizing
,
Cropping
等。还有大量的第三方强力滤镜,并可以调用
VD
以及
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.0.6
,新的
v2.5
版还在开发中。
最后一个版本比较强大,更新速度快,增加了许多实用的命令,也吸收了一些优秀的第三方滤镜成为内建滤镜,强力推荐使用。
二、安装
AviSynth
的安装可谓简单,先下载
AviSynth
,然后解压缩,把
AviSynth.dll
复制到
Windows\System
下(
W98
,
ME
)或
Windows\System32
下(
W2K
,
XP
),然后运行
INSTALL.REG
就完成安装了。
三、内建滤镜
AviSynth
内建了数目繁多的滤镜,所以只能介绍一些最常见实用的一部分。
1
、源文件滤镜
①
AVISource
导入
AVI
,对于
DivX
或
XviD
,需要安装相应的
Codec
。
例:
AVISource("test.avi")
②
WAVSource
导入
WAV
例:
WAVSource("test.wav")
2
、处理滤镜
①
AddBorders
加边:给影像加黑边,尤其适用于对
16:9
的影像加字幕,希望不影响图像,把字幕加在图象的下方的情况。参数是整数,顺序是左、上、右、下。
例:
AddBorders(0,64,0,64) #
把
640*352
(
16:9
)改成
640*480
(
4:3
)
②
ConvertToRGB
和
ConvertToYUY2
改变颜色环境:
VD
和
AviUtl
第三方滤镜有的需要
RGB
环境才能运行,需要
ConvertToRGB
来进行切换。
有的
RAW
文件是
RGB
的,但调用的
AVISynth
滤镜只能运行在
YUV
下,就需要用
ConvertToYUY2
来运行。
例:
ConvertToRGB()
#
改变成
RGB
颜色环境
��
ConvertToYUY2()
#
改变成
YUV
颜色环境
③
Crop
切边:为了保持比例或切除黑边,参数是整数,顺序是左、上、宽、高。
例:
Crop(8,0,704,480)
#
左右各切去
8
,以保持比例
④
Levels
层次:调节亮度、对比度和
Gamma
值。
例:
Levels(0,1.2,255,0,255) #
调整
Gamma
,使画面变亮
⑤
LanczosResize
放大缩小:
Lanczos
采样方法可以在图像处理中看到,是
BicubicResize
的替代者,提供更精准、更锐利的画质。本来是日本人开发的第三方滤镜,在日本普遍使用,欧美使用
BicubicResize
。自
2.05
版本开始吸收为内置滤镜。
例:
LanczosResize(640,480) #
把分辨率改变为
640*480
⑥
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
。
3
、编辑滤镜
①
FadeIn
和
FadeOut
淡入和淡出:提供淡入和淡出功能,尤其是淡出功能,可以使影片结束地更自然。参数为整数,表示需要编辑的帧数。
例:
FadeOut(24)
#
影片最后
1
秒淡出
②
Trim
截取:决定需要处理的部分。参数为整数,表示需要编辑的开始帧和结束帧。对抽样做
Sample
比较有用。
例:
Trim(240,480)
#
决定处理
240
~
480
这一片断
4
、声音滤镜
①
AudioDub
影音合并:可以把影像和声音合并在一起。适用用用
Helix
直接做
RMVB
格式的
DVDrip
。
例:
Video = AVISource("test.avi")
��
Audio= WAVSource("test.wav")
��
AudioDub(Video,Audio)
#
把
test.avi
和
test.wav
合并
②
GetLeftChannel
和
GetRightChannel
获取声道:把立体声的左右声道单独返回,适用于左右声道不同语种的
WAV
。
例:
stereo=WavSource("test.wav")
��
return GetLeftChannel(stereo)
#
返回
test.wav
的左声道
③
DelayAudio
声音延迟:由于从
VOB
里分离的
AC3
通常有延迟,所以用
Azid
转码得到的
WAV
也有延迟,在用
AudioDub
合并时就需要加上这个延迟。
例:
WavSource("test.wav").DelayAuido(0.5)
#
把
test.wav
延迟半秒
四、第三方滤镜
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
、处理滤镜
①
SimpleResize
放大缩小:由
trbarry
编写的,由于对
SSE
进行了优化,所以速度快,效果好。替代了
AviSynth
中的
BilinearResize
。和
LanczosResize
的米切尔双立方体算法不同,这个是单纯的双线性算法。
LanczosResize
的画质更锐利和真实,适合普通电影;而
SimpleResize
的画质较柔和,适合动画。
例:
LoadPlugin("SimpleResize.dll")
��
SimpleResize(640,480)
②
ColorYUY2
颜色补偿:
Kiraru2002
编写的滤镜。由于经过编码,得到的结果和
DVD
相比较,颜色有所改变,所以要对颜色进行补偿。
例:
LoadPlugin("ColorYUY2.dll")
��
ColorYUY2(0,10,0,10,0,0,0,0,0)
3
、交错滤镜
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
4
、字幕滤镜
①
VobSub
Sub
字幕:
VobSub
不但是外挂字幕的好手,内嵌字幕也是一样的强。
将字幕的
2
个文件
test.idx
和
test.sub
放在同一个目录下就可以了。
例:
LoadPlugin("VobSub.dll")
��
VobSub("test")
②
TextSub
SSA
和
ASS
字幕:这个也是
VobSub
自带的,可以内嵌特效字幕。
例:
LoadPlugin("TextSub.vdf")
��
TextSub("test.ssa")
作者:
CSR2000
来源:
CCF
DOC文档下载,请查看附件,推荐保留该文档