Frame extraction fails on FFmpeg 9: `-vsync` was removed

Author: Beatkim96Created Aug 30, 2026Updated Aug 30, 2026

Summary

/watch fails during frame extraction on FFmpeg 9.x. scripts/frames.py passes -vsync vfr, but -vsync was removed in FFmpeg 9 — it had been deprecated since FFmpeg 5.x in favour of -fps_mode.

Download and caption fetching both succeed; only frame extraction breaks.

Error

[watch] extracting scene-aware frames over 06:20-06:55 (35.0s) (target 40, cap 40)…
ffmpeg scene extraction failed: Unrecognized option 'vsync'.
Error splitting the argument list: Option not found

Environment

  • Windows 11
  • ffmpeg/ffprobe 9.0.1-full_build (Gyan.FFmpeg via winget)
  • Python 3.11.9
  • yt-dlp 2026.08.19

Cause

-vsync is gone in FFmpeg 9. Confirmed locally:

$ ffmpeg -h full | grep fps_mode
-fps_mode[:<stream_spec>]  set framerate mode for matching video streams

$ ffmpeg -h full | grep vsync
(no match — only the unrelated "avsynctest" filter)

Suggested fix

Two occurrences in skills/watch/scripts/frames.py (lines 256 and 615):

diff
-        "-vsync", "vfr",
+        "-fps_mode", "vfr",

Backward compatibility

-fps_mode was added in June 2022 and has been available since FFmpeg 5.1, so this change does not drop support for any FFmpeg version that the current code supports — -vsync was already deprecated by then. FFmpeg's own test suite made the same replacement.

Happy to open a PR if that's useful.

Source: bradautomates/claude-video