使用 -vf 添加水印时,FFMpeg 不会编码为 Webm

使用 -vf 添加水印时,FFMpeg 不会编码为 Webm

我使用以下命令成功添加了 x264 和 -vf 覆盖:

带水印的工作 x264 编码:

ffmpeg -i /private/youtube/$i -acodec aac -ac 2 -strict experimental -vf 'movie=/user_ftp/1037/watermarks/w640X360.png [logo];[in][logo] overlay=0:0 [out]' -crf 24 -ab 160k -s 640x360 -vcodec libx264 -preset faster -profile:v baseline -level 30 -maxrate 1500k -bufsize 2200k -b:v 1200k -f mp4 -threads 0 -y  /user_ftp/1037/$i.mp4

但是,使用我的 2 遍 webm 编码和相同的代码,视频可以编码,但没有放置水印。编码为 webm 时 -vf 不起作用吗?

不工作-视频编码没有水印:

Webm 传递 1

ffmpeg -i /youtube/$mediaboxid/$i -codec:v libvpx -quality good -vf 'movie=/media/raid2/uploads/user_ftp/1037/watermarks/w400X224.png [logo];[in][logo] overlay=0:0 [out]' -filter:v scale=400:224 -cpu-used 0 -b:v 500k -qmin 10 -qmax 42 -maxrate:v 500k -bufsize:v 1000k -threads 0  -an -pass 1 -f webm -y /dev/null

Webm 第 2 阶段

ffmpeg -i /youtube/$mediaboxid/$i -codec:v libvpx -quality good -vf 'movie=/user_ftp/1037/watermarks/w640X360.png [logo];[in][logo] overlay=0:0 [out]' -filter:v scale=640x360 -cpu-used 0 -b:v 500k -qmin 10 -qmax 42 -maxrate:v 500k -bufsize:v 1000k -threads 0 -an -pass 2 -f webm -y /user_ftp/1037/$i.webm

这里是否存在与 webm 相关的具体已知问题?

答案1

WebM 编码应该没有特殊问题。正如 LordNeckbeard 所说,您的 WebM 命令行有一个-vf选项和一个-filter:v选项,但它们是同一个东西(两种不同的方法来指定要应用于视频的过滤器集)。您可以使用多个视频过滤器,但使用单个-vf-filter:v选项指定它们。

你应该使用-filter_complex而不是-vf涉及多个输入的过滤:这是简单的复杂滤波图。它也更容易理解,因为你可以避免movie源过滤器。

如果你想要scale应用于结果的过滤器overlay

ffmpeg -i video.mp4 -i logo.png -filter_complex overlay,scale=640:-1 ... output

如果您希望scale仅应用于原始输入,而不是,overlay那么只需切换过滤器的位置:

ffmpeg -i video.mp4 -i logo.png -filter_complex scale=640:-1,overlay ... output

相关内容