通过使用FFmpeg向视频添加动态定位的水印

5
我正在尝试使用ffmpeg给视频添加水印。
但是有一个要求让我很难理解如何实现,当然我在网上搜索过了。
因此,我的需求是每20秒随机将水印移到4个角落中的一个。
我的想法是将视频分成一组文件,对每个文件随机应用水印,然后将结果合并成一个输出文件。但我认为这种方法不太好。
能否请有经验的人帮助我?
谢谢, Sergey

你能找到这个问题的解决方案吗?我现在也面临着完全相同的问题。 - Bruno Siqueira
1个回答

1

我想制作一个时长为1分钟的水印视频,循环播放水印,并且每20秒钟移动一次水印,然后使用叠加滤镜将该视频循环叠加到原始视频上。

这里是循环播放图像的方法:http://ffmpeg.org/trac/ffmpeg/wiki/Create%20a%20video%20slideshow%20from%20images

以及添加水印的方法:http://www.idude.net/index.php/how-to-watermark-a-video-using-ffmpeg/

甚至可以重复添加水印的过程,直到它与原始视频具有相同的长度。我没有测试过我的理论,但如果您测试成功了,请告诉我们。

编辑,我回家测试了我的理论,这是一个 Windows 批处理文件:

setlocal

rem create blank movie
rem I created 4 transparent PNG the same size as my final movie using FotografixPortable
rem after many failures with MSPaint... I should have known...

rem add water mark to blank movie (bottom right)
ffmpeg -loop 1 -i wm1.png -t 20 -vcodec png -pix_fmt rgba out-wm1.mov

rem add water mark to blank movie (top right)
ffmpeg -loop 1 -i wm2.png -t 20 -vcodec png -pix_fmt rgba out-wm2.mov

rem add water mark to blank movie (bottom left)
ffmpeg -loop 1 -i wm3.png -t 20 -vcodec png -pix_fmt rgba out-wm3.mov

rem add water mark to blank movie (top left)
ffmpeg -loop 1 -i wm4.png -t 20 -vcodec png -pix_fmt rgba out-wm4.mov

rem put (concat) them all together into one video
rem I use filter_complex because we need to maintain the transparency in the video
ffmpeg -i out-wm1.mov -i out-wm2.mov -i out-wm3.mov -i out-wm4.mov -filter_complex "[0:0] [1:0] [2:0] [3:0] concat=n=4:v=1:a=0 [v]" -map "[v]" -y -vcodec png -pix_fmt rgba -q 0 all-wm.mov

rem finally overlay the 1:20 watermark video onto the original movie
ffmpeg -i "Ted (2012) Unrated.mkv" -i all-wm.mov -filter_complex overlay -shortest -y -q 0 ted.avi

虽然它不是“随机”的,但您可以使覆盖电影的任何模式和单独时间戳的长度,以使其在最终输出中看起来随机。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接