FFmpeg:如何在视频底部添加阴影叠加?

FFmpeg: How to add shadow overlay at the bottom of the video?

我需要在视频底部添加一点阴影。

初始视频

预期结果

执行此操作的一个版本是将阴影 (.png) 图像作为叠加层添加到视频中。但是我想,没有阴影图像有什么办法吗?

使用拆分、格式、geq 和叠加过滤器:

ffmpeg -i input.jpg -filter_complex "[0]split[v0][v1];[v0]format=rgba,geq=r=0:g=0:b=0:a=255*(Y/H)[fg];[v1][fg]overlay=format=auto" -frames:v 1 -q:v 2 out.jpg
  • split - 制作两份输入:一份用于 geq,另一份用于覆盖
  • 格式 - 使输入具有 alpha 通道
  • geq - 使用 alpha
  • 创建渐变
  • 叠加 - 在原始图像上放置渐变

另一个例子,但这添加了裁剪过滤器以将渐变减半,因此它在中间停止:

ffmpeg -i input.jpg -filter_complex "[0]split[v0][v1];[v0]crop=iw:ih/2,format=rgba,geq=r=0:g=0:b=0:a=255*(Y/H)[fg];[v1][fg]overlay=0:H-h:format=auto" -frames:v 1 -q:v 2 out.jpg

可能有更有效的方法来执行此操作,但它确实有效。参见 filter documentation