FFmpeg多图片缩放平移合成视频异常:仅首图缩放次图静止求助
解决FFmpeg中第二张图片无缩放平移效果的问题
我仔细看了你的FFmpeg命令,问题核心出在zoompan滤镜的状态没有重置上。当第一张图处理完成时,zoom变量已经达到了2.5的最大值,第二张图复用这个状态后,min(zoom+0.0015,2.5)直接返回上限值,自然就没有缩放动画了。另外,原命令里的时间轴和变量复用逻辑也有小问题,导致第二张图的动画无法正常触发。
下面是修正后的完整命令:
ffmpeg -f lavfi -r 30 -t 10 -i color=#000000:1920x1080 \ -f lavfi -r 30 -t 10 -i aevalsrc=0 \ -i "image-1.png" \ -i "image-2.png" \ -y -filter_complex \ "[0:v]fifo[bg];\ [2:v]setpts=PTS-STARTPTS,scale=4455:2506:force_original_aspect_ratio=decrease,zoompan=z='min(zoom+0.0015,2.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=150:fps='30':s='1920x1080'[v2];\ [bg][v2]overlay=0:0:enable='between(t,0,5)'[bg1];\ [3:v]setpts=PTS-STARTPTS,scale=3840:2160:force_original_aspect_ratio=decrease,zoompan=z='min(1+0.0015*on,2.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=150:fps='30':s='1920x1080'[v3];\ [bg1][v3]overlay=0:0:enable='between(t,5,10)'[bg];\ [1:a]amix=inputs=1:duration=first:dropout_transition=0" \ -map "[bg]" -vcodec "libx264" -preset "veryfast" -crf "15" "output.mp4"
关键修改点说明:
- 重置zoom初始状态:把第二张图的zoom表达式从
z='min(zoom+0.0015,2.5)'改成z='min(1+0.0015*on,2.5)'。这里on是zoompan内部的帧计数器,从0开始计数,确保第二张图的缩放从初始值1开始逐步递增,和第一张图的动画逻辑一致。 - 避免变量状态污染:原命令复用了
[bg]作为中间变量,可能导致前一张图的叠加状态残留。修改为用[bg1]作为过渡,让第二张图的叠加操作基于干净的黑色背景。 - 简化时间轴逻辑:去掉第二张图
setpts里的+5.07/TB偏移,因为enable='between(t,5,10)'已经精准控制了显示时间,setpts=PTS-STARTPTS足以让图片从自身的时间起点开始播放。 - 统一时间区间:两张图的显示时间分别设为
0-5秒和5-10秒,确保衔接无缝,没有间隙或重叠。
这个修改完全兼容你使用的FFmpeg 4.1版本,不需要升级即可生效。
内容的提问来源于stack exchange,提问作者basim
相关产品推荐
相关产品推荐

