Java / JSP:如何在视频上添加WaterMark

时间:2016-06-13 12:08:11

标签: java jsp video watermark

我正在尝试在图像和视频上添加水印。对于图像我得到了如下解决方案

图像水印标记

方法

static void addWatermarkOnImage(String text, File sourceImageFile, File destImageFile) {
    try {
        BufferedImage sourceImage = ImageIO.read(sourceImageFile);
        Graphics2D g2d = (Graphics2D) sourceImage.getGraphics();

        // initializes necessary graphic properties
        AlphaComposite alphaChannel = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.1f);
        g2d.setComposite(alphaChannel);
        g2d.setColor(Color.BLUE);
        g2d.setFont(new Font("Arial", Font.BOLD, 64));
        FontMetrics fontMetrics = g2d.getFontMetrics();
        Rectangle2D rect = fontMetrics.getStringBounds(text, g2d);

        // calculates the coordinate where the String is painted
        int centerX = (sourceImage.getWidth() - (int) rect.getWidth()) / 2;
        int centerY = sourceImage.getHeight() / 2;

        // paints the textual watermark
        g2d.drawString(text, centerX, centerY);

        ImageIO.write(sourceImage, "png", destImageFile);
        g2d.dispose();

        //System.out.println("The tex watermark is added to the image.");

    } catch (IOException ex) {
        System.err.println(ex);
    }
}

方法调用

File sourceImageFile = new File("e:/Test/Watermark/SwingEmailSender.png");
File destImageFile = new File("e:/Test/Watermark/text_watermarked.png");

addTextWatermark("CodeJava", sourceImageFile, destImageFile);

通过隐藏上面的代码图像,WaterMarking对我来说非常适合。在视频水标记的情况下,我在网上尝试了很多例子,但没有什么对我有帮助。所以,请帮助我在java / jsp

中进行视频水标记

1 个答案:

答案 0 :(得分:0)

在视频中放置水印的最常见和最流行的开源工具(或者刚出现的另一个问题中的文字)可能是ffmpeg:

ffmpeg可以在命令行中使用,也可以作为应用程序的一部分以编程方式使用(如果要分发等,请仔细查看许可以确保它满足您的需求)。

要以编程方式使用它,您可以在包装器中使用命令行工具,也可以直接使用它构建的库。

直接使用这些库(libavcodec,libavutil,libavformat,libavfilter,libavdevice,libswscale和libswresample - 请参阅上面链接的about页面)应该更高效并允许更好的控制等,但是包装器方法仍然很受欢迎,因为它最初可以更简单地实现,并且有大量关于命令行语法的在线信息,以实现您可能想要做的任何事情,您可以利用这种方法。

库也是基于c的,所以无论如何你都需要一些接口(例如JNI)。

围绕ffmpeg的Java包装器的一个例子是:

有许多使用ffmpeg工具为视频添加水印的在线示例 - 这里有一个示例,但值得谷歌搜索语法确实随时间变化的最新广告: