agentic-video Gallery

Find when a scoreboard-like box in one region changes

Motion and regionsFilmVerified
0:20CC-BY-2.5 · Orange Open Movie Team (Blender Foundation)

Proof frames

Click a frame to seek

Tool calls

1 calls · agentic-video 0.3.1
track_region_changesimac · 431 ms

Arguments

{
  "source": "$CLIP",
  "start_sec": 0,
  "end_sec": 20,
  "region": {
    "x": 0.0875,
    "y": 0.37777777777777777,
    "width": 0.275,
    "height": 0.17777777777777778
  },
  "sample_fps": 4,
  "max_candidates": 5
}

Result

{
  "ok": true,
  "data": {
    "region": {
      "x": 0.0875,
      "y": 0.37777777777777777,
      "width": 0.275,
      "height": 0.17777777777777778
    },
    "start_sec": 0,
    "end_sec": 20,
    "sample_fps": 4,
    "sample_count": 80,
    "temporal_resolution_sec": 0.25,
    "scan_segments": [
      {
        "start_sec": 0,
        "end_sec": 20,
        "sample_count": 80
      }
    ],
    "threshold": 0.02,
    "baseline_median": 0.00002,
    "baseline_mad": 0.00002,
    "steady_change": {
      "detected": false,
      "active_fraction": 0.075949,
      "activity_floor": 0.001,
      "note": "Most sample pairs are still; changes, if any, are the listed…"
    },
    "samples": [
      {
        "from_timestamp_sec": 0,
        "timestamp_sec": 0.25,
        "from_timestamp_provenance": {
          "requested_timestamp": 0,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "timestamp_provenance": {
          "requested_timestamp": 0.25,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "change_score": 0.000103,
        "mean_abs_diff": 0.000158,
        "changed_fraction": 0
      },
      {
        "from_timestamp_sec": 0.25,
        "timestamp_sec": 0.5,
        "from_timestamp_provenance": {
          "requested_timestamp": 0.25,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "timestamp_provenance": {
          "requested_timestamp": 0.5,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "change_score": 0.000268,
        "mean_abs_diff": 0.000413,
        "changed_fraction": 0
      },
      {
        "from_timestamp_sec": 0.5,
        "timestamp_sec": 0.75,
        "from_timestamp_provenance": {
          "requested_timestamp": 0.5,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "timestamp_provenance": {
          "requested_timestamp": 0.75,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "change_score": 0.001329,
        "mean_abs_diff": 0.002044,
        "changed_fraction": 0
      },
      {
        "from_timestamp_sec": 0.75,
        "timestamp_sec": 1,
        "from_timestamp_provenance": {
          "requested_timestamp": 0.75,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "timestamp_provenance": {
          "requested_timestamp": 1,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "change_score": 0.000314,
        "mean_abs_diff": 0.000483,
        "changed_fraction": 0
      },
      {
        "from_timestamp_sec": 1,
        "timestamp_sec": 1.25,
        "from_timestamp_provenance": {
          "requested_timestamp": 1,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "timestamp_provenance": {
          "requested_timestamp": 1.25,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "change_score": 0.000061,
        "mean_abs_diff": 0.000094,
        "changed_fraction": 0
      },
      "…trimmed 74 more"
    ],
    "candidates": [
      {
        "from_timestamp_sec": 5.5,
        "timestamp_sec": 5.75,
        "from_timestamp_provenance": {
          "requested_timestamp": 5.5,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "timestamp_provenance": {
          "requested_timestamp": 5.75,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "change_score": 0.556639,
        "mean_abs_diff": 0.429778,
        "changed_fraction": 0.792236,
        "rank": 1
      },
      {
        "from_timestamp_sec": 12.5,
        "timestamp_sec": 12.75,
        "from_timestamp_provenance": {
          "requested_timestamp": 12.5,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "timestamp_provenance": {
          "requested_timestamp": 12.75,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "change_score": 0.556622,
        "mean_abs_diff": 0.429753,
        "changed_fraction": 0.792236,
        "rank": 2
      },
      {
        "from_timestamp_sec": 15.75,
        "timestamp_sec": 16,
        "from_timestamp_provenance": {
          "requested_timestamp": 15.75,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "timestamp_provenance": {
          "requested_timestamp": 16,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "change_score": 0.556587,
        "mean_abs_diff": 0.429699,
        "changed_fraction": 0.792236,
        "rank": 3
      },
      {
        "from_timestamp_sec": 9,
        "timestamp_sec": 9.25,
        "from_timestamp_provenance": {
          "requested_timestamp": 9,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "timestamp_provenance": {
          "requested_timestamp": 9.25,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "change_score": 0.556583,
        "mean_abs_diff": 0.429692,
        "changed_fraction": 0.792236,
        "rank": 4
      },
      {
        "from_timestamp_sec": 2.25,
        "timestamp_sec": 2.5,
        "from_timestamp_provenance": {
          "requested_timestamp": 2.25,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "timestamp_provenance": {
          "requested_timestamp": 2.5,
          "decoded_timestamp": null,
          "timestamp_delta": null
        },
        "change_score": 0.556506,
        "mean_abs_diff": 0.429706,
        "changed_fraction": 0.791992,
        "rank": 5
      }
    ]
  }
}

Question and answer

Question
When does the scoreboard change?
Answer
The tool reports changes in the box at 2.5, 5.75, 9.25, 12.75, 16 seconds.
Check passedprecision 1.00 (min 1), recall 1.00 (min 1), tolerance 0.5s

How it was checked

Truth from
constructed
Fixed at

Planted by this recipe before any tool ran: ffmpeg scaled the source's first 20 s to 640x360 px and overlaid a 176x64 px scoreboard-like box at x=56, y=136 px (Pillow pictures: dark slate body, amber body in the planted intervals, white bars in both). The box changes at 2.38, 5.8, 9.27, 12.65, 15.94 s, the state switching at every time. The tolerance 0.5 s covers the tool's 0.25 s sample step.

A script drew the box over a fixed spot and changed its colour and brightness at 5 times it chose, so the answer is those planted times, not a real scoreboard; the tool takes the region as fractions of the frame, so the pixel box was converted.

Try it yourself

Use agentic-video on my video. A box in the picture is 176 by 64 pixels, with its top-left corner at x 56 px and y 136 px, in a 640 by 360 px frame. Convert that area to fractions of the frame and call track_region_changes on the first 20 seconds with sample_fps 4 and max_candidates 5. Tell me the times, in seconds, when the box changes colour.
  1. Get the .mcpb file and open it in Claude Desktop.
  2. Or: pip install agentic-video

Clip and licence

Licence
CC-BY-2.5
Author
Orange Open Movie Team (Blender Foundation)
Source
commons.wikimedia.org
This file is licensed under the Creative Commons Attribution 2.5 Generic license.