agentic-video Gallery

QA a clip for a silent gap before posting

ReviewFilmVerified
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
review_videobox · 1434 ms

Arguments

{
  "source": "$CLIP"
}

Result

{
  "ok": true,
  "data": {
    "metadata": {
      "source_path": "~/work/cards/review-film/clip.mp4",
      "duration_sec": 20,
      "width": 640,
      "height": 360,
      "fps": 24,
      "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
      "size_bytes": 2536151,
      "has_audio": true,
      "audio_codec": "aac",
      "video_codec": "h264",
      "fingerprint": "1f10ec128743f3c7614b",
      "has_video": true
    },
    "contact_sheet": {
      "file_path": "<cache>/1f10ec128743f3c7614b/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": "<1432512 base64 chars dropped>",
        "byteLength": 1074383
      }
    },
    "cuts": [
      {
        "timestamp_sec": 1.916667,
        "score": 0.353341,
        "kind": "cut"
      },
      {
        "timestamp_sec": 4.2,
        "score": 0.478588,
        "kind": "transition"
      },
      {
        "timestamp_sec": 4.958333,
        "score": 0.403614,
        "kind": "cut"
      },
      {
        "timestamp_sec": 6.708333,
        "score": 0.727466,
        "kind": "cut"
      },
      {
        "timestamp_sec": 7.583333,
        "score": 0.738655,
        "kind": "cut"
      },
      {
        "timestamp_sec": 10.583333,
        "score": 0.653845,
        "kind": "cut"
      },
      {
        "timestamp_sec": 13.708333,
        "score": 0.681344,
        "kind": "cut"
      },
      {
        "timestamp_sec": 15.208333,
        "score": 0.636708,
        "kind": "cut"
      }
    ],
    "cuts_total": 8,
    "loudness": {
      "average_rms_dbfs": -24.697,
      "peak_dbfs": -4.631,
      "peak_sec": 5.01,
      "window_sec": 0.25,
      "silence_threshold_dbfs": -60,
      "silence_gaps": [
        {
          "start_sec": 13.85,
          "end_sec": 15.46,
          "duration_sec": 1.61,
          "threshold_dbfs": -60
        }
      ],
      "silence_gaps_total": 1,
      "outliers_total": 66,
      "fault_outliers_total": 0,
      "outliers": [
        {
          "start_sec": 20,
          "end_sec": 20.010667,
          "band": "low_mid",
          "direction": "cut",
          "shape": "transient",
          "delta_db": -33.931,
          "fault_level": false
        },
        {
          "start_sec": 20,
          "end_sec": 20.010667,
          "band": "mid",
          "direction": "cut",
          "shape": "transient",
          "delta_db": -29.672,
          "fault_level": false
        },
        {
          "start_sec": 16,
          "end_sec": 16.5,
          "band": "high",
          "direction": "boost",
          "shape": "transient",
          "delta_db": 27.342,
          "fault_level": false
        },
        {
          "start_sec": 15.25,
          "end_sec": 15.5,
          "band": "mid",
          "direction": "cut",
          "shape": "transient",
          "delta_db": -22.833,
          "fault_level": false
        },
        {
          "start_sec": 15.25,
          "end_sec": 15.5,
          "band": "low_mid",
          "direction": "cut",
          "shape": "transient",
          "delta_db": -22.283,
          "fault_level": false
        },
        {
          "start_sec": 19.75,
          "end_sec": 20.010667,
          "band": "sub",
          "direction": "cut",
          "shape": "transient",
          "delta_db": -20.348,
          "fault_level": false
        },
        {
          "start_sec": 0,
          "end_sec": 4.5,
          "band": "mid",
          "direction": "cut",
          "shape": "transient",
          "delta_db": -18.291,
          "fault_level": false
        },
        {
          "start_sec": 12,
          "end_sec": 13,
          "band": "high",
          "direction": "boost",
          "shape": "transient",
          "delta_db": 18.006,
          "fault_level": false
        },
        {
          "start_sec": 7,
          "end_sec": 8,
          "band": "high",
          "direction": "boost",
          "shape": "transient",
          "delta_db": 17.553,
          "fault_level": false
        },
        {
          "start_sec": 18.5,
          "end_sec": 20,
          "band": "high",
          "direction": "boost",
          "shape": "transient",
          "delta_db": 17.128,
          "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 13.85 to 15.46 seconds, lasting 1.61 seconds.
Check passedIoU 0.98, minimum 0.7

How it was checked

Truth from
constructed
Fixed at

Planted by this recipe: ffmpeg cut 20 s of the source from 34.50 s, and muted its sound (volume 0, digital silence) from 13.83 to 15.45 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.6 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.
  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.