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。
我需要在视频底部添加一点阴影。
初始视频
预期结果
执行此操作的一个版本是将阴影 (.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。