agentic-video Gallery

Find the cross-dissolve where two shots are joined

Cuts and editsCookingVerified
0:11CC-BY-SA-4.0 · مصطفى ملو (Wikimedia Commons user)

Proof frames

Click a frame to seek

Tool calls

2 calls · agentic-video 0.3.1
detect_cutsimac · 364 ms

Arguments

{
  "source": "$CLIP"
}

Result

{
  "ok": true,
  "data": {
    "cuts": [
      {
        "timestamp_sec": 5.45,
        "score": 0.213058,
        "kind": "transition"
      }
    ],
    "total": 1
  }
}
inspect_windowimac · 331 ms

Arguments

{
  "source": "$CLIP",
  "start_sec": 4.48,
  "end_sec": 6.48,
  "fps": 2
}

Result

{
  "ok": true,
  "data": {
    "source_path": "~/hill/gallery/repo/cards/dissolve-cooking/clip.mp4",
    "start_sec": 4.48,
    "end_sec": 6.48,
    "fps": 2,
    "frames": [
      {
        "index": 1,
        "timestamp_sec": 4.48,
        "timecode": "00:00:04.480",
        "file_path": "<cache>/40925840495a896d8f72/dense_e467f8bb527f2988ee62/frame_0001.jpg",
        "width": 640,
        "height": 360,
        "requested_timestamp": 4.48,
        "decoded_timestamp": null,
        "timestamp_delta": null
      },
      {
        "index": 2,
        "timestamp_sec": 4.98,
        "timecode": "00:00:04.980",
        "file_path": "<cache>/40925840495a896d8f72/dense_e467f8bb527f2988ee62/frame_0002.jpg",
        "width": 640,
        "height": 360,
        "requested_timestamp": 4.98,
        "decoded_timestamp": null,
        "timestamp_delta": null
      },
      {
        "index": 3,
        "timestamp_sec": 5.48,
        "timecode": "00:00:05.480",
        "file_path": "<cache>/40925840495a896d8f72/dense_e467f8bb527f2988ee62/frame_0003.jpg",
        "width": 640,
        "height": 360,
        "requested_timestamp": 5.48,
        "decoded_timestamp": null,
        "timestamp_delta": null
      },
      {
        "index": 4,
        "timestamp_sec": 5.98,
        "timecode": "00:00:05.980",
        "file_path": "<cache>/40925840495a896d8f72/dense_e467f8bb527f2988ee62/frame_0004.jpg",
        "width": 640,
        "height": 360,
        "requested_timestamp": 5.98,
        "decoded_timestamp": null,
        "timestamp_delta": null
      }
    ],
    "contact_sheet_path": "/private<cache>/40925840495a896d8f72/contact_sheets/sheet_4samples_4cols_cc0522.jpg",
    "estimated_vision_tokens": 1032,
    "tool_file": {
      "_tag": "ToolFile",
      "name": "sheet_4samples_4cols_cc0522.jpg",
      "mimeType": "image/jpeg",
      "encoding": "base64",
      "data": "<433540 base64 chars dropped>",
      "byteLength": 325154
    }
  }
}

Question and answer

Question
Is there a fade between shots? Where is it?
Answer
The tool reports a transition at 5.45 seconds, where the two shots meet.
Check passedanswer 5.45, expected 5.5 ±0.5

How it was checked

Truth from
constructed
Fixed at

Planted by this recipe before any tool ran: shot A is 6 s of abadir-nomadic-pizza from 37.04 s; shot B is 5.64 s of armenia-bread from 28.92 s (another source of the same domain; neither shot has a hard cut inside). ffmpeg joined them with one 1.0 s cross-dissolve (xfade fade) from 5 s to 6 s of the clip. The truth is the fade midpoint 5.5 s, with tolerance 0.5 s (half the fade), so a cut time anywhere inside the fade passes. The window given to inspect_window is the fade plus 0.5 s either side, fixed here.

A script joined two shots, one from 'Filling and laying dough for a nomad flatbread on hot stones' and one from another clip of the same kind, with a planted 1.0 s cross-dissolve and no sound, so the answer is one time inside that fade (not its start and end); the card does not show whether detect_cuts finds other cuts.

Try it yourself

Use agentic-video on my video. Run detect_cuts on the whole video, then run inspect_window over the part where the picture fades into the next shot. Tell me the time of the fade.
  1. Get the .mcpb file and open it in Claude Desktop.
  2. Or: pip install agentic-video

Clip and licence

Licence
CC-BY-SA-4.0
Author
مصطفى ملو (Wikimedia Commons user)
Source
commons.wikimedia.org
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.

Also uses (insert 1)

Licence
CC-BY-SA-2.0
Author
Clay Gilliland (Flickr user 26781577@N07)
Source
commons.wikimedia.org
This file is licensed under the Creative Commons Attribution-Share Alike 2.0 Generic license.