CCTV evidence

Triage CCTV footage: find the movement before you look for people.

Twelve CCTV cameras times twenty-four hours is days of video where nearly nothing happens. Watching it in real time to find the thirty seconds that matter is a week you do not have, and you will blink at the wrong moment. There is a faster way: find the movement first, cheaply, and spend real effort only on the frames that changed.

Last reviewed: 21 July 2026

This is general guidance on method, not legal advice. A court matter needs a qualified forensic examiner.

Watch the movement, not the footage

A fixed camera pointed at a driveway, a yard or a loading dock is looking at the same still image for hours. The useful frames are the ones that changed. So find the change first, cheaply, and spend real time, yours or a person-detector's, only on what is left.

The trick is a motion pass: sample the video sparsely, score how much each sampled frame differs from the one before it, and throw away everything that did not move. On a fixed camera that drops 90%+ of the recording for almost no compute.

How the motion pass works

  1. Sample sparsely. You do not need every frame. One frame a second (or every 10 to 15 frames) is plenty to catch a person walking through. Sparse sampling alone cuts the work by an order of magnitude.
  2. Shrink it and drop the colour. Downscale each sampled frame to something small, say 320 px wide, and convert to greyscale. Colour and full resolution add nothing to a "did anything move" question, and they cost time.
  3. Difference consecutive frames. Subtract the current small greyscale frame from the previous one, take the absolute value, and sum it. That gives one number per frame: how much changed.
  4. Threshold it. Below a cut-off, nothing moved, so drop it. Above, flag it as activity.
  5. Merge and pad. Join runs of flagged frames into time ranges, and pad each range by a few seconds either side so you do not clip the person walking into shot.

Off the shelf, ffmpeg's select='gt(scene\,0.02)' or the mpdecimate filter does a rough version in one line. A dozen lines of OpenCV (cv2.absdiff on downscaled greyscale) gives you the per-frame score and full control of the threshold. Either way it runs far faster than real time.

Why this saves days

Person-detection, running a neural network on every frame to find people, is accurate but slow, often hundreds of times more expensive per frame than a subtraction. Point it at the raw recording and you pay that cost on hours of empty driveway.

Run the cheap motion pass first and you hand the detector (or yourself) a shortlist: the 5 to 10% of frames where something actually changed. Same result, a fraction of the time. The order is the whole point: cull with the cheap test, then spend the expensive one only on the survivors. Every clip that survives is a candidate event for your case chronology.

The traps on a fixed camera

The method assumes the camera does not move and the scene is otherwise still. A few things break that, and each has a fix:

  • A burnt-in timestamp ticking every second reads as constant motion in one corner. Mask that region out of the difference. If that clock is also wrong, rebuild the timeline separately.
  • Trees, long grass, rain, water move on their own. Raise the threshold, or mask the sky or foliage.
  • The day and night IR switch flips the whole frame to greyscale and back, one huge false hit at dusk and dawn. Expect it and ignore those two moments.
  • A PTZ camera that pans triggers on everything while it moves. Only motion-triage fixed views, or gate on the "camera idle" state.
  • Compression noise at night flickers pixels. Denoise, or raise the threshold for the dark hours.

Tune the threshold on one known clip: find a segment where you know someone walked through, set the cut-off just under that, then run the lot.

The short version

Do not watch dead footage. Sample a fixed CCTV camera at about 1 fps, downscale to small greyscale, and score each frame by how much it differs from the last. Drop the still frames, that is 90%+ of a fixed-camera recording gone for almost no compute, then run person-detection or your own eyes only on what survives. Mask timestamps and foliage so they do not trip the score, tune the threshold on a known clip, and days of review become minutes.

General guidance on method, not legal advice; a court matter needs a qualified forensic examiner.

Where this comes from

Background reading on the technology described above, so you can check any of it yourself rather than take our word for it:

Write yours now.

Add your first event and the builder handles the date order, year grouping and a clean export you can take to court.