如何在使用 FFmpeg 将 MP4 转换为 GIF 时限制 GIF 文件中使用的颜色数量?

如何在使用 FFmpeg 将 MP4 转换为 GIF 时限制 GIF 文件中使用的颜色数量?

我在 SuperUser 的某个地方找到了这个命令,它可以将 MP4 转换为 GIF:

ffmpeg -i INPUT_FILE.MP4 -vf "fps=16,scale=160:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 OUTPUT_FILE.GIF

效果很好,但 FFmpeg 喜欢使用全部 256 种颜色,这会使 GIF 变得非常大。我希望 FFmpeg 使用 32 或 64 种颜色,因为这有助于减小文件大小,并使我的硬件更容易解析 GIF。

我正在使用 ATSAMD51 在屏幕上显示 GIF,因此颜色更少 = 渲染速度更快。

在 ezgif.com 上,您可以优化 GIF。我想在 FFmpeg 中做这样的事情:

我想在 FFmpeg 中做的事情的图片

那么,在将 MP4 转换为 GIF 时,FFmpeg 是否可以使用指定数量的颜色?(哦,请不要使用透明度!这会减慢解码速度。)

(此外,我运行的是 Windows 10,并且对 FFmpeg 还不是很熟悉)

答案1

使用max_colorsreserve_transparent选项调色板

ffmpeg -i input.mp4 -vf "fps=16,scale=160:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=32:reserve_transparent=0[p];[s1][p]paletteuse" -loop 0 output.gif

相关内容