|
[table][tr][td]
在视频压制过程,绝大部分都需要进行后期的优化,而不是直接进行视频的裸压。
AVS滤镜算是一种很常见的优化滤镜。
大致工作原来:
原始视频——AVS滤镜——x264编码器——压制视频
例如:"C:\x264.exe" --crf 15 --ref 5 --subme 9 --b-adapt 2 --bframes 9 -o "Z:\Desktop\01.mkv" "C:01.avs"
裸压则是:
原始视频——x264编码器——压制视频
视频压制教程在这里:
http://www.tsdm.me/forum.php?mod ... &extra=page%3D1
AVS针对视频内每一帧图像进行操作,不会去编码视频。
因而一个写好的AVS脚本,也可以直接给播放器使用。
至于放出来流不流畅,全看硬件的性能了。
AVS的优点,我感觉就是比较容易上手,非常容易就能学会。
缺点的话,好像是只能在windows平台上运行。
曾经有位高人在wine下配置成功了AVS的运行环境,这说明有wine的话,Linux、Unix都是可以跑起来的。
(PS:我是没成功配置出来)
下面开始介绍AVS脚本的编写
首先,先要安装AVS软件以及各种播放器插件。
播放器插件其实就是装一个播放器就可以解决。
推荐完美解码和终极解码。
如果还有别的播放器的话,卸载时候一定要注意了,千万不要把共用部分一起删掉。
(AviSynth、终极解码(或完美解码)、VC++、NET、DX等插件要配全)
随后建立一个txt文本,将后缀改为avs即可,然后就可以在文本中进行脚本的编写了。
例:
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\UnDot.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\mt_masktools-26.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\mvtools2.dll")
import("C:\Program Files\AviSynth 2.5\plugins\SMDegrain v.2.2d.avsi")
DirectShowSource("Z:\Desktop\00.mkv", fps=23.976, audio=false, convertfps=true).AssumeFPS(24000,1001)
#trim(0,2356)
#crop( 240, 0, -240, 0)
undo()
SMDegrain(pel=4)
这是一个完整的AVS脚本(PS:不许吐槽DSS)
其中#为单行注释,和C里面的\\一样。
可以将这段代码分成三个部分:
第一个部分为滤镜的加载:
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\UnDot.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\mt_masktools-26.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\mvtools2.dll")
import("C:\Program Files\AviSynth 2.5\plugins\SMDegrain v.2.2d.avsi")
LoadPlugin用于读取滤镜,上面代码就是读取undo.dll这个滤镜。
import用于载入其他是AVS脚本。
如果不愿意输入绝对路径的话,也可以建立一个工作区域:
SetWorkingDir("C:\Program Files\AviSynth 2.5\plugins")
LoadPlugin("UnDot.dll")
import("SMDegrain v.2.2d.avsi")
滤镜加载不会影响压制速度,也不会占用内存(如果没有用到的话)。
所以写的时候,多了也是没有关系的。
第二部是载入视频:
DirectShowSource("Z:\Desktop\00.mkv", fps=23.976, audio=false, convertfps=true).AssumeFPS(24000,1001)
载入视频的这个DSS其实也可以算是一个滤镜。这个滤镜的任务就是载入视频,滤镜需要什么参数,可以上网去查找相关的信息。
这里推荐AvsPmod这个软件,这个软件可以对AVS脚本进行纠错,滤镜输入的参数提示等等。
导入视频的滤镜有:mpeg2source、avisource、WAVSource。。。。等等,跑出来没BUG为基准。
(AVS官网上不去的话,翻墙吧。。。。)
第三部分就是滤镜的运算了:
需要注意的是,AVS滤镜是有先后顺序的,所以加载滤镜前先要考虑好每步都要做什么。
最好每加载一个滤镜都看一下效果如何。
如果要进行分段加载的话,每段选择不同的滤镜来进行拼接,可以写成这样:
a=DirectShowSource("Z:\Desktop\00.mkv", fps=23.976, audio=false, convertfps=true).AssumeFPS(24000,1001).trim(0,1000)
b=DirectShowSource("Z:\Desktop\00.mkv", fps=23.976, audio=false, convertfps=true).AssumeFPS(24000,1001).trim(1001,2000).SMDgerain()
return a+b
或者
c=a+b
return c
注意:a+b与b+a是不同的,有先后顺序。
trim是视频截取函数,0是视频的第一帧,所以0~1000是1001帧
下面说说常见的一些错误:
1.AvsPmod可以正常预览,但是使用命令行给x264编码器时却提升报错。
这种情况看看是不是avs脚本、x264编码器等是否存在路径问题,比如说在cmd下调用一个系统不知道在什么地方的程序(PS这种情况一般不存在)
2.如果导入avsi文件的话,很可呢个需要多个滤镜的支持。
例如:SMDegrain需要mvtools和masktools这两个滤镜。
如果不知道需要什么滤镜,传递给x264或者任意的AVS脚本预览器都会有错误提示的。
例如什么.avsi第多少行的什么函数没有找到之类的。
PS:AVSI文件也是可以用记事本打开的,一般里面会包含需要的滤镜信息,以及详细的参数说明。
3.AVS传递给x264编码,只编码了很少的不一部分就提升报错,或者直接上来就报错,又或者等了好久都没看见cmd里面有输出信息。
这类情况一般来说就是滤镜加载的太多了,内存无法分配了(32位很常见)
下面介绍几个常用的AVS滤镜:
trim视频帧截取。
crop(0,0,0,0)视频剪裁,例如1920x1080剪裁成1440x1080,crop( 240, 0, -240, 0)
QTGMC.avsi
可以用于反交错,例如:QTGMC(preset="slow",fpsdivisor=2)
反交错的作用是除去视频的拉丝现象。
SMDegrain.avsi
去噪滤镜,效果很强力,细节保留也很好。
一般裸用两个就可以让画面变得非常干净。
flash3kyuu_deband.dll
用于去除色带色块,用法:f3kdb(10)
gradfun2db.dll
GradFun2DBmod.avsi
这两个也是除去色带、色块的,威力比较大。
所以号称是毁容大杀器。。。
LimitedSharpenFaster.avsi
LimitedSharpenFaster(strength=150)
锐化滤镜,可以让轮廓线变得更加锐利,太高的话,会造成浮雕质感。
WarpSharp.dll
warpSharp(depth=,blur=,bump=,cubic=)
收线,也就是边线细化,也是起到锐化的作用。
和LimitedSharpenFaster都会造成色带色块的产生。
deen.dll
去噪滤镜,如果不在乎视频细节的话,这个滤镜性价比非常高。
速度很可能是SMD的几倍。
AVS的其他用途上,还可以制作内嵌字幕,就是把字幕压制到视频图层里面,和视频合为一体。(TextSub)
加载字幕时候一定要注意,是否所有文字都有字体,否侧没有字体的文本就会显得很尴尬了。
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\VSFilter.DLL")
DirectShowSource("Z:\Desktop\Picture Drama 1.mkv")
TextSub("Z:\Desktop\Picture Drama 1 chs.ssa")
做成内挂外挂多好,方便自己,方便大家。。。。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |