FFmpeg的 - 如何缩放视频然后应用水印?(FFmpeg - How to scale a vi

2019-06-25 07:00发布

我试着去缩放视频,以便它始终是512宽其中高度按比例原始视频改变。 一旦缩放,然后我想水印/覆盖应用到视频,因此视频将扩大,但不会水印。

我能够实现这些单独使用以下过滤器:

规模

-vf "scale=512:-1"

水印

-vf "movie=watermark.png [watermark]; [in][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]"

他们对自己的成功运行。

但是试图将两者结合起来的时候,林有一点麻烦。

同时具有当然的参数不工作作为一个将覆盖其他。

我试过了:

-vf "scale=512:-1,movie=watermark.png [watermark]; [in][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]"

我的想法是,规模将首先应用则水印,但我得到的是一个错误

对于“电影”过滤器指定了太多的投入。

错误打开过滤器!

然后改变,来一个; 导致:

FilterGraph动态简单“规模= 512:-1; 电影= watermark.png [水印]; [IN] [水印]覆盖=(main_w-overlay_w)/ 2:(main_h-overlay_h)/ 2 [OUT]”不具有恰好一个输入和输出。

错误打开过滤器!

我相信我需要做filterchains但是我在努力搞清楚更多的东西。

任何想法吗?

提前谢谢了。

Answer 1:

您可以使用-filter_complex随着规模和覆盖过滤器选项:

ffmpeg -i input.mp4 -i logo.png -filter_complex "[0:v]scale=512:-1[bg];[bg][1:v]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" output
  • 见规模和覆盖过滤器的文档获取更多信息。
  • 无需为电影源过滤器的其他例子。
  • 您可以添加-c:a copy如果你想流拷贝 (重新MUX)原始音频,而不是重新编码它。 如果你的输入和输出容器格式都是一样的,这非常有用。
  • 这个例子将放置标志的中心。 对于其他位置的选项:
    • 上留下了10像素填充: overlay=10:10
    • 右上与10像素填充: overlay=Ww-10:10
    • 右下10像素填充: overlay=Ww-10:Hh-10
    • 左下与10像素填充: overlay=Hh-10:10


Answer 2:

谢谢都@DiJuMx和@LordNeckbeard,你都让我更接近我的解决方案。 香港专业教育学院没有尝试过filter_complex选项还没有,但它肯定看起来简单。

我找到工作的解决方案是:

-vf "movie=watermark.png [watermark]; [in]scale=512:trunc(ow/a/2)*2 [scale]; [scale][watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]"

需要注意的是伊夫取代-1规模为有缩放那么这将导致编码错误时会导致视频的高度奇数像素的潜力。



Answer 3:

据我了解,这可能工作:

-vf "movie=watermark.png [watermark]; [in] scale=512:-1,[watermark] overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 [out]"

您应用规模过滤器“[中]”的输入。

不幸的是,我没有与ffmpeg的过滤器太多的经验,所以我不能进一步帮助。 抱歉



文章来源: FFmpeg - How to scale a video then apply a watermark?