Skip to content

File ad-break detection

Put the ad where the story already pauses.

AdBreak reads the file you submit: scene cuts, black frames, speech, silence, loudness, and motion. The same speech pass writes subtitles and translates them into 22 languages. It returns the times an ad can enter, why that window held, and a cue your packager can place. It does not insert the ad. For a large library, the same read can run as an automatic pipeline, and the results are written out over S3, FTP, or a similar drop.

Finished reads

Three files in. Slots, cues, and subtitles out.

Each card is one completed read. The counts are what that file returned: slots kept, and subtitle cues from the same speech pass.

  • 00:09:25.064 people

    First cut 00:09:27.066

    Length 00:22:38.618

    2 slots kept

    426 subtitle cues

  • 00:05:22.239 unknown

    First cut 00:05:24.241

    Length 00:57:34.880

    3 slots kept

    714 subtitle cues

  • 00:23:58.480 people

    First cut 00:24:01.400

    Length 01:34:44.768

    8 slots kept

    286 subtitle cues

SCTE-35 from the same read

A splice insert for the slot at 00:09:27.067. The packager receives the cue. The ad is not inserted here.

splice_insert
00:09:27.067 – 00:09:28.067
PTS 13596
Out of network
2 avails expected

One subtitle cue

The speech pass wrote this WebVTT cue. The page language is separate from the language of the file.

00:09:37.240 --> 00:09:42.640
Please, come on, come on.

The overlay on a processed file

Stills from a tagged read. The clock, the scene, and the object tags on the frame show what is in that shot at that time.

00:09:04.545 unknown

00:09:04.545

unknown

aeroplane

00:45:15.299 indoor/kitchen

00:45:15.299

indoor/kitchen

bench, cell phone, diningtable, oven · 3 people

01:01:41.869 people

01:01:41.869

people

motorbike, person · 3 people

01

Playback

A few seconds before the slot, and a few after.

Clips and stills from processed files. Each clip runs from a few seconds before the chosen slot to a few seconds after it. A count runs down to the slot, and the frame is tinted while the slot is open. The overlay keeps the clock, the scene, and the object tags. The factors under a clip are the ones that added up to that score.

Slots

Pre-roll · Mid-roll · Post-roll

Handoff

SCTE-35 · HLS cue · VMAP

Signals

Read the file · Drop the unsafe window · Hand off the cue

02

The gap

Context is not a cue point.

01

A clock is a blunt cut

A mid-roll every few minutes lands inside a line, a laugh, or a pan. Viewers leave, and the creative opens on a broken shot.

02

Unmarked libraries stay dark

Archive files often have no SCTE-35, and a program guide is too coarse to carry a mid-roll. Without a cue, server-side insertion has nowhere honest to go.

03

A show label misses the window

Knowing the title is a cooking series does not say whether the seconds before the break are a calm demo or a burn. Buyers and brand rules judge that window.

03

Method

One file in. A cue out.

The engine works on the file, not on a live switcher and not on the filename. Speech, picture, and loudness are read together, then a window is kept only if it survives the guards.

01

Read the file

Scene cuts and black frames, sentence boundaries and voice activity, silence and loudness, and motion. Opening and end credits are marked on their own. Tag detection names the scene, the objects, and the people on each stretch of picture, and the overlay writes those tags onto the frames. The same speech pass writes SRT and WebVTT, and those subtitles translate into 22 languages.

02

Drop the unsafe window

A cut inside a spoken line is moved or dropped. A fast, loud montage with no real pause does not outrank a fade and a silence. Slots that miss the gate and are kept only to fill a minimum are marked forced.

03

Hand off the cue

Each kept slot has a cut time, a kind of break, a reason, confidence, and the distance to speech. The same times can leave as SCTE-35 or an HLS cue, snapped to a keyframe. The overlay is there so a person can look at the frame first.

04

Why this cut

Built for the mark the ad server consumes.

The useful output is a time the packager can consume, plus enough of the read that a person can accept or reject it.

01

A time, not a genre

A show label does not say where to splice. The slot is a cut time on this file, with the kind of break: a cut, a scene change, or black.

02

Speech is a constraint

Sentence boundaries and voice activity keep the splice off a line. Each slot reports how far speech sits from the cut, and whether that distance was safe.

03

Active picture loses

High motion, a run of cuts, or a loud stretch without a pause is rejected. A real fade and a silence can win. Missing a measurement skips that check, it does not invent one.

04

The splice is the cut

