搜索 社区服务 统计排行 帮助
  • 6068阅读
  • 5回复

[分享] AviSynth的初步经验[自天空,未完,且待修正和update]

楼层直达
xxp
级别: 工作组
注册时间:
2002-05-08
在线时间:
0小时
发帖:
6398
大家可能还记得,在我写过的那篇DVD压制入门里,用GardionKnot完成对d2v工程文件的设置后(如分辨率、裁边等),然后就到save & encode这步,这里GK就调用AviSynth做frame sever。在那个帖子里,在这步就是对avs(AviSynth的工程文件)进行修改后再交给VirtualDub或者NanDub进行压制的。
在这里,就对AviSynth作为frame sever的一些用法做粗略的讲解一下咯。
有关AviSynth的介绍和相关滤镜(plugin)的说明可以去www.avisynth.orgwww.doom9.org论坛的AviSynth区查看,最简单的是去看AviSynth目录下的doc里面的文档。这里我不多说,只讲一些实例。

一、在压制DVD时,对GK完成的avs文件进行编辑,加入自己喜欢的滤镜,再导入到VD或者ND进行压制。
在GK完成所有设置让用户对avs文件进行编辑时,我们选择save,存下avs文件。Gk就产生的一个典型的avs文件。
#
# Created with Gordian Knot
#
# http://thewef.nav.to
#
# PLUGINS
# get them from http://users.win.be/dividee
LoadPlugin("C:\PROGRA~1\GORDIA~1\mpeg2dec.dll")
#LoadPlugin("C:\PROGRA~1\GORDIA~1\decomb.dll")
#LoadPlugin("C:\PROGRA~1\GORDIA~1\InverseTelecine.dll")
#LoadPlugin("C:\PROGRA~1\GORDIA~1\Avisynth_Spatial.dll")
#LoadPlugin("C:\PROGRA~1\GORDIA~1\GreedyHMA.dll")
#LoadPlugin("C:\WINDOWS\System32\vobsub.dll")
#LoadPlugin("C:\PROGRA~1\GORDIA~1\SimpleResize.dll")
#
# SOURCE
mpeg2source("H:\temp\space.d2v")
#
# TRIM
#trim(startframe,endframe)
#
# IVTC
#Telecide()
#Decimate(cycle=5)
# or use
#InverseTelecine(40,10,15)
#GreedyHMA(1,0,4,0,0,0,0,0)
#
# DEINTERLACING (1)
#FieldDeinterlace()
#
# CROPPING
crop(4,55,713,366)
#
# DEINTERLACING (2)
#VerticalReduceBy2
# or maybe
#GreedyHMA(1,0,0,0,0,0,0,0)
#
#
# SUBTITLES
#VobSub("FileName")
#
# RESIZING
BicubicResize(640,368,0,0.75)
#
# DENOISING: choose one combination (or none)
# 1) little noise (fast)
#TemporalSmoother(2,1)
#
# 2) medium noise (slow)
#SpatialSoftenMMX(1,4,6,false,false,4,4,6,8)
#TemporalSmoother(2)
#
# 3) heavy noise (very slow, you have been warned)
#SpatialSoftenMMX(2,4,6,false,false,4,4,6,8)
#TemporalSmoother(3)
#SpatialSoftenMMX(1,4,6,false,false,4,4,6,8)
#
# BORDERS
#AddBorders(left,top,right,bottom)
#
# COMPRESSIBILITY CHECK
# !!!!Snip Size now has to be 14 for use in GKnot!
#SelectRangeEvery(280,14)
#
# FOOL CCEnc
#ResampleAudio(44100)

大家可以看到,GK对每一段都有相关的说明。开始的load("….\xxx.dll")这里,就是AviSynth导入准备调用的滤镜的语句。然后跟着就是调用滤镜了,每个滤镜一行,就和编程调用函数一样,比较好理解。

