filter - FFmpeg AVFilter 以编程方式覆盖/水印

标签 filter ffmpeg overlay watermark

我正在尝试使用 FFmpeg 以编程方式将图像或视频叠加在另一个视频的顶部。似乎 AVFilter 可以做到这一点。

有很多关于如何使用命令行执行此操作或类似操作的示例,但是,除了 doc/examples/filtering.c 之外,我没有发现以编程方式使用 AVFilter 的示例,这对我有帮助但还不够。
我已经可以对视频进行解码和编码,我只需要学习如何过滤解码的帧并添加水印。

有没有以编程方式使用 libavfilter 的示例?

是否有使用叠加或电影滤镜的示例?

最佳答案

命令:

ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]" outputvideo.flv

在左上角生成带有图像“watermarklogo.png”的视频。从另一个程序调用这个命令应该很简单。

一点一点分解来理解它:
ffmpeg是您将用来添加水印的程序。
-i用于指定输入文件。
inputvideo.avi-i 指定的输入文件吗? .
-vf用于指定视频过滤器。在这种情况下,这就是引号中的所有内容。
movie=watermarklogo.png将加载您要用作水印的文件。在这里,我们将文件加载为视频源(通过使用 movie ),无论文件是否为视频。在这种情况下,它是一个图像。
[watermark]标记您刚刚加载的文件。该标签将在其余代码中使用。
[in][out]指视频的输入流和输出流。
overlay[watermark] 之后使用标签,以便它引用它。在这个简单的例子中,我们放置 overlay10:10 .这意味着水印将从顶部和左侧偏移 10 个像素。如果你想要右下角,你会使用 overlay=main_w-overlay_w-10:main_h-overlay_h-10在哪里 main_w是输入流的宽度,overlay_h是覆盖文件的高度,依此类推。

最后,outputvideo.flv显然是您希望将结果保存到的文件。

附加信息:

我通过the site Dmitry had mentioned找到了这些信息在评论中。亚历克斯曾提到,对于不熟悉此类事物的人来说,此页面可能过于复杂。然而,我从来没有做过这样的事情,在短短几分钟内,我就得到了我认为正在寻求的结果。

注意:当我收到错误时,我遇到了一些麻烦:
error while opening encoder for output stream #0.1

如果您有同样的问题,您可能需要使用 -ar 参数手动设置采样频率(例如 -ar 22050)。

关于filter - FFmpeg AVFilter 以编程方式覆盖/水印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9155246/

相关文章:

firebase - 如果仅知道一个字段(firestore)的数据,如何查找文档的id?

java - 在 Java 中过滤列表

ruby - 使用 ffmpeg、ffprobe 或 rvideo 在 ruby​​ 脚本中获取视频元数据

Docker 从 overlay 迁移到 overlay2

javascript - 在 JS/Angular 中过滤嵌套数组无法正常工作

AngularJS 更改日期格式(六月,星期三)从 Wed Jun 08 2016 05 :30:00 GMT+0530 (India Standard Time)

Android记录屏幕并流式传输

audio - 使用 FFMPEG 导出填充空白的音频

css - 如何将固定在另一个上的 div 居中?

javascript - jquery工具覆盖,如何在切换覆盖时保留蒙版