我在 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_colors
和reserve_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