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) 的尺寸而不损失质量?
谢谢
由于 GIF 的工作原理,调色板越复杂,生成的 gif 就会很快变大。
我会使用 GIMP 来优化 #2 生成的 GIF - 不是 100% 确定它是如何工作的,但我认为它基本上删除了从一帧到下一帧的重复信息。