我想添加 PNG 水印,然后缩放我的视频。我可能会添加更多滤镜。这是我的 FFmpeg 命令。
sweb@sweb-laptop:/tmp$ ffmpeg -i Wildlife.wmv -sn -acodec libvorbis -vcodec libvpx -b:a 128k -ar 44100 -b:v 384k -r 25 -vf "movie=/tmp/icon.png [watermark]; [in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out], scale=480:-1" video.webm
…但它给了我一个错误:
Simple filtergraph 'movie=/tmp/icon.png [watermark]; [in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out], scale=480:-1' does not have exactly one input and output.
Error opening filters!
答案1
[in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2 [out], scale=480:-1"
..[out]
放错了位置,导致 filtergraph 毫无意义。应该是:
[in][watermark] overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2, scale=480:-1[out]"
我个人不喜欢电影滤镜,纯粹是出于美观原因(我认为它使命令行看起来不太清晰)。我会改用 filter_complex 来实现这一点:
ffmpeg -i Wildlife.wmv -i /tmp/icon.png \
-filter_complex '[0:v][1]overlay=W/2-w/2:H/2-h/2,scale=480:-1[outv]' \
-map [outv] -map 0:a -c:a libvorbis -b:a 128k -c:v libvpx -b:v 384k output.webm
请注意,filter_complex 与 不兼容[in]
,因为其本质上需要多个输入。
我删除了-ar 44100
和-r 25
,因为您可能不需要它们 - 如果您的输入源的帧速率为 25fps 且音频速率为 44100,则输出将默认继承这些设置。如果没有,更改它们可能不会给您带来任何好处。
要先缩放视频,然后添加水印,您可以使用以下命令:
-vf 'movie=/tmp/icon.png[wm];[in]scale=480:-1[int];[int][wm]overlay=W/2-w/2:H/2-h/2[out]'
我实际上不确定这是否可行;就我个人而言,我会使用 filter_complex,如上所述:
ffmpeg -i Wildlife.wmv -i /tmp/icon.png \
-filter_complex '[0:v]scale=480:-1[int];[int][1]overlay=W/2-w/2:H/2-h/2[outv]' \
-map [outv] -map 0:a -c:a libvorbis -b:a 128k -c:v libvpx -b:v 384k output.webm