Top

本地磁盘小日记ヾ(≧▽≦*)ゝ

世界无限大.且行且珍惜w~
编码.计算机视觉.网络.语言.绘图在学/M2F/各种发烧友/死宅/见习天使w;

教程:画帧处理合成软件AviSynth初体验;

在操作一些非线性的视频编辑软件的时候,我们完成操作后一般都会对编辑好的视频在软件当中进行预览。在此期间我们并没有真正的对编辑好后的视频进行生成操作,却可以实时预览出编辑后的效果。这个过程可以简化地描述为:(源视频)+(编辑的各种操作)=(播放器输出预览效果)。那么读取我们的编辑并且应用到源视频再输出给播放器的呢?答案就是画针处理器了。

AviSynth是一款由Ben Rudiak-Gould于2000年利用C++语言编写的一款开源画帧处理器。它的主要功能是通过读取你的处理操作(你创建的脚本文件中的代码命令)后操作滤镜,再通过系统的媒体处理api(如Win下的DirectShow)将被滤镜实时控制的源视频输出给播放器的。


使用它处理数字视频有很多优点:

1.开源:意味着有更多的人愿意为avisynth添加版本.更新.功能.滤镜以及维护等!;

2.快速:类似C++等高级语言语法,只要有一点儿编程语言基础即可快速上手!代码编辑一旦掌握效率不会比编辑软件差。而且可移植性强,不但是平台移植性,还可以免受传统编辑程序臃肿的困扰;

3.灵活:几乎通吃所有数字视频格式,可以利用它输出给本地播放器所不支持或打不开的文件。脚本链接无限制,你可以链接任意多的媒体文件和滤镜同时进行处理。压制无限制,x264等主流压制程序兼容avs脚本。灵活性可见一斑;

4.轻量:软件本体非常小巧,且在使用过程中不会产生缓存文件;


AviSynth的历史及获取它:

AviSynth(AVI SYNTHesizer)最早由Ben在2000年开发,发布在著名的DVDRip论坛Doom9上。不过他在发布v1.0b后不再进行更新,后续版本由Edwin van Eggelen继续开发。后来参与开发的人越来越多,最终衍生出了非常非常多的版本。

而目前最常见的版本有三个:

1.avisynth 2.6.0

2.avisynth+

3.Vapours Synth

1感觉是血统比较纯正的版本(误),它提供了免安装版和安装版两个版本。这里我们不建议初学者在一般情况下使用免安装版本,因为它容易引起版本冲突和各种注册和路径的混乱。你可以在github上找到它们。

2也是衍生版本之一,不过只有安装版本,还有有用github空间搭建的官方站点http://www.avs-plus.net/%EF%BC%8C%E5%B0%B1%E7%94%A8%E5%AE%83%E5%90%A7%E3%80%82

3.其实严格说并不属于衍生版本了,它采用了新的思想以及python写出的新一代合成器http://www.vapoursynth.com/ ,与avisynth功能一样但并不通用,我们下次文章在讨论它。

关于ST和MT版本: ST是单线程处理版本,MT是多线程处理版本。不过官方只提供了ST版本,MT版本为衍生版本。

关于32/64位的选择以及各个平台版本: 在这里我们建议还是装32位版本(因为支持的滤镜多!)。需要知道的是,选择32位版本建议播放器和编码器也选择32位版本,系统可以是64位的(废话)。如果想通过x264等64位编码器读取32位synth的话,你就需要借助avs4x264这样的pipe工具了。

linux版本为衍生的移植版本,目前有ubuntu版,你也可以尝试通过github获取源码在其它发行版中编译一下试试。大多数都是Win版本,也有MacOS的版本。


开始使用!通过AVSP与其它编辑器:

一般编程语言或者脚本都会有衍生的IDE或者编辑器等,avisynth也是有的,它叫AVSPmod或AVSP,它可以为你提供实时预览,语法补全等等实用功能。当然,你也可以使用notepad或者vscode等等编辑软件书写你的AVS脚本。

安装好avisynth后,我们在桌面上创建一个名为"test.avs"的空文件,使用随便一个编辑器编辑如下内容并保存:

1
Version

然后把这个avs文件通过WindowsMediaPlayer或者是MPC.Pot.KM等媒体播放软件打开(注:win下不要用vlc,它通常会通过libvlc而不通过DS解码..),你会发现播放器会预览出一个10秒钟宣告AVS版本号及版权信息内容的视频片段。

现在把文件改成:

1
2
Version
FadeOut(10)

再次播放,你会发现视频的后10秒钟会出现一个淡入黑色的效果。

现在把文件再改成:

1
2
3
Version
FadeOut(10)
Trim(100,150)

再次播放你会发现视频的长度缩短了,这句话的意思就是读取Version的100帧到150帧。

你也可以把Version去掉,加入:

1
AVISource("d:\capture.avi")  #这里写你实际的路径和文件

试一试,把路径替换成你本地的文件。


文章到此我相信你已经对AviSynth有惹初步的了解,我会在以后的文章当中陆续介绍关于我对AviSynth的更多功能,滤镜用法,常见问题,实现原理以及二次开发等等相关折腾的文章,感谢你的阅读!


感谢nmm-hd论坛,amefs.net以及doom9论坛在我学习DIP的期间以及折腾各种解码器和ffmpeg时让我无意间接触到了DVDRip,让我打开了新世纪的大门。


@本地磁盘姬

ohayou.aimo.moe

微博:@本地磁盘姬碟酱

Twitter:@AmyGreen

2018年11月17日