Tutorials Enterprise

Automated QC for Broadcast Delivery

By Infinite Creation · Professional · ~20 min
A 1960s mid-century comic book style editorial illustration showing a media operations manager and an engineer reviewing a workflow board, with caption bars beneath a picture visible in the frame.

Overview

A single dropped-frame or loudness violation slipping through to air or to a platform delivery is expensive: a rejected delivery, a compliance fine, or an on-air embarrassment. Automated QC exists to catch the objective, measurable problems before a human ever needs to watch the whole file. This guide covers what a real automated QC pass actually checks, independent of any specific vendor's QC software.

What You Need

  • A written delivery specification (codec, loudness target, caption format) for each destination you deliver to
  • A QC tool or scriptable framework capable of frame-level and audio-level analysis

Steps

1

Define your delivery specification before writing any QC checks

Every destination (broadcast, a streaming platform, a client's own spec) has its own technical requirements. Write these down explicitly (codec, resolution, loudness target, caption format) before building any automated check, since the spec is what every check is actually validating against.

2

Check technical conformance first

Container, codec, resolution, frame rate, and audio channel layout are the cheapest checks to run and catch the most common rejection causes. Run these before any slower frame-by-frame analysis. There's no point analyzing loudness on a file that's the wrong resolution.

3

Detect black frames, freezes, and dropped frames

Automated frame analysis flags unintended black segments, frozen frames (a sign of an encoding or transfer error), and dropped frames far more reliably and consistently than a human scrubbing through a full-length file looking for the same issues.

4

Verify loudness compliance automatically

Measure integrated loudness, true peak, and loudness range against the target for that specific destination (broadcast standards and streaming platform targets often differ) and fail automatically on violation, loudness is one of the most reliably automatable QC checks that exists.

5

Validate captions and subtitle sync

Check caption file format validity, character encoding, and rough time-sync against the audio track. Caption errors are a common, easily automatable rejection cause that's expensive to catch manually across a long-form program.

6

Route failures to human review, not a dead end

A failed automated check should generate a clear, specific report (what failed, at what timestamp) and route to a human reviewer, automated QC's job is to narrow down what needs a human look, not to be the final word on every failure.

Tested: what FFmpeg's detectors catch at their defaults

We tested step 3 on 2026-09-24 with FFmpeg 8.1.2, the free tool many QC scripts are built on. We made a 60 second 720p programme at 25 frames a second with light grain, as camera footage has, and planted six faults at known times. We also put in two things a real programme has on purpose: a held title card and a fade to black at the end. Then we ran FFmpeg's blackdetect, freezedetect and silencedetect filters at their defaults, and again with the minimum durations cut to 0.1 seconds for black and silence and 0.05 seconds for freezes.

What was in the fileStarts atDefaults (2 s minimum)Shorter minimums
Black, 1 second10.00 sMissedFound by blackdetect and freezedetect
Black, 5 frames20.00 sMissedFound by blackdetect and freezedetect
Audio dropout, 0.3 seconds25.00 sMissedFound by silencedetect
Frozen picture, 1.52 seconds30.00 sMissedFound by freezedetect
One repeated frame39.96 sMissedFound by freezedetect
Held title card, 3 seconds45.00 sFlagged by freezedetectFlagged by freezedetect
Audio dropout, 3 seconds52.00 sFound by silencedetectFound by silencedetect
Fade to black at the end57.92 sFlagged by blackdetectFlagged by blackdetect and freezedetect

All three filters default to a minimum of 2 seconds, which FFmpeg's own help (ffmpeg -h filter=blackdetect, and the same for the other two) lists. At the defaults they found one fault in six, the 3 second dropout. They missed both black gaps, the freeze, the repeated frame and the short dropout, and still flagged the title card and the ending. A check run at its defaults can pass a file that a viewer would reject.

With the shorter minimums every fault was found, each at the right time, and nothing was flagged where nothing had been planted. The report grew to 11 entries for six faults, because each black gap was also reported as a freeze, and the title card and the ending were still flagged. No setting told them apart. That needs the edit's own list of intended holds, which is why step 6 sends failures to a person.

The repeated frame needs care. At a minimum of exactly one frame, 0.04 seconds, freezedetect reported 1,311 freezes, one at almost every frame. At 0.05 seconds it found the repeated frame and nothing else. At 0.1 seconds it missed it. A copy without the grain gave the same result at 0.05 seconds. What a setting this short cannot do is tell a repeat from a still that is meant to be there. Any held shot, graphic or paused screen recording is flagged, as the title card was.

Reading the container and streams with ffprobe took 48 ms. The full analysis pass took 1.9 seconds for one minute of 720p, 40 times longer. That is the reason for step 2's order: rejecting a file on its format first saves a pass like this on every file that would fail anyway.

The shorter settings as one command, which writes each detection to the log: ffmpeg -i programme.mp4 -vf blackdetect=d=0.1,freezedetect=d=0.05 -af silencedetect=d=0.1 -f null -

Validated. Measured 2026-09-24 with FFmpeg 8.1.2 on macOS 26.6.2, Apple silicon. The programme was a synthetic test pattern with added grain, and the dropouts were digital silence. A real dropout may carry noise, and real footage may hold still shots that look like freezes. Timings depend on the machine. We did not test any commercial QC product, captions or loudness here.

Pro Tips

  • Track false-positive rates on each check over time. A check that flags too often gets ignored by reviewers, which defeats its purpose.
  • Keep the delivery specification itself under version control, specs change, and QC failures traced back to an outdated spec are a common, avoidable source of confusion.
  • Report failures with a timestamp and a specific frame reference, not just a pass/fail flag. A reviewer shouldn't have to rewatch an entire file to find what an automated check already located precisely.

QC Automation Scales With Delivery Volume, Not Content Complexity

The case for automating QC gets stronger with the number of files and destinations you're delivering to, not with how complex any single piece of content is. A single hour-long documentary might be fine to review manually. A hundred daily episodic deliveries across multiple platforms is where manual review becomes the bottleneck automated QC is built to remove.

Different Destinations Have Genuinely Different Specs

Broadcast loudness standards, streaming platform loudness targets, and a specific client's delivery spec can all differ meaningfully from each other. A single generic QC pass tuned to one destination's spec will produce false failures (or worse, false passes) against a different destination. QC rules need to be spec-aware, not one-size-fits-all.

The Report Matters as Much as the Check

A QC system that says "failed" without saying why or where is barely more useful than no QC at all. The reviewer still has to find the problem manually. The actual time savings come from a specific, actionable failure report that tells a human exactly where to look.

Where This Fits

Automated QC runs at the gates Broadcast Media Ingest places between ingest and air.

FAQ

Q: Can automated QC fully replace a human reviewer?
A: No, automated QC is very good at objective, measurable checks (loudness, dropped frames, technical conformance) but poor at subjective judgment (does this cut feel right, is this graphic actually legible against this background). The reliable pattern is automated checks handling the objective majority so human reviewers can focus on the smaller set of judgment calls.

Q: How many QC checks are actually worth automating?
A: Start with whatever has caused a real delivery failure or rejection before. That list is usually short and highly specific to your organization. Automating checks nobody has ever needed is wasted engineering effort. Automating the ones that have actually bitten you before pays for itself immediately.

Translate this page

Machine translation provided by Google Translate, on Google’s servers. We do not check these translations and they will get technical terms wrong. The English page is the authoritative one. Following a link sends this page’s address to Google. Your browser may also offer to translate this page itself, which keeps the request on your device.