FFmpeg缩放加黑边并添加水印时滤镜链解析错误排查与修复
问题分析与修复
你的滤镜图存在语法错误,核心问题是多个独立滤镜链之间未正确分隔,导致FFmpeg无法解析指令。
错误原因
原滤镜链中,处理主视频生成[main]后,未使用分号;分隔就直接开始处理水印流[1:v],FFmpeg会将后续内容判定为前一个滤镜的无效后缀,从而触发解析错误。
修复后的完整命令
ffmpeg -i videoInput.MP4 -i watermark-.jpg \ -filter_complex "[0:v]scale=720:720*0.59,pad=720:720*1.77:(ow-iw)/2:(oh-ih)/2:black[main];[1:v]scale=iw*0.56:-1[v1];[main][v1]overlay=0:0" \ -c:v libx264 -c:a copy -preset ultrafast -y output.mp4
关键修正点
- 在
[main]后添加分号;,将「主视频处理链」「水印处理链」「叠加合成链」三个独立模块分隔开,符合FFmpeg滤镜链的语法规则 - 移除了数值后的
.0(FFmpeg可自动识别浮点数,不影响效果) - 添加反斜杠
\实现换行,让命令结构更清晰(可选,不影响执行)
命令各模块说明
- 主视频适配处理:
[0:v]scale=720:720*0.59,pad=720:720*1.77:(ow-iw)/2:(oh-ih)/2:black[main]- 先将原视频缩放到指定尺寸,再通过
pad滤镜添加黑色边距,将画面适配到目标比例,输出标记为[main]
- 先将原视频缩放到指定尺寸,再通过
- 水印缩放处理:
[1:v]scale=iw*0.56:-1[v1]- 将水印宽度缩小至原尺寸的56%,高度按比例自动调整,输出标记为
[v1]
- 将水印宽度缩小至原尺寸的56%,高度按比例自动调整,输出标记为
- 水印叠加合成:
[main][v1]overlay=0:0- 将处理后的水印叠加到主视频的左上角(坐标0,0位置)
内容的提问来源于stack exchange,提问作者nicover
相关产品推荐
相关产品推荐

