使用ffmpeg添加水印时报scale filter输入过多错误如何解决
FFmpeg批量加水印报错排查解决
报错根因
[AVFilterGraph @ 0000019b2a655340] Too many inputs specified for the "scale" filter. Error initializing complex filters. Invalid argument
该报错的核心原因是scale滤镜仅支持单输入流,你原有命令的filter_complex参数中给scale滤镜传入了[0][a][1]三个输入流,参数不匹配导致滤镜初始化失败。
命令逻辑修正
你需要的执行逻辑顺序应为:
- 提取水印文件流,调整透明度为30%
- 仅将调整完透明度的水印流传入scale滤镜做缩放
- 将处理完成的水印流叠加到原图上
修正后可运行命令
for %%a in ("*.jpg") do ffmpeg -i "%%a" -i wm.png -filter_complex "[1]lut=a=val*0.3[a];[a]scale=iw*0.50:-1[wm];[0][wm]overlay=0:0" -preset ultrafast "post\%%~na.jpg"
参数说明
[a]scale=iw*0.50:-1代表将水印自身宽度缩小为原来的50%,高度等比自适应- 如果你需要水印宽度为原图宽度的50%,将scale参数替换为
scale=main_w*0.5:-1即可
前置校验项
- 运行命令前先确认当前目录下存在
post文件夹,无对应文件夹需要先手动创建,避免输出路径不存在报错 - 确认水印文件
wm.png和待处理的jpg文件存放在同一目录,否则需要填写水印文件的绝对路径
内容的提问来源于stack exchange,提问作者user16748482
相关产品推荐
相关产品推荐

