video-to-gif

安装量: 361
排名: #5963

安装

npx skills add https://github.com/zc277584121/marketing-skills --skill video-to-gif
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: uv run --python 3.12 /path/to/skills/video-to-gif/scripts/video_to_gif.py < input.mp 4

This generates GIFs in _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 Preset Variants Best For full ~18 General use — broad exploration of the parameter space minimal ~4 Quick comparison — just a few key tradeoff points lossy ~12 Smallest files — includes gifsicle lossy compression levels quality ~12 Best visuals — higher res, includes bayer dithering

Quick comparison with fewer variants

uv 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 focus

uv run --python 3.12 .. ./video_to_gif.py input.mp4 --presets quality Common Options Flag Default Description -o , --output-dir _gifs/ Output directory for all GIF variants --start none Start time in seconds (trim source) --end none End time in seconds (trim source) --presets full Preset config: full, minimal, lossy, quality --fps preset Override FPS values (e.g., --fps 10 15 20 ) --width preset Override width values (e.g., --width 480 640 ) --colors preset Override color counts (e.g., --colors 128 256 ) --lossy preset Gifsicle lossy levels (e.g., --lossy 0 30 80 ) Examples

Convert first 10 seconds of a video

uv run --python 3.12 .. ./video_to_gif.py demo.mp4 --end 10

Extract a specific segment

uv run --python 3.12 .. ./video_to_gif.py demo.mp4 --start 5 --end 15

Custom parameter sweep

uv 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: Start with the smallest files — check if quality is acceptable Look for color banding — if visible, try 256 colors or bayer dithering (quality preset) Check smoothness — if too choppy, go up to 15 or 20 FPS 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.

返回排行榜