ffmpeg的水印不vhook? [重复](ffmpeg watermark without v

2019-08-17 23:17发布

这个问题已经在这里有一个答案:

  • 如何添加水印透明与ffmpeg的视频的中心? 1个回答

由于vhook子系统已经从FFMPEG的最新版本中删除,我怎么能添加水印到视频?

我需要能够覆盖背景透明PNG。

Answer 1:

使用Xuggler我们可以在java中做到这一点。 而使用编码的IMediaTool视频,你会得到的图像序列。 对这些图像的使用这些图片的地方水位,并且产生一个输出视频。 以下是代码块

BufferedImage imageB = event.getImage();

/*....................... water mark .........................*/
Graphics2D g2d = (Graphics2D) imageB.getGraphics();
g2d.drawImage(imageB, 0, 0, null);

//Create an alpha composite of 50%
AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f);
g2d.setComposite(alpha); 

g2d.setColor(Color.YELLOW);


g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

g2d.setFont(new Font("Arial", Font.BOLD, 30));

String watermark = "Sample water mark";

FontMetrics fontMetrics = g2d.getFontMetrics();
Rectangle2D rect = fontMetrics.getStringBounds(watermark, g2d);
yScrolling = imageB.getHeight() - (int) rect.getHeight() / 2;

g2d.drawString(watermark, (imageB.getWidth() - (int) rect.getWidth()) / 2,
                         (imageB.getHeight() - (int) rect.getHeight()) / 2);
g2d.drawString(watermark, xScrolling,yScrolling);

//Free graphic resources
g2d.dispose(); 

 /*....................... water mark .........................*/


Answer 2:

如果你编译来自官方git仓库的ffmpeg,你可能需要,因为它已经在新版本改变了一点点要注意的语法。

ffmpeg -i input.mp4 -acodec copy -vf "movie=0:png:watermark.png [wm];[in][wm] overlay=5:5:1 [out]" -f mp4 -b 2500k -vcodec libx264 -vpre fast -ac 1 -y output.mp4

ffmpeg -i input.mp4 -acodec copy -vf "movie=watermark.png [wm];[in][wm] overlay=5:5 [out]" -f mp4 -b 2500k -vcodec libx264 -vpre fast -ac 1 -y output.mp4


Answer 3:

我能达到最好的是http://www.corbellconsulting.com/2010/07/using-ffmpeg-to-add-and-watermark-overlay-on-a-video-2/

但是,我无法得到它与ffmpeg的0.6.2工作。

祝好运。



Answer 4:

如果你熟悉Java,你可以做到这一点Xuggler 。 特别是对于教程MediaTool Xuggler的API告诉你如何解码和编码视频,并分别使用如何创建图像,使一个从无到有的视频。 不难那些过于概念相结合,使一个程序,可以解码视频,叠加在视频PNG,然后重新编码。



文章来源: ffmpeg watermark without vhook? [duplicate]