如何使用 FFMPEG 在叠加层内添加淡入淡出?

How to add a fade in within overlay with FFMPEG ?

我想知道如何在 -filter_complex 'overlay' 中添加选项 "fade in"。

基本叠加层

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 fade=in 应该像这样在 filter_complex 中吗?

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 参数构建方面的帮助!

使用

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 秒,因此我添加了一个循环以从中生成视频流,这是淡入淡出所需的生效。

覆盖过滤器接受两个输入,所以我将所有焊盘分配给显式路由。由于图像无限循环,添加最短的图像以在主视频结束时停止叠加。