好,那现在我们就对上面那个典型的avs进行边编辑边说明咯。
首先所有以#开头的行都是说明,下面我将没必要的删掉,大家对比一下。
#AviSynth206 needn't set memory cache
SetMemoryMax(128)
# PLUGINS
LoadPlugin("C:\PROGRA~1\GORDIA~1\mpeg2dec.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\decomb.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\convolution3d.dll")
#LoadPlugin("C:\WINDOWS\System32\vobsub.dll")
LoadPlugin("C:\PROGRA~1\Gabest\VobSub\textsub.vdf")
LoadPlugin("C:\PROGRA~1\GORDIA~1\SimpleResize.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\warpsharp.dll")
# SOURCE
mpeg2source("H:\temp\space.d2v")
# IVTC
Telecide(chroma=true,gthresh=50,guide=1)
Decimate(mode=2,cycle=5,quality=3)
# CROPPING
crop(4,55,713,366)
# SUBTITLES
#VobSub("FileName")
textSub("H:\space.ssa")
# DENOISING
convolution3d(1,4,4,4,4,2.8,0)
# RESIZING
#LanczosResize(640,368)
SimpleResize(640,368)
# SHARPEN
WarpSharp(depth=128, blur=3, bump=128, cubic=-0.6)

好,下面就对现在这个干净点avs说明。
第一行,这个是一个对缓存的设置,设多大大家可以自己衡量。最小不要小于32mb,这里设置成128mb(1/4 max),是因为考虑后面将要调用到的Decomb和其他滤镜需要比较大的处理空间,为了加快速度,所以设到128mb了。
然后是调用plugin的dll。第三行,调用导入d2v工程文件的plugin: mpeg2dec.dll。第四行,调用进行ITVC的decomb.dll。第五行,调用convolution3d.dll,这个滤镜的作用是清除noise和将部分对人眼不敏感的detail去掉,这样就可以让画面清晰的同时,因detail相对少了所以能用较小的码率获得差不多甚至更好的画面感觉。第六/七行,如果内嵌的是.idx和.sub的图形字幕,则要调用VobSub的vobsub.dll。如果内嵌的是文本字幕的,则用textsub.vdf。第八行,调用SimpleResize.dll,用这个去做resize,效果不错而且速度也较快。但据说LanczosResize效果更好,不过需要的时间就多了点。第九行,调用WarpSharp.dll,强调画面的边界感,加强画面对比度,对动画使用这个滤镜效果非常明显。

然后是使用滤镜和一些参数设置了。第十一行,首先调入d2v工程文件作为frame sever的源文件。第十三/十四行,ITVC。第十六行,裁黑边(这里直接套用GK得出得数据)。第十八/十九行,调用字幕。对图形字幕,使用vobsub(“字幕路径\字幕文件名”)。对文本字幕,使用txtsub(“字幕路径\字幕文件名.后缀”)。第二十一行,调用convolution3d对画面进行清除noise,假如源文件的画质非常清晰就不需要使用这个滤镜。这个滤镜最好作用在那些大碟转成dvd或者其他画面比较粗糙等场合(VHS版或者V8版等等)。第二十三/二十四行,画面大小设置resize。第二十六行,调用WarpSharp。

修改存盘完后,就可以用VD或ND 直接打开avs文件,如果avs没写错的,就可以顺利调进VD或者ND了,然后在VD或ND里拉那个时间条,看看画面如何。没问题就可以按照一般的使用VD或ND压制的方法来做了。不过要注意,因为avs里已经有对画面做过crop和resize等操作,所以在VD或ND里就不需要再进行这些设置了。不过如果你在VD或ND里有一些你自己喜欢用的滤镜也可以在这里像你以前习惯的一样添加滤镜。然后设置好压缩方式后,就等着看结果咯。最后还是像以前制作一样绑定音频咯。

二、对raw文件是avi的进行内嵌字幕。
因为这类型的avi是已经压缩过的,所以效果应该不会非常的好,所以在这里调用滤镜是可行和有效的。一般内嵌的话,应该不进行crop和resize,以尽量和片源一致,甚至最好连码率和编码都一样。不过这里使用了convolution3d等滤镜后,除了crop和resize不进行外,码率和编码都可以自己选择了(这里假设raw的avi做过ITVC或deinterlace,这里就不进行这2项了,如果没做,这里还是要做。做法和上面压制DVD差不多。)下面是一个典型的avs。

SetMemoryMax(64)
AVISource("g:\space.avi")
LoadPlugin("C:\PROGRA~1\Gabest\VobSub\textsub.vdf")
LoadPlugin("C:\PROGRA~1\GORDIA~1\convolution3d.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\warpsharp.dll")
convolution3d(1,4,4,4,4,2.8,0)
textSub("g:\space.ssa")
WarpSharp(depth=128, blur=3, bump=128, cubic=-0.6)

