我需要添加一个叠加视频,我想知道是否有一种简单的方法可以用FFMPEG来完成。
我有一组图像(横幅和肖像),我想在视频的底部叠加一部分视频。例如,大约5秒后,我希望显示叠加层,然后在视频结束前大约5秒钟,我希望叠加层消失。
这是否可以使用FFMPEG命令行选项?
答案 0 :(得分:4)
到目前为止,FFMpeg使用命令行覆盖图像,最强大而优雅的方法是使用名为 AVISynth 的工具。
这是一些简单的例子,其中一个将一个视频叠加在另一个上面(覆盖图像是其中的一个子集):
http://avisynth.org/mediawiki/Script_examples
你可能想知道,这是什么工具?这就是概念上的工作方式:
首先,使用称为脚本的特殊命令创建一个简单的文本文档。这些命令引用一个或多个视频以及您希望在其上运行的过滤器。然后,运行视频应用程序(如FFMPeg),并在命令行上传入脚本文件。这是AviSynth采取行动的时候。它会打开您在脚本中引用的视频,运行指定的过滤器,并将输出提供给视频应用程序。但是,该应用程序并不知道AviSynth正在后台工作。相反,应用程序认为它直接打开驻留在硬盘驱动器上的过滤后的AVI文件。
使用AVISynth,您想要的是非常简单,但它可以扩展到像这个网站这样的视频,其中许多照片,文字和效果都放在视频上。此ecard站点上的所有视频均使用FFMpeg和AVISynth创建:http://www.hdgreetings.com
它可能看起来有点不同,但是一旦你有一个简单的脚本工作,你立即意识到这是有史以来最好的视频工具之一。它当然是免费的。
答案 1 :(得分:0)
ffmpeg不允许那种图片处理。不过,也许你很幸运。
由于你无论如何都必须解压缩视频,你可以使用ffmpeg创建RAW图像到磁盘,用一些实用程序覆盖图像(简单的c#app可以做到这一点),并使用ffmpeg创建所需的另一个视频(或与源相同)。
要进行叠加,您可以使用GIMP:http://www.gimp.org/tutorials/Basic_Batch/,因为它是一个可以在批处理(命令行)模式下使用的跨平台工具。
答案 2 :(得分:0)
根据您使用的平台,您可以只播放视频,然后像视频上的图像一样创建X窗口。在播放视频时,您可以使用ffmpeg记录X窗口,其中视频在后台播放,而您的图像在前景中播放。
这是一个完整的黑客,但我把它扔到那里。
答案 3 :(得分:-1)
FFMPEG可以在任何给定的视频时间覆盖视频上的图像。
ffmpeg -i video -i image1 -i image2 -i image3
-filter_complex
"[0][1]overlay=x=X:y=Y:enable='between(t,23,27)'[v1];
[v1][2]overlay=x=X:y=Y:enable='between(t,44,61)'[v2];
[v2][3]overlay=x=X:y=Y:enable='gt(t,112)'[v3]"
-map "[v3]" -map 0:a out.mp4
请查看此帖子了解详情:FFMPEG- Is it possible to overlay multiple images over a video at specified intervals?