[教学][后期]AVS脚本粗浅介绍
嘛,似乎这儿的各位压制还不太会用AVS这个有力工具,我来简单弄个教程好了…AviSynth 2.55:[url]http://www.ogg.cn/software/view-software-1.html[/url]
AVS是什么呢?AVS全称AVI SYNTHesizer,是什么就别管了XD 如果实在是求知欲旺盛的话,定义在这里:Avisynth is a very useful utility created by Ben Rudiak-Gould. It provides many options for joining and filtering videos. What makes Avisynth unique is the fact that it is not a stand-alone program that produces output files. Instead, Avisynth acts as the "middle man" between your videos and video applications. 简单地说呢,就是相当于在片子和处理片子的软件之间提供一个平台,就像中介一样的作用。[参见fig1]
[片源(XviD,DivX,MPEG……)] -------------> [AviSynth脚本] -----------------> [处理软件(MeGUI, VirtualDub……)]
[片源(XviD,DivX,MPEG……)] ------X----------> [处理软件(MeGUI, VirtualDub……)]
^有可能不支持
fig1
有了这个东西呢,那些处理软件就不用管片源到底是什么格式的,只管处理,这样就不用担心处理的软件不支持片源所采用的压缩格式了^^0
要使用它,首先要到[url]http://www.ogg.cn/software/view-software-1.html[/url]下载安装包,安装之中 注意在
[img]http://www1.freep.cn/Photo.php?url=photo5/0704032344429903.JPG[/img]
这个时候要钩上图示的选项。这样avs文件就可以双击打开了。
AviSynth脚本是文本格式的,也就是说只有一些语句构成。它的语法和C/C++比较接近,不过也略有不同,(比如,大小写是不区分的),制作一个AVS脚本很简单,[b]新建一个文本文档,把后缀名改成avs,这就行了。写AVS脚本,只要把各个语句写到文本文件里头就可以了。 打开的时候可以直接用播放器打开[/b](可以把它直接拖到播放器窗口里头),看到的是视频。
[b]Example #1:[/b]
试试按照刚才的步骤,新建一个avs脚本,用记事本打开,然后在里头写上
MessageClip("Hello World!",100,100)
保存,用MPC之类的播放器打开它,你应该看到一行白色的Hello World!
如果看到了,恭喜,你成功地写成了你的第一个AVS脚本。
[img]http://www1.freep.cn/Photo.php?url=photo5/0704032347047997.JPG[/img]
AVS里头常用的句子有这些
[b]载入一个视频文件[/b]
[b]AviSource("AVI文件名")[/b]
AviSource表示打开一个avi文件。
比如
AviSource("Digimon Adventure Episode 01 - Xvid DVDRip [MXR].avi") 就读入了这个片源。如果片源和avs脚本不在一个目录里头,要加路径
比如 AviSource("G:\downloads\Digimon Adventure Episodes 01-54 [MXR]\Digimon Adventure Episode 01 - Xvid DVDRip [MXR].avi")
[color=Red][b]DirectShowSource("文件名",fps=帧率)[/b]
表示使用DirectShow的方式打开一个视频文件。比较少用,一般是用在AVISource打不开的时候,因为要找帧率,会比较复杂,在此不作详细介绍,只给出几个例子
DirectShowSource("G:\downloads\Digimon Adventure Episodes 01-54 [MXR]\Digimon Adventure Episode 01 - Xvid DVDRip [MXR].avi",fps=23.975)
DirectShowSource("D:\Digimon Movies (XviD DVD-Raw)\Digimon Adventure 02 Diablomon Strikes Back (XviD DVD-Raw) [B41C6AE3].avi",fps=29.970)
[/color]
[b]给视频加字幕[/b]
一般由两个语句实现。
[b]LoadPlugin("VSFilter.dll") [/b]
这个句子的意思是载入叫做VSFilter.dll的文件,这个东西是用来为加载字幕提供支持的,附件里头提供,记住一定要放在和avs同一个目录下面 (该死= = 你们论坛传不上来,超过大小限制 = = 284k… = =那么自己到vobsub里头找吧,有的)
[b]Textsub("字幕文件名")[/b]
这个句子是用来加载字幕的,有多少条字幕就有多少个这个句子,不过记住,[b]这句子永远在加载片源之后出现[/b]。
比如
LoadPlugin("VSFilter.dll")
Textsub("DA01.ssa")
或者
LoadPlugin("VSFilter.dll")
Textsub("DA01_正片.ssa")
Textsub("DA01_OPED.ssa")
Textsub("DA01_STAFF.ssa")
好了,一般的用途就这么多,AVS的功能非常强大,远远不止如此,想要进一步学习,请参考AVS自带的documentation或者doom9.org,camoe.cn还有popgo.net的相关帖子。
下面给几个成品AVS的例子
Example #3:
LoadPlugin("VSFilter.dll")
AviSource("Digimon Adventure Episode 01 - Xvid DVDRip [MXR].avi")
Textsub("DA01.ssa")
可以注意到[b]Textsub在AviSource后出现。[/b]
Example #4:
LoadPlugin("VSFilter.dll")
DirectShowSource("G:\downloads\Digimon Adventure Episodes 01-54 [MXR]\Digimon Adventure Episode 01 - Xvid DVDRip [MXR].avi",fps=23.975)
Textsub("DA01_正片.ssa")
Textsub("DA01_OPED.ssa")
Textsub("DA01_STAFF.ssa")
[color=Red]
进一步学习可以参考如下文章
[url]http://popgo.net/bbs/showthread.php?s=&threadid=178524[/url]
[url]http://www.camoe.cn/bbs/read.php?tid=2576[/url]
[/color]
[[i] 本帖最后由 TurtleIzzy 于 2007-4-4 23:44 编辑 [/i]] 像C吗?
怎么我怎么看都不太像....
话说TI你还会继续写下去的吗 [quote]原帖由 [i]Gesry[/i] 于 2007-4-4 00:09 发表 [url=http://www.tsubasa-sub.com/bbs/redirect.php?goto=findpost&pid=3143&ptid=367][img]http://www.tsubasa-sub.com/bbs/images/common/back.gif[/img][/url]
像C吗?
怎么我怎么看都不太像....
话说TI你还会继续写下去的吗 [/quote]
你说的是C语言吗?不像的说!个人觉得像给程序函数赋予参数! 其实……完全不像C
没分号,注释符也不同 还是比较像Fortran的...? [quote]原帖由 [i]Gesry[/i] 于 2007-4-4 00:43 发表 [url=http://www.tsubasa-sub.com/bbs/redirect.php?goto=findpost&pid=3146&ptid=367][img]http://wFortranww.tsubasa-sub.com/bbs/images/common/back.gif[/img][/url]
还是比较像Fortran的...? [/quote]
这个语言没有学过!也没有见过他的代码!所以不清楚! [quote]原帖由 [i]Gesry[/i] 于 2007-4-4 00:09 发表 [url=http://www.tsubasa-sub.com/bbs/redirect.php?goto=findpost&pid=3143&ptid=367][img]http://www.tsubasa-sub.com/bbs/images/common/back.gif[/img][/url]
像C吗?
怎么我怎么看都不太像....
话说TI你还会继续写下去的吗 [/quote]
会写下去。
其实之所以看起来不像C,是因为AVS默认将每行的输出作为下一行的输入,而就我看来,我觉得更加像C和Pascal的融合。
参看这段代码
[code]
Function A(clip v1, string subname) {
LoadPlugin("VSFilter.dll")
return((subname=="")?Blackness.Subtitle("File name not given"):v1.Textsub(subname))
}
v=AVISource("asdf.avi")
str1="DT03.srt" #Subtitle File name here.
return(a(v,str1))
[/code]
函数定义的时候前面是function,类pascal,我估计原因是AVISynth会自动判断返回值类型,函数begin-end用{},变量定义用type variable_name,显然的C样式,布尔判断用== &&这类,类C,返回用return,没有return的时候最后一个clip自动成为返回值(当然delphi和FP/VP时代的pascal也有return) 加了俩Reference,于是我的囧AVS/X264教学计划结束… 有问题单独找吧… 我下載安裝了試一下,怎麽他說沒有Subtext這個指令?:泪 Textsub需要VSFilter.dll,去这儿下VobSub,包里头有这文件,放到AVS所在目录就可以了。
[url]http://www.ogg.cn/software/view-software-107.html[/url] 謝謝,我要學學壓片才行...:吃饱了
页:
[1]