mcpField
G
gif-generation

gif-generation

github.com/athola创意与媒体343110 次安装1 天前更新
代码仓库

关于 gif-generation

gif-generation 是一项将视频录制后处理为 GIF 的技能,面向需要制作动画演示或轻量缩略图的场景。它通过可配置的帧率、尺寸、调色板和抖动选项,在文件大小与画质间进行调整。

主要功能

  1. 01将视频转换为 GIF
  2. 02提供多种画质预设
  3. 03调整帧率与输出尺寸
  4. 04使用调色板和抖动优化
  5. 05检查输入、依赖与输出

适用场景

  1. 01将浏览器录制转换为动画 GIF
  2. 02制作较小的演示动画
  3. 03为文档生成 GIF
  4. 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