首先是一样设置缓存用量,然后指定片源avisource(“路径\文件名.avi”)(某些不是divx压制的avi就要换成directShowSource("filename", fps),这里fps要为整数,如果是23.976就用24咯),然后就调用convolution3d和vobsub和warpsharp的dll和进行滤镜的使用。
将上面这个avs导入到VD或ND后,也和你以前习惯的压制方法一样,直接压制就行了。

三、用AviSynth做frame sever,直接调用d2v压制RMVB。
这个就简单了,直接调用上面第一种方法的avs就可以了,但要做一点处理,因为这次是将视频和音频一起进行压制。首先还是要先用d2v将音频从vob中抽取出来,抽取的时候选decode to wav,将音频存成wav格式。

SetMemoryMax(128)
# PLUGINS
LoadPlugin("C:\PROGRA~1\GORDIA~1\mpeg2dec.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\decomb.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\convolution3d.dll")
#LoadPlugin("C:\WINDOWS\System32\vobsub.dll")
LoadPlugin("C:\PROGRA~1\Gabest\VobSub\textsub.vdf")
LoadPlugin("C:\PROGRA~1\GORDIA~1\SimpleResize.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\warpsharp.dll")
# SOURCE
mpeg2source("H:\temp\space.d2v")
a=WavSource("H:\temp\space.wav")
Audiodub(a)

# IVTC
Telecide(chroma=true,gthresh=50,guide=1)
Decimate(mode=2,cycle=5,quality=3)
# CROPPING
crop(4,55,713,366)
# SUBTITLES
#VobSub("FileName")
textSub("H:\space.ssa")
# DENOISING
convolution3d(1,4,4,4,4,2.8,0)
# RESIZING
#LanczosResize(640,368)
SimpleResize(640,368)
# SHARPEN
WarpSharp(depth=128, blur=3, bump=128, cubic=-0.6)

看这个avs里的红字那里,这里就是将音频与视频绑定了。完成avs编写后,就是和你以往使用HPP9一样的做法咯,喜欢GUI的或者喜欢命令行的都没问题,直接调用这个avs就行。不过要注意,HPP9这里就不需要再进行crop和resize了,因为这些都交给AviSynth这个frame sever来进行了。字幕也在avs里面内嵌了,很方便吧。

四、用AviSynth做frame sever调用avi压制RMVB。
这个就非常简单了。因为这里不需要专门设置音频、视频绑定。甚至有些连字幕都已经内嵌了,字幕都不需要在avs里做,呵呵。看下面这个假设是外挂字幕的avi(这里用avs调用,不采用将字幕和avi放在同一个目录的方法来调用字幕)制作的avs。编写完这个avs,和三一样的后继做法压制就ok了,非常简单。

SetMemoryMax(128)
# PLUGINS
LoadPlugin("C:\PROGRA~1\GORDIA~1\mpeg2dec.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\decomb.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\convolution3d.dll")
#LoadPlugin("C:\WINDOWS\System32\vobsub.dll")
LoadPlugin("C:\PROGRA~1\Gabest\VobSub\textsub.vdf")
LoadPlugin("C:\PROGRA~1\GORDIA~1\SimpleResize.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\warpsharp.dll")
# SOURCE
mpeg2source("H:\temp\space.d2v")
# IVTC
Telecide(chroma=true,gthresh=50,guide=1)
Decimate(mode=2,cycle=5,quality=3)
# CROPPING
crop(4,55,713,366)
# SUBTITLES
#VobSub("FileName")
textSub("H:\space.ssa")
# DENOISING
convolution3d(1,4,4,4,4,2.8,0)
# RESIZING
#LanczosResize(640,368)
SimpleResize(640,368)
# SHARPEN
WarpSharp(depth=128, blur=3, bump=128, cubic=-0.6)

其实为什么要这么麻烦要AviSynth做frame sever来调用avi压制RMVB呢,因为现在好多人抱怨在HPP9的GUI下一打开divx或者xvid格式的avi,HPP9就死。而使用AviSynth作为frame sever就能很好的解决这个问题了。

以上几个AviSynth的使用,极需要高手来指正,写这么多只是为了抛砖引玉,这里受教先了

