Frame extraction fails on ffmpeg 9: '-vsync vfr' no longer recognized

Author: KenHROICreated Aug 27, 2026Updated Aug 27, 2026

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-video v0.2.0 (commit 83da59f)
  • 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 found

Location

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-whisper

Proposed 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