似乎解散和/或淡出会改变.avs脚本中的帧总数。当我将avs脚本中的总帧数相加,然后在Vdub中加载avs脚本时,帧的总数是不同的。下面的实际示例显示了同一脚本的822帧与1368帧之间的差异。我做了一些基本的测试,似乎支持这个假设。当然我可能在做傻事。如有任何指导,将不胜感激。如果我能澄清什么,请告诉我。Ffmpeg也使用相同的脚本,这使我认为这是Avisynth问题。或者我缺乏avs编码技巧。
系统规范: Win7,FFmpeg版本:20170223- 2.6 3418 win32 shared,AVISynth版本:2.6
Test1.avs = 200帧 long =预期行为
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\VSFilter.dll")
v1=ImageReader("1.png", fps=24, start=1, end=100)
v2=ImageReader("2.png", fps=24, start=1, end=100)
video = v1 + v2
return videoTest2.avs与返回溶解= 195帧 long =意外行为
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\VSFilter.dll")
v1=ImageReader("1.png", fps=24, start=1, end=100)
v2=ImageReader("2.png", fps=24, start=1, end=100)
return Dissolve(v1, v2, 5)带有fadeOut的Test3.avs (fadeIn= 202帧 long =意外行为
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\VSFilter.dll")
v1=ImageReader("1.png", fps=24, start=1, end=100)
v2=ImageReader("2.png", fps=24, start=1, end=100)
fadeOut(fadeIn(v1 + v2, 60), 60)Test4.avs具有溶解和淡出= 197帧 long =意外行为
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\VSFilter.dll")
v1=ImageReader("1.png", fps=24, start=1, end=100)
v2=ImageReader("2.png", fps=24, start=1, end=100)
v3 = Dissolve(v1, v2, 5)
fadeOut(fadeIn(v3, 60), 60)Test5.avs的可解释性,指定在溶解和淡出时的帧速率= 197帧=意外行为
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\VSFilter.dll")
v1=ImageReader("1.png", fps=24, start=1, end=100)
v2=ImageReader("2.png", fps=24, start=1, end=100)
v3 = Dissolve(v1, v2, 5, 24)
fadeOut(fadeIn(v3, 60, $000000, 24), 60, $000000, 24)realExample = 822帧 long =预期行为(这是我想要的)
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\VSFilter.dll")
v1=ImageReader("1.png", fps=24).trim(1,106)
v3=ImageReader("3.png", fps=24).trim(1,471)
v9=ImageReader("9.png", fps=24).trim(1,58)
v10=ImageReader("10.png", fps=24).trim(1,35)
v11=ImageReader("11.png", fps=24).trim(1,152)
video = v1 + v3 + v9 + v10 + v11
return videorealExample = 1368帧 long
LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\VSFilter.dll")
v1=ImageReader("1.png", fps=24).trim(1,106)
v3=ImageReader("3.png", fps=24).trim(1,471)
v9=ImageReader("9.png", fps=24).trim(1,58)
v10=ImageReader("10.png", fps=24).trim(1,35)
v11=ImageReader("11.png", fps=24).trim(1,152)
d1 = Dissolve(v1, v3, 5)
d3 = Dissolve(v3, v9, 5)
d9 = Dissolve(v9, v10, 5)
d10 = Dissolve(v10, v11, 5)
fadeOut(fadeIn(d1 + d3 + d9 + d10,60),60)发布于 2017-05-07 20:21:54
你说你的一些结果给出了“意想不到的行为”,但你没有具体说明你期望它们是什么,所以不清楚你认为什么是错误的,你的误解在哪里。(在讨论问题时,你应该始终说明你得到了什么结果,你期望得到什么结果。)
在您的Dissolve示例(Test2.avs)中,您说195个帧是意外的,但这在我看来是正确的。“溶解”两个剪辑在一起意味着一个剪辑的结尾与第二个剪辑的开头重叠,因为一个剪辑逐渐消失到另一个剪辑中;这与把第一个剪辑淡出,然后在第二个剪辑中逐渐褪色是不一样的。重叠意味着结果必须小于剪辑的单个长度之和。您组合了两个100帧剪辑,并指定了一个5帧重叠,所以100 +100-5= 195.
在您的FadeOut示例(Test3.avs)中,您说202个帧是意外的,但对我来说也是正确的。FadeOut状态的文档:
在开始/结束时添加一个额外的彩色帧,从而使总帧数增加一个(或FadeIO,增加两个)。
由于您对FadeIn进行了一次调用,在test3.avs中对FadeOut进行了一次调用,因此添加了两个额外的帧。如果您不想这样做,那么您可以使用FadeIn0/FadeOut0 (或FadeIO0,因为两者都使用),但请注意,对于这些函数,第一个/最后一个帧并不完全是黑色的。如果您想要精确,那么在使用普通的FadeIn/FadeOut/FadeIO函数之前,只需修剪第一个和/或最后一个帧即可。
你的“真正的例子”是把苹果和橘子作比较。带有Dissolve的版本显着增加了帧数,因为它多次合并相同的剪辑
d1 = Dissolve(v1, v3, 5)
d3 = Dissolve(v3, v9, 5)
...
fadeOut(fadeIn(d1 + d3 + d9 + d10,60),60)d1和d3分别包含v3剪辑的一个副本,然后在最后将d1和d3拼接在一起,这意味着v3包含了两次。( v9和v10也是如此。)
你可能打算做这样的事情:
video = Dissolve(v1, v3, 5)
video = Dissolve(video, v9, 5)
video = Dissolve(video, v10, 5)
video = Dissolve(video, v11, 5)
video = FadeOut(FadeIn(video, 60), 60)或者更简洁地说:
video = FadeIO(Dissolve(v1, v3, v9, v10, v11, 5), 60)结果应该是804帧长:(822帧从原始剪辑)-(4个溶解点)* (5帧重叠每溶解)+ (2帧来自FadeIO)。
如果您实际上想通过淡出和淡入来组合剪辑,那么您可以通过以下操作来保留原始帧计数:
video = FadeIO0(v1, 60) \
+ FadeIO0(v3, 60) \
+ FadeIO0(v9, 60) \
+ FadeIO0(v10, 60) \
+ FadeIO0(v11, 60)https://stackoverflow.com/questions/43704692
复制相似问题