如何使用FFMPEG在叠加层中添加淡入效果?

7

我想知道如何在-filter_complex 'overlay'中添加“淡入”选项。

基本叠加:

ffmpeg -i movie.mp4 -i image.jpg -c:v libx264 -filter_complex 'overlay=x=main_w-overlay_w-100:y=main_h-overlay_h-100' output.mp4

图片image.jpg应该在filter_complex中使用fade=in这个参数吗?

ffmpeg -i movie.mp4 -i image.jpg -c:v libx264 -filter_complex 'fade=in:st=0:d=5:alpha=1, overlay=x=main_w-overlay_w-100:y=main_h-overlay_h-100' output.mp4

非常感谢您对-filter_complex参数构建的帮助!

1个回答

14

使用

ffmpeg -i movie.mp4 -loop 1 -i image.jpg -filter_complex
      "[1]format=yuva420p,fade=in:st=0:d=5:alpha=1[i];
       [0][i]overlay=W-w-100:H-h-100:shortest=1"
-c:v libx264 output.mp4

您的淡入淡出滤镜设置为对 alpha 通道进行操作,但是 JPEG 格式不支持 alpha 通道,因此需要将图像转换为支持 alpha 通道的像素格式。此外,FFmpeg 是基于时间的流处理器,单个图像被视为 25 fps 下的一个帧,因此持续时间为 0.04 秒,因此我添加了一个循环来生成视频流,从而让淡入淡出效果生效。

叠加滤镜需要两个输入,因此我指定了所有用于显式路由的端口。由于图像被无限循环播放,所以在主视频结束时添加了最短的停止时间,以停止叠加。


嗨,这里的 alpha=1 是什么意思?如果我使用它,我的叠加层会消失,如果我使用 alpha=0,则会变成黑色。 - Navid Khan
你在进行淡出效果吗?你的完整命令和视频时长是多少? - Gyan
1
这是我代码的相关部分:[i]format=yuva420p,fade=in:st=0:d=1:alpha=1[i];[0][i]overlay=x=#{artist_profile_image_x}:y='if(gte(t,0.2), if(lte(t,1.0), (H/2-h/2-t*250), (H/2-h/2-250)), NAN)'[v],我的视频长度为4秒。 - Navid Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接