我正在尝试使用ffmpeg为视频添加水印。
但有一种回报让我很难理解如何做到,我在网上搜索。
所以,我需要水印每20秒随机改变4个角的位置。
我的想法是将视频分割成一组文件,对每个文件随机应用水印,并将结果组合成一个输出文件。但我认为这是一种糟糕的方式。
有人能帮我吗?
谢谢,Sergey
我会创建一个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
当然,这不是"随机的",但你可以让你的叠加电影有任何长度的模式和单独的时间戳,使其在最终输出中看起来随机。