将缩放与淡入淡出相结合ffmpeg

将缩放与淡入淡出相结合ffmpeg

我一直在尝试通过互联网上找到的所有教程来使用 FFmpeg,但我有点困惑如何将缩放效果与一系列图像的淡入淡出效果结合起来。

在将我找到的一些例子结合起来后,得到了以下结果,但看起来我得到的结果是有顺序的,而不是我所想的那样。

任何能为我指明正确方向的指示都将不胜感激。

ffmpeg \ 
-loop 1 -t 5 -i input/slideshow/img0001.jpeg 
-loop 1 -t 5 -i input/slideshow/img0002.jpeg \
-loop 1 -t 5 -i input/slideshow/img0003.jpeg \
-loop 1 -t 5 -i input/slideshow/img0004.jpeg \
-filter_complex \
"[0:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=out:st=4:d=1[v0]; \
 [1:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \
 [2:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \
 [3:v]zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125,fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \
 [v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" -map "[v]" -s "800x450" -t 40 output/out_fade.mp4

答案1

将缩放与淡入淡出相结合ffmpeg

您给出的示例ffmpeg实际上只需很少的修改就可以工作(保留-loop导致的段错误:“ Error in 'ffmpeg': double free or corruption (!prev): 0x0000000008dffa00”)。

因此我们有:

ffmpeg \
-t 5 -i 1.jpg \
-t 5 -i 2.jpg \
-t 5 -i 3.jpg \
-t 5 -i 4.jpg \
-filter_complex \
“[0:v]zoompan=z='如果(lte(缩放,1.0),1.5,max(1.001,缩放-0.0015))':d=125,淡入淡出=t=out:st=4:d=1[v0];\
 [1:v]zoompan=z='如果(lte(缩放,1.0),1.5,max(1.001,缩放-0.0015))':d=125,淡入淡出:st=0:d=1,淡入淡出:st=4:d=1[v1];\
 [2:v]zoompan=z='如果(lte(缩放,1.0),1.5,max(1.001,缩放-0.0015))':d=125,淡入淡出:st=0:d=1,淡入淡出:st=4:d=1[v2];\
 [3:v]zoompan=z='如果(lte(缩放,1.0),1.5,max(1.001,缩放-0.0015))':d=125,淡入淡出:st=0:d=1,淡入淡出:st=4:d=1[v3];\
 [v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v]" -map "[v]" -s "800x450" -t 40 ./out_fade.mp4

示例输出:

缩放和淡入淡出示例

土豆质量 - 我需要gif更好地优化!伪影和失真是由于试图使文件大小小于 2MB 而导致的,并且不会出现在原始视频输出中 - 这应该足以让您了解它是否适​​合您的用例。图片是我自己的。


(额外的)使用多样或任意的过渡

根据评论添加

即使只有这个最小示例,它filtergraph也会很快变得非常复杂,而且更改起来很繁琐。其他库可能会做得更好。

熔化铅/熔化铅

例如,MELT针对 MLT 框架可能做:

Melt 是作为 MLT 框架的测试工具而开发的。它可以被认为是一个功能强大(虽然有些晦涩)的多轨命令行视频编辑器。

并经常被提及。

电影剪辑

然而,电影剪辑(GitHub 页面)可能更适合您的需求,因为它稍微更简洁并且(我建议)更用户友好,只要命令行视频编辑器可以是用户友好的。

您可能最感兴趣的是合成转场/效果


根据我自己尝试使用 来插入过渡的经验,我建议使用上述两种方法ffmpeg;这种方法可行,并且能够产生一些非常不错的效果,但这样做不值得。上面的脚本应该可以回答您关于使用淡入/淡出进行连续缩小的问题。

相关内容