v1.9.0 - Perceptual frame-dedup for scene screenshots
Added
Perceptual frame-dedup for scene-detection screenshots. After extraction, scenes mode compares 16×16 grayscale thumbnails of consecutive captures (mean-absolute-difference against the last kept frame) and drops near-duplicates — a slide held across several detected scene changes now collapses to a single frame instead of many near-identical ones. Comparing against the last kept frame (not the previous one) keeps a gradual pan while removing static repeats.
- Runs only in scene-detection mode;
--screenshots chaptersand explicit-timestamp captures are intentional and left untouched. - No new flag; the threshold is fixed (mean-abs-diff ≤ 2.0 on a 0–255 scale).
- Pure ffmpeg + stdlib (no PIL). Approach ported from
frames.pyinbradautomates/claude-video.
Changed
### Screenshot Statusnow reports dedup explicitly: when frames are removed the count line readsN screenshots requested, M successfully extracted, D near-duplicate(s) removed (K kept). Previously deduped frames would have been indistinguishable from extraction failures in the count. With zero dedup the wording is unchanged.- Version bumped 1.8.3 → 1.9.0.
Tests
Added unit coverage for the pure helpers frame_delta and dedupe_perceptual_indices (drift-aware keep logic, threshold boundary, length-mismatch fail-open) and for the render_screenshot_status dedup clause. Suite: 81 passing. The ffmpeg-backed glue (compute_thumbnail, dedupe_screenshots) stays outside the unit suite per the project's I/O policy and was verified with an offline ffmpeg smoke check.
Full changelog: CHANGELOG.md