Ffmpeg 创建视频幻灯片,图像覆盖其他图像并缩放



我有ffmpeg命令可以使图像覆盖其他图像并进行缩放,但是缩放效果无法正常工作,它仅在叠加图像框内工作。

ffmpeg -loop 1 -i pic001.jpg -i pic002.jpg -filter_complex "[0:v]scale=-1:720,zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125,trim=duration=5[scaled_video];[1:v]scale=1920:1080,boxblur=15[blur_image];[blur_image][scaled_video]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[outv]" -c:v libx264 -aspect 1280/720 -map [outv] -t 10 -y fixed.mp4

谁能帮我解决这个问题?

叠加过滤器不支持动态大小调整,因此您需要一个技巧来执行此操作:

ffmpeg -i pic001.jpg -i pic002.jpg -filter_complex
 "[0:v]scale=-1:720,format=yuva422p,pad=1.5*iw:1.5*ih:(ow-iw)/2:(oh-ih)/2:color=black@0,
  zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125:s=WxH,
  trim=duration=5[scaled_video];
  [1:v]scale=1920:1080,boxblur=15[blur_image];
  [blur_image][scaled_video]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[outv]"
-c:v libx264 -aspect 1280/720 -map [outv] -t 10 -y fixed.mp4

诀窍是添加一个 alpha 通道,然后用透明黑色填充图像。叠加时,由于 alpha,黑色填充消失。

在缩放平移中,您必须手动将W和H替换为填充图像的宽度和高度。在本例中,初始缩放后图像的宽度为 1.5 倍,高度为 1.5 倍。我选择了 1.5 作为乘数,因为这是缩放平移中的最大缩放级别。

最新更新