【问题标题】:Use palette when using FFMpeg overlay使用 FFMpeg 覆盖时使用调色板
【发布时间】:2017-09-11 22:12:40
【问题描述】:

我正在尝试使用 FFMpeg 向动画 GIF 添加叠加层。

它有效,但质量很差。基本上,我无法使用我生成的调色板,这会导致很多抖动。主 GIF(意思是,不是覆盖)的分辨率也很低。

我还想对水印应用不透明度(在某个时候也可以),但这是一个优点。

这就是我所拥有的:

ffmpeg -v error -i image.gif -vf 'palettegen' palette.png -y;
ffmpeg -v error -i image.gif -i watermark.gif -i palette.png -filter_complex '[1:v]scale=80:30, [0:v]overlay=(main_w-overlay_w) - main_h/30:(main_h-overlay_h) - main_h/30, paletteuse' -an image-watermark.gif -y

在某一时刻,我能够使用主 GIF 的调色板,因此它的质量有所提高。但是,水印看起来很糟糕。很明显,我必须先进行叠加,然后是调色板,以便调色板包含水印中存在的颜色。但是,我不知道该怎么做。

有人能指出正确的方向吗?

【问题讨论】:

    标签: image video ffmpeg video-processing image-manipulation


    【解决方案1】:

    您必须为要编码为 GIF 的相同视觉内容生成调色板。

    ffmpeg -v error -i image.gif -i watermark.gif -filter_complex  '[1:v]scale=80:30[wm];[0:v][wm]overlay=(main_w-overlay_w) - main_h/30:(main_h-overlay_h) - main_h/30, palettegen' palette.png -y;
    
    ffmpeg -v error -i image.gif -i watermark.gif -i palette.png -filter_complex '[1:v]scale=80:30[wm];[0:v][wm]overlay=(main_w-overlay_w) - main_h/30:(main_h-overlay_h) - main_h/30[vid];[vid][2]paletteuse' -an image-watermark.gif -y
    

    (我保留了您现有的语法,尽管最好标记所有输入和输出焊盘,而不是依赖自动输入拾取。)

    【讨论】:

    • 谢谢!我实际上已经添加了那一点,但主要 GIF 的质量仍然非常糟糕——就像像素化一样。它几乎看起来像是被降采样了。
    • 用完全指定的焊盘试一试。
    • 对于“完全指定的焊盘”,您的意思是:ffmpeg.org/ffmpeg-filters.html#pad-1?
    • 谢谢,非常感谢您的帮助。不幸的是,主图像看起来仍然像素化。这是正确的尺寸,但看起来质量比原来的低。我还有许多其他过滤器在工作,只是这个我似乎无法弄清楚。 :-/
    猜你喜欢
    • 1970-01-01
    • 2012-12-14
    • 2015-05-26
    • 2019-12-29
    • 2017-10-24
    • 2020-08-26
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多