我正在使用ffmpeg来创建循环视频,其中循环完全平滑,与在所有帧之间移动相同。 我有27个图像,其中一个在另一个图像中变换,因此帧0 =帧27 我在图像之间使用-vf minterpolate = fps = 30,因此转换非常流畅。我有-framerate 10,所以在理论上插值过滤器会创建3个额外的帧。所以我删除了第27帧并创建了一个视频
ffmpeg -framerate 10 -start_number 0 -i ./motion/%d.png -vf“minterpolate = fps = 30”
但是当它循环时,0和最后一帧之间没有过渡,并且它不平滑。如何在循环之间创建平滑过渡?我试图离开第27帧,当粘合视频时,删除最后一帧,这是重复的。但是不知道如何只切一帧,失败的时候。
请帮助我使用minterpolate过滤器进行平滑循环。
答案 0 :(得分:1)
如果我理解正确,那么当它循环时,从最后一帧到第一帧没有插值。快速解决方案是复制第一帧并重命名它以使其成为最后一帧。因此,如果1.png是第一个图像而27.png是最后一个,则将1.png复制为28.png。现在,运行当前命令。在循环关节处,您将有一个重复的1 / 28.png的额外帧。这将使视频持续时间增加0.033秒。如果您需要将其删除,请在minterpolate之后应用trim=end_frame=83
。
答案 1 :(得分:0)
我解压后将视频插回到帧中,看到在开始时,第一帧之间出现问题。也许minterpolate会跳过一些东西,但是我使用trim = start_frame = 81:end_frame = 162来解决它,所以我生成了两次以上的图像并在第一次循环后将其剪切掉。我知道,这是开销,并尝试添加3-4个额外的帧,但只有这个组合运作良好。
@Mulvya,谢谢你的答案,你帮助了我很多