网站大量收购独家精品文档,联系QQ:2885784924

[VCB-Studio][教程07]AviSynth基础与入门.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

VCB-Studio教程07:AviSynth基础与入门

0.前言

这篇教程需要教程6:VS基础与入门作为前置

尽管avs早于vs存在了十几年,上手写一个helloworld级别的脚本也比vs容易,但是avs混乱的参数传递机制,使得想深入学习avs的使用,比vs其实来的困难。本教程假定你通过vs教程,已经对变量、参数传递等有了最基本的认识,这样,当我们讨论avs特有的一些机制的时候,不至于从零开始。

AviSynth主页和文档:http://avisynth.nl/index.php/Main_Page

AviSynth+主页和文档:/

在线词典:/

avs目前最新版是avs2.6.0,只有32bit;

avs+是avs的一个改良mod,优势在于,有官方64bit版本。

尽管以vcb-s对于avs+的使用,全局64bit化是可行的,但是因为懒,所以直到转vs之前,vcb-s一直使用32bit版本的avs。如果你希望使用64bit的avs,建议使用avs+。

有vs的存在,avs的意义不是很大,至少作为定位高质量、复杂处理的压制,vs优秀的内存管理机制、原生的多线程优化,和各种新科技滤镜,让它对比avs已然优势明显。但是vcb-s系列教程依旧讲述avs,因为很多以前的教程和脚本是基于avs的,我们需要保证大家能理解并继承上个时代的智慧结晶。

1.简单的avs脚本

以下是一个简单的脚本,以YUV420P16的格式读入一个mkv,并转为RGB32显示:

SetMemoryMax(1000)

a=00000.mkv

LWLibavVideoSource(a,format=yuv420p16,stacked=true)

dither_convert_yuv_to_rgb(chromak=lanczos,taps=4,noring=true,lsb_in=true)

avs原生不支持多线程,但是支持设置最大使用内存。这里我们用setMemoryMax()来设置最大使用1000MB。

除了系统设置(比如setMemoryMax),avs的主要内容一般由两种语句构成:赋值句和输出句。

赋值句的含义和vs的赋值句大致相同,表现为变量=表达式的结构。比如a=00000.mkv就是一个赋值句。

avs的函数不再有各种域,只要载入了,直接就可以用。avs的函数一般来自两种地方,第一种是滤镜原生dll,第二种是写好的库,后缀名为avsi。这两个种文件一般放在avs根目录的plugins文件夹内,这样avs就可以自动载入。

输出句,表现为直接将表达式作为一行,比如:

LWLibavVideoSource(a,format=yuv420p16,stacked=true)

dither_convert_yuv_to_rgb(chromak=lanczos,taps=4,noring=true,lsb_in=true)

这两句就是两个输出句。

avs中,随时随地维护一个叫做last的clip,这个clip要么为空值,要么记录上一个输出类型为clip的输出句,输出的结果:

SetMemoryMax(1000)-这句是系统设置,不产生last

a=00000.mkv-这句是赋值句,不产生last

LWLibavVideoSource(a,format=yuv420p16,stacked=true)-这句结束后,last为lwlvs载入的YUV视频

dither_convert_yuv_to_rgb(chromak=lanczos,taps=4,noring=true,lsb_in=true)-这句结束后,last为dither_convert_yuv_to_rgb转为的RGB24

虽然语法上,avs允许输出句输出非clip的类型,但是last并不会去记录。一般而言,也没有必要写出非clip输出的输出句。

avs结束的时候,输出最后一个输出句的结果,相当于输出last。如果last为空(全程没有一个clip类型的输出句),返回效果是NotaClip的报错信息。

2.AVS函数的调用和参数传递

无论是赋值句,还是输出句,avs进行运算主要也是通过函数进行的。函数的调用,以及参数的传递,跟vs有类似性。比如我们看LWLibavVideoSource的doc:

LWLibavVideoSource(stringsource,intstream_index=-1,intthreads=0,boolcache=true,intseek_mode=0,intseek_threshold=10,booldr=false,intfpsnum=0,intfp

文档评论(0)

158****5542 + 关注
实名认证
内容提供者

教师资格证持证人

24小时提供说明书查找服务。

领域认证该用户于2023年12月02日上传了教师资格证

1亿VIP精品文档

相关文档