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": 4.55,
"score": 0.151459,
"kind": "transition"
}
],
"total": 1
}
}
inspect_window
Arguments
{
"source": "$CLIP",
"start_sec": 3.6,
"end_sec": 5.6,
"fps": 2
}
Result
{
"ok": true,
"data": {
"source_path": "~/hill/gallery/repo/cards/dissolve-news-archive/clip.mp4",
"start_sec": 3.6,
"end_sec": 5.6,
"fps": 2,
"frames": [
{
"index": 1,
"timestamp_sec": 3.6,
"timecode": "00:00:03.600",
"file_path": "<cache>/b3391ce0b4b8af5e4b09/dense_de9008fb555c1911ad21/frame_0001.jpg",
"width": 640,
"height": 360,
"requested_timestamp": 3.6,
"decoded_timestamp": null,
"timestamp_delta": null
},
{
"index": 2,
"timestamp_sec": 4.1,
"timecode": "00:00:04.100",
"file_path": "<cache>/b3391ce0b4b8af5e4b09/dense_de9008fb555c1911ad21/frame_0002.jpg",
"width": 640,
"height": 360,
"requested_timestamp": 4.1,
"decoded_timestamp": null,
"timestamp_delta": null
},
{
"index": 3,
"timestamp_sec": 4.6,
"timecode": "00:00:04.600",
"file_path": "<cache>/b3391ce0b4b8af5e4b09/dense_de9008fb555c1911ad21/frame_0003.jpg",
"width": 640,
"height": 360,
"requested_timestamp": 4.6,
"decoded_timestamp": null,
"timestamp_delta": null
},
{
"index": 4,
"timestamp_sec": 5.1,
"timecode": "00:00:05.100",
"file_path": "<cache>/b3391ce0b4b8af5e4b09/dense_de9008fb555c1911ad21/frame_0004.jpg",
"width": 640,
"height": 360,
"requested_timestamp": 5.1,
"decoded_timestamp": null,
"timestamp_delta": null
}
],
"contact_sheet_path": "/private<cache>/b3391ce0b4b8af5e4b09/contact_sheets/sheet_4samples_4cols_1ad1b2.jpg",
"estimated_vision_tokens": 1032,
"tool_file": {
"_tag": "ToolFile",
"name": "sheet_4samples_4cols_1ad1b2.jpg",
"mimeType": "image/jpeg",
"encoding": "base64",
"data": "<174280 base64 chars dropped>",
"byteLength": 130710
}
}
}
Question and answer
- Question
- Is there a fade between shots? Where is it?
- Answer
- The tool reports a transition at 4.55 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 5.12 s of universal-khrushchev-resigns-1964 from 84.52 s; shot B is 5.88 s of universal-polaris-launch-1960 from 26.56 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 4.12 s to 5.12 s of the clip. The truth is the fade midpoint 4.62 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 'Universal Newsreel 1964: Khrushchev resigns' 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
- PD
- Author
- Universal Newsreels
- Source
- commons.wikimedia.org
This work has been released into the public domain by its copyright holder, Universal Pictures. This applies worldwide.
Also uses (insert 1)
- Licence
- PD
- Author
- Universal International Newsreel
- Source
- commons.wikimedia.org
This work has been released into the public domain by its copyright holder, Universal Pictures. This applies worldwide.