1 、初识AVS
首先必须明确,AVS是什么东西?
AVS的全称是AviSynth。还记得用VDM内嵌字幕的时候是怎么做的吗?先打开片源,然后挂字幕,最后送到编码器压制。所以说到最后,VDM的工作就是给编码器提供带有字幕的视频。AVS的功能也是差不多,就是输入源视频,输出处理过的视频。AVS的处理过程全部保存在AVS文件里。对于AVS文件,我们可以把它当作是视频文件,因为安装好AviSynth以后,AVS文件可以像AVI那样被VDM打开,甚至能被播放器打开。
AVS文件中包含的是处理信息。先举个简单的例子。比如之前的用VDM内嵌字幕,现在改用AVS内嵌字幕。VDM启动的时候自动加载字幕插件,先打开片源,然后添加字幕插件。用AVS的话就可以这样写:(文件名自己改)
[code]
loadplugin("c:\vsfilter.dll")
avisource("c:\1.avi")
textsub("c:\1.ssa")
[/code]
我来解释一下,第一句中的loadplugin()意思是加载插件,括号里面就是插件的名字。在VDM里面启动时会自动加载插件,AVS中要手动写这一句。vsfilter.dll是字幕插件的名字。然后是avisource(),这个是加载AVI的功能,就像VDM中的打开文件。textsub这个功能本来AVS没有,是加载完vsfilter.dll这个插件以后才有的。就像是VDM在没有加载字幕插件的情况下在Video->Filter里面不会出现textsub这个东西。textsub()括号里面的是字幕文件的名字。
以上内容用记事本写好,保存的时候在文件名后面加上“.avs”。然后这个AVS文件拿去用播放器打开试试,播放出来有字幕的影片了吗?
这样还只是出来一个AVS文件而已,字幕并没有真正跑到影片里面去。刚才看到的是AVS输出的画面,只要把这个画面拿去压制就可以出来有字幕的文件了。可以使用VDM进行压制。在VDM打开文件的时候,直接选择AVS文件,然后不要再挂字幕了,设置好以后送去压制就可以了。
2 、特效的内嵌
AVS强大的功能还不止这一点,现在再介绍复杂一点的AVS操作。比如特效,字幕组的人经常会把特效制作成AVI格式或者字幕格式。如果是字幕格式,那好办,用AVS就这样写:
[code]
loadplugin("c:\vsfilter.dll")
avisource("c:\1.avi")
textsub("c:\1.ssa")
textsub("c:\tx.aas")
[/code]
和刚才相比,就多了一句,再加载一次字幕而已。如果是AVI的特效,比如是片头,就是去掉原来动画片的片头,把这个AVI塞进去充当片头。就是说用AVI里面的内容替换片源的内容。先要找到片源中要替换的部分的位置。这个用VDM操作。用VDM打开片源,拖动下面的滚动条找到片源中要替换部分的开头,
这里的开始位置就是361,记住这个数字。然后用同样的方法找到结束位置,这里找到的是2519。再把滚动条移动到最后面,找到总帧数,这里是35963。然后找出那个AVI特效。这里假设片源是c:\py.avi,字幕是c:\zm.ssa,特效是c:\tx.avi。
[code]
loadplugin("c:\vsfilter.dll")
py=avisource("c:\py.avi",audio=false).textsub("c:\zm.ssa")
tx=avisource("c:\tx.avi",audio=false)
py.trim(0,360)+tx+py.trim(2520,35963)
[/code]
这个AVS会相对比较复杂。解释一下:
[code]
loadplugin("c:\vsfilter.dll") #加载字幕插件
py=avisource("c:\py.avi",audio=false).textsub("c:\zm.ssa") #加载片源并挂字幕
tx=avisource("c:\tx.avi",audio=false) #加载特效
py.trim(0,360)+tx+py.trim(2520,35963) #用特效代替片源中的部分
[/code]
和前面相比,又多了一些东西。在加载片源语句中,多了一个audio=false,这个的意思是加载片源的时候不加载音频。以此类推,加载特效的时候也没有加载音频。音频的话可以在最后压制好再混合。这样就直接在AVS里面禁掉了音频,不用在VDM里面选audio->No audio了。加载语句的后面跟了一个点,然后是加载字幕。点的作用是分割,意思是加载好片源以后紧跟着挂字幕。为的是写在同一行。写在同一行的理由在这一行的开头,就是那个py=。它的意思是这一整行出来的结果用py表示。下面的也是,特效加载好以后用tx表示。接下来是最后一句。py.trim(0,360)的意思是在py中截取第0帧到第360帧。因为片源要替换的部份是从361帧开始的,我们不能把要替换的部分截出来,py.trim(2520,35963)的意思是把片源的2520帧到35963帧截出来。加号表示连接。连起来,最后一行就是先把输出py的0-360帧输出,然后输出tx,tx输出完了就把py的2520-35963输出。这样看起来,就是py中361-2519的那部分没掉了,取而代之的是tx。这样,特效就用进去了,然后送到VDM压制。
总结:这一次介绍的AVS内容归纳起来有以下几点:(中括号内表示可有可无)
[code]
loadplugin("插件文件的位置、文件名") #加载AVS的插件
avisource("文件名"[,audio=false]) #加载AVI文件,可以用audio=false禁止加载音频部分
trim(起始帧,终止帧) #截取片段
textsub("字幕文件名") #AVS插件VSFilter中的语句,加载字幕
[/code]