The reported time is the cut or the dark frame, not a second before it. SCTE-35 splice points snap to a keyframe unless you turn that off.

05

Look, then hand off

The overlay burns the clock, the scene, the object tags, and a score badge onto the frame, so that time shows which objects are in the shot. The cue you send on is SCTE-35 or an HLS cue. AdBreak does not play the creative.

06

Forced means forced

When a minimum count is set, slots that missed the gate can be promoted, and they are marked. An editor can drop them. Fewer clean slots beat a quiet lie.

05

Output

One payload, the same slots on the timeline.

Nine mid-roll cues from one processed file (01:34:44.768). Scene names and the reason line stay in English, as the engine wrote them.

Timeline

Processed

  1. 00:09:04.545

    Mid-roll
    Cut

    unknown

    aeroplane

    cut within scene (cut 14.85), pause 10.8 s

    Confidence 1 · 5.4 s from speech

  2. 00:18:37.159

    Mid-roll
    Cut

    outdoor/street

    aeroplane, car, cat, chair · 2 people

    cut within scene (cut 16.52), pause 44.1 s

    Confidence 1 · 22.04 s from speech

  3. 00:28:16.280

    Mid-roll
    Cut

    people

    backpack, bird, person, tie · 4 people

    cut within scene (cut 14.73), pause 30.5 s

    Confidence 1 · 15.24 s from speech

  4. 00:36:25.686

    Mid-roll
    Cut

    people

    backpack, boat, book, dog · 3 people

    cut within scene (cut 8.47), pause 4.3 s

    Confidence 1 · 2.16 s from speech

  5. 00:45:15.299

    Mid-roll
    Scene change

    indoor/kitchen

    cell phone, oven, person, sink · 3 people

    scene change (cut 23.69), pause 23.1 s

    Confidence 1 · 11.56 s from speech

  6. 00:52:22.643

    Mid-roll
    Scene change

    outdoor/nature

    backpack, book, cat, cow · 2 people

    scene change (cut 21.37), pause 20.2 s

    Confidence 1 · 10.12 s from speech

  7. 01:01:41.869

    Mid-roll
    Black

    people

    motorbike, person · 3 people

    black 1.67 s, pause 5.8 s

    Confidence 1 · 2.91 s from speech

  8. 01:10:23.765

    Mid-roll
    Cut

    people

    baseball glove, bird, frisbee, person · 2 people

    cut within scene (cut 17.2), pause 15.3 s

    Confidence 1 · 7.64 s from speech

  9. 01:19:27.100

    Mid-roll
    Cut

    unknown

    dog

    cut within scene (cut 13.88), pause 15.0 s

    Confidence 1 · 7.51 s from speech

Payload

