基于 pngquant 的最高质量 GIF 编码器。
gifski 利用 pngquant 的高级功能将视频帧转换为 GIF 动画,实现跨帧调色板和时间抖动。它可以生成每帧使用数千种颜色的 GIF 动画。
这是一个命令行工具,但也可以编译为 C 库以便在其他应用中无缝使用。
可执行文件请查看发布页面。
如果你安装了 Homebrew,也可以使用 brew install gifski
安装。
如果你安装了 Rust(来自 rustup)(1.63+版本),也可以通过源代码构建:cargo install gifski
。
gifski 是一个命令行工具。如果你不熟悉终端操作,可以尝试 Windows 或 macOS 的图形界面版本。
提示:你可以将文件拖放到终端窗口,而不必手动输入文件路径!
如果你安装了 ffmpeg,可以通过添加 -f yuv4mpegpipe
参数将视频直接流式传输到 gifski 命令:
ffmpeg -i video.mp4 -f yuv4mpegpipe - | gifski -o anim.gif -
将上述代码中的 "video.mp4" 替换为你的实际视频路径。
注意命令末尾的 -
。这告诉 gifski
从标准输入读取数据。从磁盘读取 .y4m
文件也可以,但这些文件通常非常大。
如果视频分辨率过高,gifski
可能会自动缩小视频。如果你能接受较大的文件大小,可以使用 --width=1280
。
也可以使用包含 PNG 帧的目录作为输入。你可以从任何动画软件导出这些帧。如果安装了 ffmpeg
,也可以用它导出帧:
ffmpeg -i video.webm frame%04d.png
然后从这些帧生成 GIF:
gifski -o anim.gif frame*.png
注意 *
是一个特殊的通配符,放在引号内("*"
)不起作用。
你还可以调整帧的大小(使用 -W <宽度(像素)>
选项)。如果输入曾经使用有损视频编解码器编码,建议至少将帧大小减半,以隐藏压缩伪影并抵消视频编解码器进行的色度抽样。
更多选项请查看 gifski --help
。