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 從公開儲存庫中收錄這些內容。

檢舉或申請下架