gif-compression

📁 wxad/skills 📅 Jan 29, 2026
2
总安装量
2
周安装量
#69133
全站排名
安装命令
npx skills add https://github.com/wxad/skills --skill gif-compression

Agent 安装分布

mcpjam 2
claude-code 2
kilo 2
junie 2
zencoder 2

Skill 文档

GIF 压缩

将 MP4 视频转换为优化 GIF 的工作流,包含正确的帧率和压缩设置。

GIF 必须压缩。工作流使用 ffmpeg 生成调色板并以 25fps 创建 GIF(超过此帧率会造成卡顿),然后使用 gifsicle 进行优化。对于质量要求较高的设计,尽量压缩到 10MB 左右,同时保持可接受的视觉质量。

工作流概述

GIF 必须压缩。MP4 转 GIF 的工作流使用 ffmpeg 生成调色板并以 25fps 创建 GIF,然后使用 gifsicle 进行优化。

重要提示: 帧率不能超过 25fps,否则会造成卡顿。

步骤 1:生成调色板

使用 ffmpeg 以 25fps 生成调色板图片:

ffmpeg -i input.mp4 -vf "fps=25,scale=700:-1:flags=lanczos,palettegen" palette.png

参数说明:

  • fps=25: 设置帧率为 25fps(流畅播放的关键)
  • scale=700:-1: 宽度缩放到 700px,保持宽高比
  • flags=lanczos: 使用 Lanczos 缩放算法以获得更好的质量
  • palettegen: 生成优化的调色板

步骤 2:生成 GIF

使用生成的调色板创建 GIF:

ffmpeg -i input.mp4 -i palette.png -lavfi "fps=25,scale=700:-1:flags=lanczos [x]; [x][1:v] paletteuse" -loop 0 output.gif

参数说明:

  • -i input.mp4: 输入视频文件
  • -i palette.png: 输入调色板文件
  • fps=25: 匹配调色板的帧率(25fps)
  • scale=700:-1:flags=lanczos: 与调色板生成时相同的缩放参数
  • paletteuse: 应用生成的调色板
  • -loop 0: 无限循环

步骤 3:使用 gifsicle 优化(可选)

首先检查步骤 2 生成的文件大小:

  1. 检查 output.gif 的文件大小
  2. 如果文件 < 10MB: 不需要 gifsicle 优化,直接使用 output.gif
  3. 如果文件 >= 10MB: 需要进行 gifsicle 优化

使用 gifsicle 优化(仅在文件 >= 10MB 时):

这是一个迭代过程,需要根据文件大小重复执行,直到尽可能接近 10MB。

初始优化:

gifsicle -O1 --lossy=5 output.gif -o optimized.gif

检查文件大小并重复优化:

  1. 检查优化后的文件大小
  2. 如果文件大于 10MB,增加 --lossy 值(例如 --lossy=10、--lossy=15)并重新执行
  3. 如果文件小于 10MB,减少 --lossy 值(例如 --lossy=3、--lossy=1)并重新执行
  4. 重复此过程,直到文件大小尽可能接近 10MB

参数说明:

  • -O1: 优化级别 1
  • --lossy=N: 有损压缩级别(根据文件大小调整,N 越大压缩越多)
  • output.gif: 输入 GIF 文件
  • -o optimized.gif: 输出优化后的 GIF

调整策略:

  • 文件 > 10MB: 增加 --lossy 值(例如 10、15、20)
  • 文件 < 10MB: 减少 --lossy 值(例如 3、1、0)
  • 目标: 尽可能接近 10MB,同时保持可接受的视觉质量

关键要点

  • 帧率限制: 永远不要超过 25fps 以避免卡顿
  • 两步流程: 始终先生成调色板,再创建 GIF
  • 缩放一致性: 两个步骤使用相同的缩放参数
  • 迭代优化: 使用 gifsicle 重复优化,根据文件大小调整 --lossy 参数,直到尽可能接近 10MB
  • 目标大小: 对于高质量设计,目标文件大小约为 10MB