因此使用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脚本,然后通过ffmpeg等处理工具导入,即完成一些我们想要的效果
例如:
LoadPlugin("C:/Program Files (x86)/AviSynth/plugins/x86/ffms2.dll") //加载dll
inputmov=FFVideoSource("*****.mov").ConvertToRGB32().ChangeFPS(25) //滤镜带通道视频流1
inputvideo=FFVideoSource("*******.avi").ConvertToRGB32().ChangeFPS(25) //视频流2
overvideo=inputvideo.Trim(0,100).ChangeFPS(25) //截取视频流2
audio=FFAudioSource("**********.mov").ResampleAudio(44100) //某音频流1
inputaudio=FFAudioSource("***********.avi").ResampleAudio(44100) //某音频流2
video=layer(overvideo,inputmov,op="Add") ++ inputvideo.Trim(100,0).ChangeFPS(25) //合并视频流2的片段与滤镜 再加上视频流2
mixAudio=MixAudio(inputaudio,audio,0,1) //合并音频
AudioDub(video, mixAudio) //最终输出
把这样的代码写入脚本文件avs,然后通过ffmpeg执行 例如: ffmpeg -i ***.avs -y output.avi即可。
AviSynth官方API说明:http://avisynth.nl/index.php/Main_Page
AviSynth资料博客:http://www.cnblogs.com/top5/archive/2011/01/06/1929198.html