以一定时间间隔在 MP4 上叠加 GIF(同时保持 GIF 透明度)

以一定时间间隔在 MP4 上叠加 GIF(同时保持 GIF 透明度)

我正在寻找一种在 mp4 上实现 gif 覆盖的方法,具有以下特点:

  • 保持视频中的 GIF 透明度
  • 让 GIF 仅在特定时间间隔内显示(例如 0:02-0:06)
  • 将 GIF 定位到 MP4 文件的左下角

答案1

您可以使用x=between(t, 2, 6), 0, NAN) 表达式求值y=(H-h)
参见overlay过滤器文档(阅读示例 - 它们足够接近)。

ffmpeg -y -i in.mp4 -i in.gif -filter_complex "[0][1]overlay=x='if(between(t, 2, 6), 0, NAN):y=(H-h)':format=yuv444" -vcodec libx264 -pix_fmt yuv444p -crf 17 -acodec copy out.mp4

format=yuv444-pix_fmt yuv444p用于提高输出质量。

我使用了以下透明 gif邮政,并与合成图案叠加。

输出帧示例:
在此处输入图片描述


构建合成模式(用于测试):

ffmpeg -y -f lavfi -r 10 -i testsrc=size=640x480:rate=1:duration=300 -vf setpts=N/10/TB -vcodec libx264 -pix_fmt yuv444p -crf 17 in.mp4

具有透明度的 GIF 图像:
在此处输入图片描述

相关内容