关于 gif-generation
gif-generation 是一项将视频录制后处理为 GIF 的技能,面向需要制作动画演示或轻量缩略图的场景。它通过可配置的帧率、尺寸、调色板和抖动选项,在文件大小与画质间进行调整。
主要功能
- 01将视频转换为 GIF
- 02提供多种画质预设
- 03调整帧率与输出尺寸
- 04使用调色板和抖动优化
- 05检查输入、依赖与输出
适用场景
- 01将浏览器录制转换为动画 GIF
- 02制作较小的演示动画
- 03为文档生成 GIF
- 04降低 GIF 文件体积
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ athola/ claude-night-market --skill gif-generation安装后在 Claude Code 中输入/gif-generation确认已加载。
详细介绍
GIF 生成技能
对视频文件(webm/mp4)进行后处理,并使用可配置的质量设置生成优化的 GIF。
适用场景
- 将录制内容转换为动画 GIF 格式
- 创建轻量级演示动画
不适用场景
- 需要高质量视频输出时——请使用完整录制工具
- 无动画需求的静态图像生成
概述
此技能负责将视频录制内容(通常来自浏览器自动化)转换为 GIF 格式。它提供多种质量预设和优化选项,以平衡文件大小与视觉质量。
必需的进度项
- Validate input video file exists
- Check ffmpeg installation
- Execute GIF conversion
- Verify output and report results
验证: 使用 --help 标志运行命令,以确认其可用性。
流程
步骤 1:验证输入文件
确认源视频文件存在且格式受支持:
# Check file exists and get info
if [[ -f "$INPUT_FILE" ]]; then
file "$INPUT_FILE"
ffprobe -v quiet -show_format -show_streams "$INPUT_FILE" 2>/dev/null | head -20
else
echo "Error: Input file not found: $INPUT_FILE"
exit 1
fi
验证: 使用 --help 标志运行命令,以确认其可用性。
支持的输入格式:.webm、.mp4、.mov、.avi
步骤 2:检查 ffmpeg 是否已安装
确认 ffmpeg 可用:
if ! command -v ffmpeg &> /dev/null; then
echo "Error: ffmpeg is not installed"
echo "Install with: sudo apt install ffmpeg (Linux) or brew install ffmpeg (macOS)"
exit 1
fi
ffmpeg -version | head -1
验证: 使用 --help 标志运行命令,以确认其可用性。
步骤 3:执行转换
根据质量要求选择合适的转换命令:
基本转换(速度快,文件较大)
ffmpeg -i input.webm -vf "fps=10,scale=800:-1" output.gif
验证: 使用 --help 标志运行命令,以确认其可用性。
使用调色板生成的高质量转换(推荐)
ffmpeg -i input.webm -vf "fps=10,scale=800:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
验证: 使用 --help 标志运行命令,以确认其可用性。
使用抖动的最高质量转换
ffmpeg -i input.webm -vf "fps=15,scale=1024:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=256:stats_mode=single[p];[s1][p]paletteuse=dither=bayer:bayer_scale=5" output.gif
验证: 使用 --help 标志运行命令,以确认其可用性。
优化选项
| 选项 | 描述 | 推荐值 |
|---|---|---|
fps | 每秒帧数 | 流畅效果为 10-15,较小文件为 5-8 |
scale | 宽度(像素)(-1 表示保持纵横比) | 网页使用 800,缩略图使用 480 |
flags=lanczos | 高质量缩放算法 | 为获得最佳质量,始终使用 |
palettegen | 生成优化的调色板 | 对质量要求高的输出使用 |
dither | 抖动算法 | 图案效果使用 bayer,平滑效果使用 floyd_steinberg |
常用预设
# Thumbnail (small, fast loading)
ffmpeg -i input.webm -vf "fps=8,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" thumbnail.gif
# Documentation (balanced)
ffmpeg -i input.webm -vf "fps=10,scale=800:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" docs.gif
# High-fidelity demo
ffmpeg -i input.webm -vf "fps=15,scale=1024:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=256[p];[s1][p]paletteuse" demo.gif
验证: 使用 --help 标志运行命令,以确认其可用性。
步骤 4:验证输出
确认转换成功,并报告相关指标:
if [[ -f "$OUTPUT_FILE" ]]; then
echo "GIF generated successfully: $OUTPUT_FILE"
# Report file size
SIZE=$(du -h "$OUTPUT_FILE" | cut -f1)
echo "File size: $SIZE"
# Get dimensions and frame count
ffprobe -v quiet -select_streams v:0 -show_entries stream=width,height,nb_frames -of csv=p=0 "$OUTPUT_FILE"
else
echo "Error: GIF generation failed"
exit 1
fi
验证: 使用 --help 标志运行命令,以确认其可用性。
退出标准
- 已验证输入文件存在且为视频格式
- 已确认 ffmpeg 可用
- 已在指定输出路径创建 GIF 文件
- 已向用户报告输出文件大小
- 转换期间没有 ffmpeg 错误
故障排除
输出文件过大
降低质量设置:
# Lower fps and resolution
ffmpeg -i input.webm -vf "fps=8,scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" smaller.gif
验证: 使用 --help 标志运行命令,以确认其可用性。
颜色条带
使用抖动:
ffmpeg -i input.webm -vf "fps=10,scale=800:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse=dither=floyd_steinberg" smooth.gif
验证: 使用 --help 标志运行命令,以确认其可用性。
转换速度慢
为提高速度,使用不生成调色板的基本转换:
ffmpeg -i input.webm -vf "fps=10,scale=800:-1" quick.gif
验证: 使用 --help 标志运行命令,以确认其可用性。
评论
支持 Markdown