似乎Dissolve和/或Fade改变了.avs脚本中的总帧数。当我在avs脚本中添加总帧数然后在Vdub中加载avs脚本时,总帧数不同。我下面的真实世界示例显示了相同脚本的 822帧与1368帧的差异。我已经进行了一些似乎支持这一假设的基本测试。当然,我可能会做一些愚蠢的事情。任何指导将不胜感激。如果我能澄清任何事情,请告诉我。 Ffmpeg也对同一个剧本进行了抨击,这让我觉得这是一个Avisynth问题。或者我缺乏avs编码技能。
系统规格: Win7的, FFmpeg版本:20170223-dcd3418 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 video
带返回的Test2.avs Dissolve = 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帧长=意外行为
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 with dissolve and fade = 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明确指定dissolve和fade上的帧速率= 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 video
realExample = 1368帧长
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)
答案 0 :(得分:0)
你说你的一些结果给出了“意想不到的行为”,但你没有说明你的预期,所以不清楚你认为哪些是错的,你的误解在哪里。 (在讨论问题时,你应该总是陈述你得到的结果以及你期望的结果。)
在Dissolve
示例(Test2.avs
)中,您说195帧是意料之外的,但这对我来说听起来是对的。将两个夹子“溶解”在一起意味着一个夹子的末端与第二个夹子的开头重叠,因为一个夹子逐渐淡入另一个夹子;这与淡出第一个剪辑然后在第二个剪辑中淡出不同。重叠意味着结果必须短于剪辑各个长度的总和。您组合了两个100帧剪辑并指定了5帧重叠,因此100 + 100 - 5 = 195。
在FadeOut
示例(Test3.avs
)中,您说202帧是意料之外的,但这对我来说也是正确的。 FadeIn
/FadeOut
州的文档:
在开始/结束时添加了一个额外的颜色框,从而将总帧数增加一个(或者对于FadeIO,增加两个)。
由于您在FadeIn
中拨打了FadeOut
和拨打test3.avs
一个电话,因此添加了两个额外的帧。如果您不想这样做,那么您可以使用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帧重叠)+(FadeIO
2帧)。
如果你真的想通过淡出然后淡入来组合剪辑,那么你可以通过这样做来保留原始帧数:
video = FadeIO0(v1, 60) \
+ FadeIO0(v3, 60) \
+ FadeIO0(v9, 60) \
+ FadeIO0(v10, 60) \
+ FadeIO0(v11, 60)