Find the cross-dissolve where two shots are joined
Proof frames
Tool calls
detect_cuts
Arguments
{
"source": "$CLIP"
}
Result
{
"ok": true,
"data": {
"cuts": [
{
"timestamp_sec": 5.45,
"score": 0.213058,
"kind": "transition"
}
],
"total": 1
}
}
inspect_window
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.
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.
- Get the .mcpb file and open it in Claude Desktop.
- 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.