我有一个 FFmpeg 命令,已经在一些脚本中使用了一段时间,但最近注意到它在我覆盖在视频顶部的 PNG 水印上添加了轻微的、几乎透明的背景。
该问题可能由什么原因造成?我该如何解决?
答案1
我会让 FFmpeg 专家来回答问题的第一部分 - 是什么导致了这个问题 - 但经过几天的调试和测试,我设法通过以下方式解决问题:
- 添加
format=yuv420p
筛选我正在视频流将 PNG 图像叠加到 - 添加
format=auto
选项到正在做的流PNG 覆盖层本身
这是我的命令现在的简化版本:
ffmpeg -i "input.webm" -loop 1 -i "watermark.png" \
-movflags +faststart \
-filter_complex \
"[0:v]format=yuv420p[v0];
[1:v]lut=a=val*0.7,fade=in:st=10:d=3:alpha=1,fade=out:st=3820:d=3:alpha=1[v1];
[v1][0:v]scale2ref=w=oh*mdar:h=ih*0.07[wm_scaled][video];
[video][wm_scaled]overlay=100:H-h-80:shortest=1:format=auto[outv]" \
-map "[outv]" -map "0:a" -c:v libx264 -crf 17 -c:a libopus "test.mp4"