VCB-Studio教程06VapourSynth基础与入门-VCB-Studio教程专栏.PDFVIP

VCB-Studio教程06VapourSynth基础与入门-VCB-Studio教程专栏.PDF

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VCB-Studio 教程 06: VapourSynth 基础与入门 0. 前言 BDRip 压制的核心是批处理,会使用 avs/vs 对片源做预处理,是一个动漫 ripper 的入门。历史上,AviSynth 是 最早成体系的,为动漫 Rip 设计的非编。而VapourSynth 在 2014 年初基本完善可用,现在逐步替代 AviSynth。 想学习的人都会碰到这个问题:如果我只学一个,我该学哪个?如果我两个都学,我需要先学哪个?解答这个问题 就需要先对比一下 avs 和 vs 的优劣: avs 落后,vs 先进; avs 教程多,vs 教程少; avs 支持广,vs 支持窄; avs 不规范,vs 规范; avs 入门简单,深入难,vs 入门难,深入简单 …… VCB-Studio 系列教程选择先介绍 VS ,原因在于,VS 是现在 vcb-s 的主要产能,而且vs 的规范性使得介绍基础知 识的时候,更容易让初学者理解和掌握。 VapourSynth 主页:/ 官方使用文档:/doc/ 在线词典:/ 1. 简单的 vs 脚本 在之前的教程中,我们有给过例子: import vapoursynth as vs import sys import havsfunc as haf import mvsfunc as mvf core = vs.get_core(threads=8) core.max_cache_size = 2000 source = 00001.m2ts ripped = Symphogear Vol1-1.mkv src16 = core.lsmas.LWLibavSource(source,format=yuv420p16) rip16 = core.lsmas.LWLibavSource(ripped,format=yuv420p16) res = core.std.Interleave([src16,rip16]) res = mvf.ToRGB(res,full=False,depth=8) res.set_output() 作为 Python 的一个扩展,vs 脚本本质上是 Python 的脚本。在最开始我们需要载入(import)各种库,除了必须的 VapourSynth 核心,还有 mvf(mavens VapourSynth functions) 和 haf(holys VapourSynth functions) core = vs.get_core(threads=8) core.max_cache_size = 2000 这两句是载入 vs 运行环境,并且指定最大使用线程数和内存(MB ) 接下来的部分,vs 主要依赖赋值语句完成。一个赋值语句的格式为: 变量 = 表达式 比如 source, ripped, src16, res 等就是变量。Python 的变量不需要声明,自动会判断是视频系列(clip) ,整数(int) , 还是字符串(string)等类型。 表达式,则有多种形式: . 直接赋值,比如 source = 00001.m2ts, debug = True, res = dbed 这种直接用值来给定的 ,值可以是具体 的数值,值可以是具体的数值,也可以是其他的变量(比如 res = dbed, dbed 就是另一个变量); . 简单运算,比如 strength = 80/100 ,output_depth = debug?8:10 这样的运算; 这里详细讲一下表达式 A?B:C 的计算。A 叫做判断式,必须是一个布尔类型的表达式(只有True/False, 或者 1/0 ), B 和 C 则是可能返回的值。 x = A?B:C 等效于 if (A) x=B; else x=C; 如果 A 成立,则 x 赋值为 B ,否则x 赋值为 C 比如说: False?0:1 返回的是 1 ,因为判断式不成立,所以返回两个值中的后者 debug?8:10 如果 debug 是 True/1 ,则返回 8 ,否则返回10 x10?10:x100?100:200 是一个嵌套性的语句;拆开来看: if (x10) return 10; else if (x100) return 100 else return 200 当x 小于 10 的时候,返回 10 ;当x 在 10-99 的时候,返回 100 ,否则,返回200 . 函数赋值,res = core.std.Interleave([src16,ri

文档评论(0)

zhaoxiaoj + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档