Video To Gif

作者 zc277584121959680e17acf无许可证收录于 2026年10月8日更新于 2026年10月8日仓库5周前更新

Convert a video to multiple GIF variants with different quality/size tradeoffs. Generates a comparison set so the user can visually pick the best result.

包含脚本Design & Creative
AI 生成的概览

将视频转换为多个不同画质与体积设置的 GIF 变体,便于直观比较。

功能
运行一个 Python 脚本,借助 FFmpeg 从视频文件生成一组 GIF 变体,调整帧率、宽度、颜色数量以及可选的 gifsicle 有损压缩。脚本将 GIF 写入输出目录,并打印按文件大小、帧率、宽度和颜色排序的对比表。预设(full、minimal、lossy、quality)和参数可用于裁剪片段或自定义参数组合。
适用场景
当用户想从视频片段制作 GIF,但不确定如何在文件大小、色彩准确度、流畅度和分辨率之间取舍时使用。适合屏幕录制和短视频片段,需要并排比较多个变体的场景。
运行要求
需要 FFmpeg 和 uv;gifsicle 为可选,用于有损压缩变体。附带可执行 Python 脚本(scripts/video_to_gif.py),通过 uv 以 Python 3.12 运行。未提及凭据或网络访问需求。

Skill: Video to GIF

Convert a video file into multiple GIF variants with different parameters, so the user can visually compare and pick the best one.

Prerequisite: FFmpeg and uv must be installed. gifsicle is optional (enables lossy compression variants).


When to Use

The user wants to create a GIF from a video clip but isn't sure about the right parameters. GIF quality involves tradeoffs between:

  • File size — smaller is better for sharing/embedding
  • Color accuracy — fewer colors = smaller but may cause banding
  • Smoothness — higher FPS = smoother but larger
  • Resolution — wider = sharper detail but larger

Rather than guessing, this skill generates multiple variants and lets the user decide.


Default Workflow

When the user provides a video file:

bash
uv run --python 3.12 /path/to/skills/video-to-gif/scripts/video_to_gif.py <input.mp4>

This generates GIFs in <input>_gifs/ directory with the full preset (18 variants):

  • 3 FPS options: 10, 15, 20
  • 3 widths: 480px, 640px, 800px
  • 2 color counts: 128, 256

Output includes a sorted comparison table showing file size, FPS, width, and colors for each variant.


Presets

PresetVariantsBest For
full~18General use — broad exploration of the parameter space
minimal~4Quick comparison — just a few key tradeoff points
lossy~12Smallest files — includes gifsicle lossy compression levels
quality~12Best visuals — higher res, includes bayer dithering
bash
# Quick comparison with fewer variantsuv run --python 3.12 .../video_to_gif.py input.mp4 --presets minimal
# Include lossy compression (requires gifsicle)uv run --python 3.12 .../video_to_gif.py input.mp4 --presets lossy
# Higher quality focusuv run --python 3.12 .../video_to_gif.py input.mp4 --presets quality

Common Options

FlagDefaultDescription
-o, --output-dir<input>_gifs/Output directory for all GIF variants
--startnoneStart time in seconds (trim source)
--endnoneEnd time in seconds (trim source)
--presetsfullPreset config: full, minimal, lossy, quality
--fpspresetOverride FPS values (e.g., --fps 10 15 20)
--widthpresetOverride width values (e.g., --width 480 640)
--colorspresetOverride color counts (e.g., --colors 128 256)
--lossypresetGifsicle lossy levels (e.g., --lossy 0 30 80)

Examples

bash
# Convert first 10 seconds of a videouv run --python 3.12 .../video_to_gif.py demo.mp4 --end 10
# Extract a specific segmentuv run --python 3.12 .../video_to_gif.py demo.mp4 --start 5 --end 15
# Custom parameter sweepuv run --python 3.12 .../video_to_gif.py demo.mp4 --fps 12 15 --width 480 800 --colors 256
# Lossy compression comparison (needs gifsicle)uv run --python 3.12 .../video_to_gif.py demo.mp4 --lossy 0 30 60 100

How to Choose

After running, open the output directory and compare:

  1. Start with the smallest files — check if quality is acceptable
  2. Look for color banding — if visible, try 256 colors or bayer dithering (quality preset)
  3. Check smoothness — if too choppy, go up to 15 or 20 FPS
  4. Check clarity — if text is unreadable, go up to 640 or 800px width

The sweet spot for most screen recordings is usually around 640px, 15fps, 256 colors.


Important Notes

  • Widths larger than the source video resolution are automatically skipped.
  • The script uses FFmpeg's two-pass palette generation for optimal GIF quality (much better than single-pass).
  • Lossy compression via gifsicle can reduce file size by 30-70% with minimal visual impact at level 30-60.
  • For very long clips, consider trimming with --start/--end first — GIFs over 10 seconds can get very large.

来源与署名

来源:zc277584121/marketing-skills位于skills/video-to-gif提交959680e

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架