Frame extraction fails on ffmpeg 9: '-vsync vfr' no longer recognized
Summary
Frame extraction fails with ffmpeg 9.x: -vsync vfr is no longer a recognized option. The crash happens in both frame paths, so balanced/token-burner (scene-aware) and efficient (keyframe) all produce zero frames and the video falls back to transcript-only.
Environment
- Plugin:
watch@claude-videov0.2.0 (commit83da59f) - ffmpeg 9.0.1 (Homebrew, macOS arm64)
- yt-dlp 2026.08.19
Error
ffmpeg scene extraction failed: Unrecognized option 'vsync'.
Error splitting the argument list: Option not foundLocation
skills/watch/scripts/frames.py — two identical spots:
- Line 256 (scene-aware extraction, used by
balanced/token-burner) - Line 615 (keyframe extraction, used by
efficient)
Both build: ffmpeg ... -i <video> -vf <filter> -vsync vfr -q:v 4 frame_%04d.jpg
Repro
python3 watch.py some_clip.mp4 --detail balanced --no-whisperProposed fix
Replace "-vsync", "vfr", with "-fps_mode", "vfr", in both places. -fps_mode is the modern spelling (available since ffmpeg 5.0, where -vsync was deprecated), so the swap is safe for older ffmpeg too.
Verified locally: with the two-line change, both balanced and efficient modes extract frames correctly from a test clip on ffmpeg 9.0.1.
Source: bradautomates/claude-video