当前位置: 首页 > 知识库问答 >
问题:

FFmpeg-如何缩放视频,然后应用水印?

田冥夜
2023-03-14

我试图缩放一个视频,这样它总是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]"

我的想法是首先应用刻度,然后再应用水印,但我得到的只是一个错误

为“电影”过滤器指定的输入太多。

打开过滤器时出错!

然后将;结果:

Simple filtergraph’scale=512:-1;电影=水印。png[水印];[in][watermark]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[out]'没有一个确切的输入和输出。

打开过滤器时出错!

我想我需要对filterchains做更多的事情,但我正在努力解决这个问题。

有人有什么想法吗?

非常感谢。

共有3个答案

路雅懿
2023-03-14

据我所知,这可能有效:

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

将缩放筛选器应用于输入"[in]"。

不幸的是,我对ffmpeg上的过滤器没有太多经验,所以我无法进一步帮助。很抱歉

冀冯浩
2023-03-14

感谢@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]"

请注意,Ive替换了标尺中的-1,因为在缩放时,它可能会导致视频高度的像素数不均匀,从而导致编码错误。

长孙永思
2023-03-14

您可以将-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。如果输入和输出容器格式相同,这将非常有用
  • 该示例将把徽标放在中间。对于其他放置选项:
    • 左上角有10像素的填充:overlay=10:10
    • 右上角带10像素填充:overlay=W-W-10:10
    • 右下角带10像素填充:overlay=W-W-10:H-H-10
    • 左下角10像素填充:overlay=H-H-10:10

 类似资料:
  • 这是我的第一个问题。帮助我帮助你帮助我:这个问题需要澄清吗? 目标:一个脚本,使Instagram就绪的视频与音频,并一个logo覆盖。脚本接受一个音频和视频源,并将它们组合起来。重要:标志应该有一个一致的位置和大小为每个视频。这很可能意味着所有输出的视频应该具有相同的宽度x高度。 任何替代方法都是受欢迎的! 下面是我从python调用的ffmpeg命令。我试着将视频缩放到720:-2(所以自动高

  • 我正在尝试使用ffmpeg和使用以下命令压缩一个视频。 然而,生成的视频的大小大于原始视频的大小。有没有人可以指出为什么会发生这种情况,如果有其他命令我应该使用。

  • 它是一个后端API(由RubyonRails开发),iphone和android手机使用它上传视频。API正在将上传的视频转换为MP4格式。我在后端使用曲别针ffmpeg gem进行视频转换。以下是我使用的: 我面临的问题有: 当用户从Android手机上传视频时,它在Android手机上运行良好,但在iPhone上无法播放。当用户从iPhone上传视频时,会发生另一件奇怪的事情,视频上传后,它会

  • 在用图像创建mp4幻灯片时,我在网上为zoompan提供了一些示例,但我仍然没有完全掌握如何使它们从图像中的某个位置开始。下面是典型的命令: ffmpeg-i image-000。jpg-filter_complex“color=c=black:r=60:s=1920x1080[demo];[0:v]格式=pix_fmts=yuva420p,比例=8000:-1,zoompan=z='min(zo

  • 我尝试使用FFMPEG和这个库压缩视频:https://github.com/guardianproject/android-ffmpeg-java

  • 我集成了。视频压缩工作正常,但除了safari浏览器外,其他浏览器不播放视频。上传到服务器后。我使用了以下命令。 请帮帮我。先谢谢你。