你不能决定生命的长度,但你可以控制它的宽度。
你不能左右天气,但你可以改变心情。
你不能改变容貌,但你可以展现笑容。
你不能控制他人,但你可以掌握自己。
你不能预知明天,但你可以利用今天。
你不能样样胜利,但你可以事事尽力。
xxp
级别: 工作组
注册时间:
2002-05-08
在线时间:
0小时
发帖:
6398
只看该作者 1楼 发表于: 2002-12-28
要用到的,首先找到GK(doom9还是射手,都能找到),然后安装下面的东西
avisynth 2.07: http://bbs.popgo.net/bbs/attachment.php?s=&postid=1908361
decomb 405: http://bbs.popgo.net/bbs/attachment.php?s=&postid=1908332
convolution3d 1.01: http://hellninjacommando.com/con3d/convolution3d-1.01.zip
warpsharp0911a: http://forum.doom9.org/attachment.php?postid=183722
simpleresize 0.3.2: http://www.trbarry.com/SimpleResize.zip
除了AviSynth可以自动安装外,其他的都解压到GK的目录下覆盖原来的就可以了

几个滤镜的参数,都可参考各自压缩包里的设置。

你不能决定生命的长度,但你可以控制它的宽度。
你不能左右天气,但你可以改变心情。
你不能改变容貌,但你可以展现笑容。
你不能控制他人,但你可以掌握自己。
你不能预知明天,但你可以利用今天。
你不能样样胜利,但你可以事事尽力。
xxp
级别: 工作组
注册时间:
2002-05-08
在线时间:
0小时
发帖:
6398
只看该作者 2楼 发表于: 2003-01-04
LoadPlugin("C:\PROGRA~1\GORDIA~1\mpeg2dec3.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\decomb.dll")
#LoadPlugin("C:\PROGRA~1\GORDIA~1\IT.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\Convolution3D.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\ColorYUY2.dll")
#LoadPlugin("C:\PROGRA~1\GORDIA~1\WarpSharp.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\SimpleResize.dll")
#LoadPlugin("C:\PROGRA~1\Gabest\VobSub\textsub.vdf")
#LoadPlugin("C:\PROGRA~1\GORDIA~1\TomsMoComp.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\_2DCleanYUY2.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\msharpen.dll")
mpeg2source("H:\temp\space.d2v",cpu=0,IDCT=2)
#trim(0,850)
Telecide(guide=1,Gthresh=50,Chroma=true,Threshold=15,dthreshold=9,Post=true,mm=0)
#TomsMoComp(1,0,1)
#IT(fps=30, ref="TOP", blend=false)
#FieldDeinterlace(full=false,Threshold=15,dthreshold=5,chroma=true,blend=false)
Decimate(mode=2,cycle=5,quality=3)
crop(5,54,710,367)
MSharpen(10,100,true,false,false)
Convolution3d(preset="animeHQ")
_2DCleanYUY2(0,7,2,2,0,4,4)
SimpleResize(640,368)
#WarpSharp(depth=128,blur=3,bump=128,cubic=-0.6)
#Tweak(sat=1,cont=1,hue=-7,bright=1)
ColorYUY2(debug=0,x=-1,y=-1,gain_y=15,gamma_y=15,cont_y=10,cont_u=15,cont_v=16)

某个NTSC 3:2 pull down 30fps->24fps的avs

你不能决定生命的长度,但你可以控制它的宽度。
你不能左右天气,但你可以改变心情。
你不能改变容貌,但你可以展现笑容。
你不能控制他人,但你可以掌握自己。
你不能预知明天,但你可以利用今天。
你不能样样胜利,但你可以事事尽力。
级别: 工作组
注册时间:
2002-09-04
在线时间:
1小时
发帖:
2332
只看该作者 3楼 发表于: 2003-02-03
这个包里面有一大堆插件加说明,呵呵……

http://seewen.levillage.org/download/SeeWen-Plugins.Avisynth-2.07-20.12.02.rar

PS: 这个帖子能不能回的啊?

看动画,要求别太高
没有新作,遗作也可
没有佳作,臭作也可
没有神作,鬼作也可


Ronnier's Blog
级别: 工作组
注册时间:
2001-11-21
在线时间:
0小时
发帖:
795
只看该作者 4楼 发表于: 2003-02-20
恳请XXP大大介绍一下做IVTC的几种滤镜的技巧 做攻壳2特典我快封掉了 T___T
级别: 小荷初露
注册时间:
2002-09-06
在线时间:
2小时
发帖:
226
只看该作者 5楼 发表于: 2003-10-24
引用
最初由 魔术杨 发布
恳请XXP大大介绍一下做IVTC的几种滤镜的技巧 做攻壳2特典我快封掉了 T___T


我都是一样的恳请。

有空来灌水。
快速回复

限150 字节
上一个 下一个