如何使用ffmpeg在视频画布上下方添加不遮挡原有内容的图片条
首先明确你之前操作的问题:
- 直接在原视频画布上叠加图片,必然会遮挡原有内容
- 设置
overlay=0:-200时图片完全超出画布可视范围,所以没有显示效果 - 仅给画布底部加空白时,自然只能将图片放在底部区域
要实现不遮挡原视频、自由选择图片条放在顶部/底部,核心逻辑是先给原视频画布扩展对应高度的空白区域,再把图片条叠加到空白区域内,具体命令如下:
前置说明
命令中默认第一个输入-i input.mp4为原视频,第二个输入-i ./image_path.png为要添加的图片条,你可以根据实际文件路径替换。
1. 图片条放在视频顶部(无遮挡)
ffmpeg -i input.mp4 -i ./image_path.png -filter_complex \ "[1:v][0:v]scale2ref=w=iw:h=ih/8[wm][base]; \ [base]pad=height=ih + h[wm]:y=h[wm]:color=#71cbf4[padded_base]; \ [padded_base][wm]overlay=x=0:y=0" \ -pix_fmt yuv420p -c:a copy output_top.mp4
参数说明:
scale2ref=w=iw:h=ih/8:将图片条缩放至和原视频同宽,高度为原视频的1/8,你可以把h=ih/8改成固定值比如h=40来自定义图片条高度pad=height=ih + h[wm]:y=h[wm]:给原视频顶部扩展出和图片条等高的空白区域,color参数可自定义空白区域颜色overlay=x=0:y=0:将图片条放在画布最顶部的空白区域,完全不遮挡原视频内容
2. 图片条放在视频底部(无遮挡)
ffmpeg -i input.mp4 -i ./image_path.png -filter_complex \ "[1:v][0:v]scale2ref=w=iw:h=ih/8[wm][base]; \ [base]pad=height=ih + h[wm]:y=0:color=#71cbf4[padded_base]; \ [padded_base][wm]overlay=x=0:y=main_h - overlay_h" \ -pix_fmt yuv420p -c:a copy output_bottom.mp4
参数说明:
- 仅调整了pad的
y=0(空白加在画布底部)和overlay的y坐标(自动对齐画布最底部),其余参数和顶部配置逻辑一致
可选调整项
- 如果要图片条水平居中,把overlay的
x=0改成x=(main_w-overlay_w)/2即可 - 如果不需要图片条和视频同宽,修改scale2ref的
w=iw为你需要的宽度值比如w=1000即可
内容的提问来源于stack exchange,提问作者ichthyocentaurs
相关产品推荐
相关产品推荐

