我使用以下命令成功添加了 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
源过滤器。
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