ffmpeg - 将文本添加到现有 gif 中,而无需 gif 脱色/像素化

ffmpeg - 将文本添加到现有 gif 中,而无需 gif 脱色/像素化

我正在尝试向 gif 添加文本,但添加之后图像会出现脱色和像素化的情况。

我运行的向 gif 添加文本的命令如下:

ffmpeg -i test.gif -vf "drawtext=fontfile=OpenSans.ttf:text='Stack Overflow':fontcolor=black:fontsize=24" copy output.gif

如果有人知道为什么会发生扭曲/脱色,我将不胜感激!

这是一个示例 gif,然后是运行上述命令的结果。

原始 Gif

在此处输入图片描述

之后:(发布 ffmpeg)

在此处输入图片描述

(不用担心,他会回去抓猫)

答案1

调整命令如下如何使用 ffmpeg 将视频转换为 GIF,并保证质量

ffmpeg -i input.gif -vf "drawtext=fontfile=OpenSans.ttf:text='Stack Overflow':fontcolor=black:fontsize=24,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif

答案2

所以我偶然找到了一个可行的解决方案,我不确定它是否最佳,但它有效。

我将其转换为 .mp4,然后添加文本,然后再转换回 .gif

转换为 mp4(您需要在这里设置自己的字体)

ffmpeg -i test.gif -vf "drawtext=fontfile=OpenSans.ttf:text='Stack Overflow':fontcolor=black:fontsize=24" -codec:a copy output.mp4

转换回 gif

ffmpeg -i output.mp4 -filter_complex 'fps=10,scale=500:-1:flags=lanczos,split [o1] [o2];[o1] palettegen [p]; [o2] fifo [o3];[o3] [p] paletteuse' final.gif

这会导致图像与文本正确呈现(右下角):

在此处输入图片描述

我不确定这是否是最佳选择,或者这些复杂的标志到底在做什么。我还随意将比例设置为 500,因为如果我不这样做,最终的 gif 会很小。

因此,如果有人有更好的解决方案,请在此处发布!

相关内容