GIF 尺寸太大?

nfi*_*her 5 gif ffmpeg image-conversion

我正在尝试从 MP4 视频文件中提取 GIF。

现在我有两个 modi 可以用来执行此操作:

1)常规的:

ffmpeg -t 7.7 -ss 00:22:53 -i video.mp4 -i palette.png -s 320x174 -filter_complex "fps=15" output.gif
Run Code Online (Sandbox Code Playgroud)

它给出一个文件,大小为 1.6MB。

和 2)

ffmpeg -t 7.7 -ss 00:22:53 -i video.mp4 -i palette.png -filter_complex "fps=15,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif
Run Code Online (Sandbox Code Playgroud)

这给出了一种更好看的方式,但是 4.5MB(增加了 181%)的大文件。它使用我用它创建的 16x16 调色板文件

ffmpeg -y -t 7.7 -ss 00:22:53 -i video.mp4 -vf fps=15,scale=320:-1:flags=lanczos,palettegen palette.png
Run Code Online (Sandbox Code Playgroud)

现在我不太明白为什么 2 个具有相同 fps、持续时间和分辨率的 GIF 在大小上会有如此巨大的差异。我的直觉是,它们应该是相同的。为什么会有这样的差异呢?有没有什么方法可以将 2) 的尺寸缩小到 1) 的尺寸而不损失质量?

谢谢

Hyd*_*oax 4

由于 GIF 的工作原理,调色板越复杂,生成的 gif 就会很快变大。

我会使用 GIMP 来优化 #2 生成的 GIF - 不是 100% 确定它是如何工作的,但我认为它基本上删除了从一帧到下一帧的重复信息。

GIMP 截图

  • 对于我对这个主题的不完整知识表示歉意,但我相信这与 GIF 压缩系统 (LZW) 的工作原理有关:例如,两个不同的调色板可能会导致不同级别的抖动 - 抖动是随机的通过混合有限调色板中的相似且可用的颜色来近似颜色时产生的点图案。抖动与 GIF 文件大小相关,因为它会中断有利于高效 LZW 压缩的纯色干净区域,并且会使文件大小大于所需大小。 (2认同)