Video frame extraction
Extract key frames (I-frames) from video files using FFmpeg. Use this skill whenever the user needs to pull keyframes, thumbnails, or important frames from MP4, MKV, AVI, or other video formats. Outputs PNG image files named with zero-padded indices (e.g., keyframes_001.png).From its SKILL.md
npx -y skills add cxcscmu/SkillLearnBench --skill video-frame-extractionAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
1.4 KB, 312 tokens by cl100k_base, as published. Nobody here has run it
Video Frame Extraction with FFmpeg
Extract I-frames (keyframes) from a video file and save them as sequentially numbered PNG images.
Command
ffmpeg -i <input_video> -vf "select=eq(pict_type\,I)" -vsync vfr <output_dir>/keyframes_%03d.png
select=eq(pict_type\,I)— selects only I-frames (intra-coded keyframes)-vsync vfr— variable frame rate output to avoid duplicates%03d— zero-padded 3-digit index starting at 1 (e.g., 001, 002, ...)
Example
ffmpeg -i /root/super-mario.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr /root/keyframes_%03d.png
Output files: /root/keyframes_001.png, /root/keyframes_002.png, etc.
Listing Extracted Frames
After extraction, list frames sorted by name to get timeline order:
import glob, os
frames = sorted(glob.glob('/root/keyframes_*.png'))
Notes
- I-frames are the most information-rich frames and good representatives for scene analysis.
- Frame indices start at 1, not 0.
- If the video has no explicit I-frames, use
-vf fps=1to extract one frame per second instead.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.