【问题标题】:ffmpeg watermark without vhook? [duplicate]没有vhook的ffmpeg水印? [复制]
【发布时间】:2009-10-13 11:40:07
【问题描述】:

由于 vhook 子系统已从最新版本的 FFMPEG 中删除,我如何为视频添加水印?

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

【问题讨论】:

    标签: ffmpeg watermark


    【解决方案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 .........................*/
    

    【讨论】:

      【解决方案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
      

      【讨论】:

        【解决方案3】:

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

        但是,我无法让它与 ffmpeg 0.6.2 一起使用。

        祝你好运。

        【讨论】:

          【解决方案4】:

          如果您熟悉 Java,则可以使用 Xuggler 进行此操作。特别是 Xuggler 的 MediaTool API 的教程向您展示了如何解码和编码视频,以及如何使用您创建的图像从头开始制作视频。将这些概念结合起来,制作一个可以解码视频、在视频上叠加 PNG,然后重新编码的程序并不难。

          【讨论】:

          • 我想继续使用 ffmpeg,使用一个工具链对各种格式进行编码已经足够困难了,我不想再加入另一个工具链。谢谢你的建议!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-06-17
          • 1970-01-01
          • 2016-09-27
          • 2021-11-23
          • 2016-03-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多