【问题标题】:ffmpeg overlay transparent animated gif over video and keep gif background transparencyffmpeg 在视频上覆盖透明动画 gif 并保持 gif 背景透明度
【发布时间】:2019-08-28 10:29:41
【问题描述】:

我正在尝试将动画 gif 重叠在视频上,但没有成功。

我的目标是下一个:

  1. gif 动画必须循环播放,直到视频结束。
  2. gif 已缩放以覆盖整个视频。
  3. gif 保留透明度。

在这方面我取得的最大成就是 gif 使用比例过滤器覆盖了整个视频,并且它会循环播放直到视频结束(但我猜这不是最好的方式)。

关于循环,我知道我可以在叠加层中使用 -ignore_loop 0 gif 过滤器参数,其中最短 = 1,但这样它不起作用,所以我最终得到 -frames:v 900(我的视频是 30fps 和 30 秒长,所以 900 是帧数)。

我最重要的问题是我无法保持 gif 透明度,而且我尝试的一切都没有成功。

这是我的带有参数的 ffmpeg 命令,所以我希望任何人都可以提供帮助(我使用的是 ffmpeg 4.1)。

ffmpeg -y 
-i videoin.mp4 
-i anim01.gif 
-filter_complex [1:v]scale=1080:1920[ovrl] [0:v][ovrl]overlay=main_w-overlay_w:main_h-overlay_h
-frames:v 900 
-codec:a copy
-codec:v libx264
-preset ultrafast
video.mp4

【问题讨论】:

    标签: ffmpeg transparency overlap animated-gif


    【解决方案1】:

    大家好,如果有人想在视频中添加 gif,请使用此命令。你一定会得到正确的答案

        String strFilter = "[1:v]scale=h=-1:w=100[overlay_scaled],"
        + "[0:v][overlay_scaled]overlay=shortest=1:x=W*0:y=H*0";
    
        String[] complexCommand = new String[] {
                "-i",
                yourRealPath,
                "-itsoffset",
                String.valueOf(0),
                "-ignore_loop", "0",  "-i",
                fullPath,
                "-filter_complex",
                strFilter,
                "-frames:v", "900", "-preset",
                "ultrafast",
                "-g",
                "120",
                dest.getAbsolutePath()
        };
    

    【讨论】:

      【解决方案2】:

      好的,我会回答我自己的问题。第一部分,不能实现gif透明,真是个傻问题!!我使用的 gif 不是透明的,我没有意识到!天哪,我想,所以每当您遇到透明度问题时,首先要检查这一点。

      第二个,循环播放 gif 直到视频结束,我无法使用 -ignore_loop 0 和 shortest=1 来做到这一点,但我所做的是 -ignore_loop 0 -frames:v 900 效果很好。

      不起作用的不是 -ignore_loop 0,而是 shortest=1,因此 ffmpeg 永远不会结束编码,但如果您将其设置为在一定数量的帧处完成,则可以解决问题。

      900 来自 30fps x 30 秒的视频。

      最后我完整的ffmpeg命令行参数如下:

      ffmpeg -y -i xxx.mp4 -ignore_loop 0 -i xxx.gif -filter_complex "[1:v]scale=1080:1920[ovrl];[0:v][ovrl]overlay=0:0" -frames:v 900 -codec:a copy -codec:v libx264 -max_muxing_queue_size 2048 video.mp4
      

      【讨论】:

      • 如何从现有视频中删除现有的动画 gif?
      猜你喜欢
      • 2023-03-03
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 2013-11-25
      • 2015-05-12
      • 2014-01-08
      • 2020-01-24
      相关资源
      最近更新 更多