{
  "assetId": "",
  "duration": "01:34:44.768",
  "slots": [
    {
      "role": "mid-roll",
      "time": "00:09:04.545",
      "confidence": 1,
      "kind": "cut",
      "scene": "unknown",
      "tags": [
        "aeroplane"
      ],
      "people": 0,
      "reason": "cut within scene (cut 14.85), pause 10.8 s",
      "speechDistanceSec": 5.4,
      "speechSafe": true
    },
    {
      "role": "mid-roll",
      "time": "00:18:37.159",
      "confidence": 1,
      "kind": "cut",
      "scene": "outdoor/street",
      "tags": [
        "aeroplane",
        "car",
        "cat",
        "chair"
      ],
      "people": 2,
      "reason": "cut within scene (cut 16.52), pause 44.1 s",
      "speechDistanceSec": 22.04,
      "speechSafe": true
    },
    {
      "role": "mid-roll",
      "time": "00:28:16.280",
      "confidence": 1,
      "kind": "cut",
      "scene": "people",
      "tags": [
        "backpack",
        "bird",
        "person",
        "tie"
      ],
      "people": 4,
      "reason": "cut within scene (cut 14.73), pause 30.5 s",
      "speechDistanceSec": 15.24,
      "speechSafe": true
    },
    {
      "role": "mid-roll",
      "time": "00:36:25.686",
      "confidence": 1,
      "kind": "cut",
      "scene": "people",
      "tags": [
        "backpack",
        "boat",
        "book",
        "dog"
      ],
      "people": 3,
      "reason": "cut within scene (cut 8.47), pause 4.3 s",
      "speechDistanceSec": 2.16,
      "speechSafe": true
    },
    {
      "role": "mid-roll",
      "time": "00:45:15.299",
      "confidence": 1,
      "kind": "scene",
      "scene": "indoor/kitchen",
      "tags": [
        "cell phone",
        "oven",
        "person",
        "sink"
      ],
      "people": 3,
      "reason": "scene change (cut 23.69), pause 23.1 s",
      "speechDistanceSec": 11.56,
      "speechSafe": true
    },
    {
      "role": "mid-roll",
      "time": "00:52:22.643",
      "confidence": 1,
      "kind": "scene",
      "scene": "outdoor/nature",
      "tags": [
        "backpack",
        "book",
        "cat",
        "cow"
      ],
      "people": 2,
      "reason": "scene change (cut 21.37), pause 20.2 s",
      "speechDistanceSec": 10.12,
      "speechSafe": true
    },
    {
      "role": "mid-roll",
      "time": "01:01:41.869",
      "confidence": 1,
      "kind": "black",
      "scene": "people",
      "tags": [
        "motorbike",
        "person"
      ],
      "people": 3,
      "reason": "black 1.67 s, pause 5.8 s",
      "speechDistanceSec": 2.91,
      "speechSafe": true
    },
    {
      "role": "mid-roll",
      "time": "01:10:23.765",
      "confidence": 1,
      "kind": "cut",
      "scene": "people",
      "tags": [
        "baseball glove",
        "bird",
        "frisbee",
        "person"
      ],
      "people": 2,
      "reason": "cut within scene (cut 17.2), pause 15.3 s",
      "speechDistanceSec": 7.64,
      "speechSafe": true
    },
    {
      "role": "mid-roll",
      "time": "01:19:27.100",
      "confidence": 1,
      "kind": "cut",
      "scene": "unknown",
      "tags": [
        "dog"
      ],
      "people": 0,
      "reason": "cut within scene (cut 13.88), pause 15.0 s",
      "speechDistanceSec": 7.51,
      "speechSafe": true
    }
  ]
}

Slot score

Processed

One kept slot from a processed read of this file. The score is the sum of every factor below. Confidence is that total mapped into a value from 0 to 1.

01:00:24.791

01:00:23.667–01:00:27.667

3.971 s from speech

Score16.4362

Confidence0.97

Detected

Dark screen
Silence
Audio stinger
Music change
Dialogue gap
Scene boundary

Factors

  • Scene + dark0.0000
  • Dark screen+5.0000
  • Silence+4.5000
  • Phrase end0.0000
  • Music change+2.0000
  • Scene duration0.0000
  • Audio fade+1.3734
  • Camera static+0.8000
  • Brightness transition0.0000
  • Strong scene cut0.0000
  • Context+0.6000
  • Sentence end0.0000
  • Mid-sentence0.0000
  • Editing pace0.0000
  • Motion+0.1015
  • Face presence0.0000
  • Music boundary+2.0613
  • Spectral novelty0.0000
  • LUFS quiet0.0000
  • Fade to black0.0000
  • Audio change0.0000
  • Near-silence0.0000
  • Chapter boundary0.0000
  • Bumper0.0000
  • Audio transition0.0000
  • Spectral flux0.0000
  • Structural prior0.0000
  • Candidate density0.0000
  • Speech penalty0.0000
  • Activity penalty0.0000

06

Who runs it

For the team that owns the file.

01

VOD publishers

Monetize archive episodes that were finished before dynamic insertion existed.

02

Channels preparing a feed

When a file arrives without markers, mark it before playout. This is file analysis, not a live frame-accurate switcher.

03

Ad operations

Replace a long manual scrub with a short list of candidates a person can confirm.

07

Volume

Large clients get an automatic pipeline.

A single file can be sent by hand. A large library does not have to be. AdBreak connects a pipeline that picks up files, runs the same read, and writes the results out.

01

Processing runs on arrival

New files enter the pipeline and are read without a person uploading each title. The read is the same one: slots, reasons, cues, and subtitles.

02

Results leave over S3 or FTP

Finished payloads, cues, and subtitle files can be written to S3, FTP, or a similar drop you already use. The handoff is those files.

03

The guards stay in place

Volume does not insert the creative or condition the stream. A person can still accept or drop a slot before the cue goes out.

08

Questions

What the read does, and what it leaves alone.

Send a file you have the rights to mark.

Write with the asset type — a file or packaged VOD — and whether you need pre-roll, mid-roll, or both. For a large library, say so: we connect an automatic pipeline that processes files and writes the results out over S3, FTP, or a similar drop. The reply describes how the cues would be delivered.

Email AdBreak