单个脚本没有其他工具要求,输入的两个视频满足avisynth的Splice处理的条件就行。
用法:
FilterCompare(clip input, clip filtered, int "frame", bool "info")
input:必须的参数,滤镜处理前的clip
filtered:必须的参数,处理后的clip
frame:指定需要对比的单帧帧号,非必须参数。如果不设置的话为按照每一帧先处理前的再处理后的交替出现的帧序输出(总帧数变成两倍),即 input_0、filtered_0、input_1、filtered_1、input_2、filtered_2、... 这样的顺序,无默认值。
info:左上方显示Info()的内容,右上、左下、右下显示Original/Filtered的字样方便知道是哪一帧。默认false即不显示。
例1:
代码: 全选
AviSource(xxx.avi)
#总帧数为100帧
FilterCompare( blur(0.5), info=true )
#显示原始画面与blur()处理画面的对比,每一帧的处理前后画面交替出现,开启info显示,总帧数为200帧
代码: 全选
AviSource(xxx.avi)
FilterCompare( blur(0.5), 50 ) #显示源与处理后的第50帧画面的对比,总帧数为2帧
下载:
MF:FilterCompare_v0.1.avsi
115:FilterCompare_v0.1.avsi
或者直接复制脚本保存为avsi:
代码: 全选
Function FilterCompare(clip input, clip filtered, int "frame", bool "info"){
Assert( input.width==filtered.width && input.height==filtered.height,
\ "FilterCompare: two clips must have same resolution!!" )
info = Default( info, false )
w = input.width
h = input.height
input = info ? input.Info()
\.Subtitle("Original", x=w-62, y=1)
\.Subtitle("Original", x=w-62, y=h-21)
\.Subtitle("Original", x=3, y=h-21)
\ : input
filtered = info ? filtered.Info()
\.Subtitle("Filtered", x=w-60, y=1)
\.Subtitle("Filtered", x=w-60, y=h-21)
\.Subtitle("Filtered", x=3, y=h-21)
\ : filtered
return !Defined(frame) ? Interleave(input, filtered) :
\ (frame==0) ? input.Trim(0, -1)++filtered.Trim(0, -1) :
\ input.Trim(frame, frame)++filtered.Trim(frame, frame)
}