版面规则
提问时请注意:尽量详细描述操作过程、AVS脚本内容等,最好能写出片名,只贴图有时无法看出问题原因。
提示:发布原创内容请尽量使用附件上传。使用网盘会出现过期失效的问题,请注意。
头像
12345大黑
帖子: 13
注册时间: 2017-03-04 12:59

【已解决】请教ConditionalFilter和ConditionalReader的使用

ConditionalFilter的wiki:
ConditionalFilter(clip testclip, clip source1, clip source2, string expression1, string operator, string expression2 [, bool show] )
ConditionalFilter returns source1 when the condition formed by expression1+operator+expression2 is met for current frame, otherwise it returns source2. If any function in expression1 or expression2 is not explicitly applied to a clip, it will be applied on testclip.


我大概理解是这样:当前帧满足expression1+operator+expression2这个条件时,返回s1,否则返回s2。如果expression1 or expression2,将应用于testclip。(小学三年级英语水平)

ConditionalReader的wiki:
ConditionalReader(clip clip, string filename, string variablename [, bool show ] )
参数:文件名,变量名
R 59551 59597 3 #表示从59551到59597帧的value=3


看如下栗子:
疑问1:fix.txt是手写还是通过某个滤镜生成?
疑问2:"SceneType", "<", "1"的意思是当前帧的value小于1时,应用fix1(感觉不对。。。),求教正确含义
疑问3:待定。。。


FFVideoSource("F:\6encode\Source.mkv").Crop(0,140,0,-140)
fix1=last.FillMargins(0,1,0,2).BalanceBorders(2,2,0,0).f3kdb(grainY=10, dynamic_grain=true)
fix2=last.f3kdb(range=25,grainY=10,Y=100)
fix3=last.f3kdb(grainY=10, dynamic_grain=true)
ConditionalFilter(last, fix1, "SceneType", "<", "1")
ConditionalFilter(last, fix2, "SceneType", "<", "2")
ConditionalFilter(last, fix3, "SceneType", "<", "3")
ConditionalReader("fix.txt", "SceneType")

#fix.txt

type int
default 0

R 0 590 1
R 776 952 2
R 59551 59597 3
R 60291 60538 3
R 61931 61951 3
R 62333 62771 3
R 65767 66044 3
R 66415 66501 3
R 66759 67051 3
R 67179 67258 3
R 68555 68660 3
R 70340 70477 3
R 70710 70799 3
R 70913 71295 3
R 76812 76877 3
R 95639 95690 2
R 115649 115939 2
R 130207 130304 3
R 133493 133541 3
R 156220 156261 3
R 172148 172185 3
R 174572 174755 3
R 180965 181162 3
R 183450 183540 3
上次由 12345大黑 在 2017-03-09 15:13,总共编辑 1 次。
头像
12345大黑
帖子: 13
注册时间: 2017-03-04 12:59

Re: 请教ConditionalFilter和ConditionalReader的使用

个人测试结果如下:
avs:
LoadPlugin("ffms2.dll路径")
FFVideoSource("sorce.mkv.ffindex路径", fpsnum=24, fpsden=1, threads=1)
a=last.subtitle("A",y=37).FFInfo(cfrtime=false,vfrtime=false)
b=last.subtitle("B",y=37).FFInfo(cfrtime=false,vfrtime=false)
c=last.subtitle("C",y=37).FFInfo(cfrtime=false,vfrtime=false)
ConditionalFilter(last, a, "SceneType", "<", "1")#表示valu=1,返回a
ConditionalFilter(last, b, "SceneType", "<", "2")#表示valu=2,返回b
ConditionalFilter(last, c, "SceneType", "<", "3")#表示valu=3,返回c
#表示valu=0,返回a
ConditionalReader("fix.txt路径", "SceneType")


结果:
0
1 A效果
2 B效果
3 C效果



以下为fix.txt内容:
#source的全帧value=0,1,2,3
#fix.txt

type int
default 0

R 0 590 1
R 776 952 2
R 59551 59597 3
R 60291 60538 3
R 76812 76877 3
R 95639 95690 2
R 115649 115939 2
R 130207 130304 3

回到 “AviSynth”