QA a clip for a silent gap before posting
0:20generated · generated
Proof frames
Tool calls
review_video
Arguments
{
"source": "$CLIP"
}
Result
{
"ok": true,
"data": {
"metadata": {
"source_path": "~/work/cards/review-synthetic/clip.mp4",
"duration_sec": 20,
"width": 640,
"height": 360,
"fps": 15,
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"size_bytes": 721528,
"has_audio": true,
"audio_codec": "aac",
"video_codec": "h264",
"fingerprint": "ee1faac165816b180847",
"has_video": true
},
"contact_sheet": {
"file_path": "<cache>/ee1faac165816b180847/contact_sheets/sheet_24samples_4cols_423fa4.jpg",
"sample_count": 24,
"rows": 6,
"cols": 4,
"start_sec": 0.417,
"end_sec": 19.583,
"timestamps": [
0.417,
1.25,
2.083,
2.917,
3.75,
4.583,
5.417,
6.25,
7.083,
7.917,
8.75,
9.583,
10.417,
11.25,
12.083,
12.917,
13.75,
14.583,
15.417,
16.25,
17.083,
17.917,
18.75,
19.583
],
"frame_width": 768,
"frame_height": 432,
"tool_file": {
"_tag": "ToolFile",
"name": "sheet_24samples_4cols_423fa4.jpg",
"mimeType": "image/jpeg",
"encoding": "base64",
"data": "<756680 base64 chars dropped>",
"byteLength": 567509
}
},
"cuts": [
{
"timestamp_sec": 0.666667,
"score": 0.364133,
"kind": "cut"
},
{
"timestamp_sec": 1.45,
"score": 0.11646,
"kind": "transition"
},
{
"timestamp_sec": 2.266667,
"score": 0.364455,
"kind": "cut"
},
{
"timestamp_sec": 3.466667,
"score": 0.910707,
"kind": "cut"
},
{
"timestamp_sec": 5.466667,
"score": 0.364578,
"kind": "cut"
},
{
"timestamp_sec": 6.8,
"score": 1,
"kind": "cut"
},
{
"timestamp_sec": 7.4,
"score": 0.925423,
"kind": "cut"
},
{
"timestamp_sec": 8.666667,
"score": 0.364508,
"kind": "cut"
},
{
"timestamp_sec": 9.45,
"score": 0.116541,
"kind": "transition"
},
{
"timestamp_sec": 10.266667,
"score": 0.364458,
"kind": "cut"
},
{
"timestamp_sec": 11.466667,
"score": 0.911102,
"kind": "cut"
},
{
"timestamp_sec": 13.466667,
"score": 0.364542,
"kind": "cut"
},
{
"timestamp_sec": 14.25,
"score": 0.116553,
"kind": "transition"
},
{
"timestamp_sec": 15.066667,
"score": 0.359542,
"kind": "cut"
},
{
"timestamp_sec": 16,
"score": 0.906476,
"kind": "cut"
},
{
"timestamp_sec": 16.666667,
"score": 0.363916,
"kind": "cut"
},
{
"timestamp_sec": 18.266667,
"score": 0.364438,
"kind": "cut"
},
{
"timestamp_sec": 18.866667,
"score": 0.925739,
"kind": "cut"
},
{
"timestamp_sec": 19.866667,
"score": 0.364615,
"kind": "cut"
}
],
"cuts_total": 19,
"loudness": {
"average_rms_dbfs": -21.721,
"peak_dbfs": -9.332,
"peak_sec": 16.035,
"window_sec": 0.25,
"silence_threshold_dbfs": -60,
"silence_gaps": [
{
"start_sec": 10.23,
"end_sec": 11.71,
"duration_sec": 1.48,
"threshold_dbfs": -60
}
],
"silence_gaps_total": 1,
"outliers_total": 10,
"fault_outliers_total": 0,
"outliers": [
{
"start_sec": 20,
"end_sec": 20.015604,
"band": "mid",
"direction": "cut",
"shape": "transient",
"delta_db": -57.009,
"fault_level": false
},
{
"start_sec": 11.5,
"end_sec": 11.75,
"band": "air",
"direction": "cut",
"shape": "transient",
"delta_db": -23.831,
"fault_level": false
},
{
"start_sec": 11.5,
"end_sec": 11.75,
"band": "high",
"direction": "cut",
"shape": "transient",
"delta_db": -23.738,
"fault_level": false
},
{
"start_sec": 7,
"end_sec": 7.5,
"band": "low_mid",
"direction": "boost",
"shape": "transient",
"delta_db": 19.724,
"fault_level": false
},
{
"start_sec": 18.5,
"end_sec": 19,
"band": "low_mid",
"direction": "boost",
"shape": "transient",
"delta_db": 19.576,
"fault_level": false
},
{
"start_sec": 16,
"end_sec": 16.5,
"band": "mid",
"direction": "boost",
"shape": "transient",
"delta_db": 18.253,
"fault_level": false
},
{
"start_sec": 11.5,
"end_sec": 11.75,
"band": "sub",
"direction": "cut",
"shape": "transient",
"delta_db": -18.21,
"fault_level": false
},
{
"start_sec": 3.5,
"end_sec": 4,
"band": "mid",
"direction": "boost",
"shape": "transient",
"delta_db": 18.163,
"fault_level": false
},
{
"start_sec": 11.5,
"end_sec": 11.75,
"band": "low_mid",
"direction": "cut",
"shape": "transient",
"delta_db": -18.16,
"fault_level": false
},
{
"start_sec": 11.75,
"end_sec": 12,
"band": "mid",
"direction": "boost",
"shape": "transient",
"delta_db": 17.514,
"fault_level": false
}
]
}
}
}
Question and answer
- Question
- QA this clip before I post it.
- Answer
- review_video's longest silent gap in the sound runs from 10.23 to 11.71 seconds, lasting 1.48 seconds.
Check passedIoU 0.99, minimum 0.7
How it was checked
- Truth from
- constructed
- Fixed at
Planted by this recipe: ffmpeg cut 20 s of the source from 2.50 s, and muted its sound (volume 0, digital silence) from 10.21 to 11.71 s of the clip. Only that silent interval is in the truth. The window was screened first: its sound has no run of 10 ms chunks under -60 dBFS (3 in a row) within 20 s, plus 0.1 s either side, so it is the only silent gap review_video can report. IoU tolerance 0.7.
A script muted 1.5 seconds of this clip's sound at a time it chose and put a black box over the picture for 0.9 seconds; review_video has no field that lists black frames, so the answer covers the silent gap only, and the clip has no other quiet stretch.
Try it yourself
Use agentic-video to QA my video before I post it. Call review_video on my file and tell me about any silent gaps in its sound, with where each one starts and ends. Use my own file.
- Get the .mcpb file and open it in Claude Desktop.
- Or:
pip install agentic-video
Clip and licence
- Licence
- generated
Generated for the gallery; no third-party material.