Video matching has two strategies, and which one runs per file materially changes how much you should trust the grouping.
The preferred path: frame hashing. Six frames are extracted at evenly spaced positions, deliberately skipping the first and last ten percent of the runtime — the regions most likely to hold black frames, fades, titles, or slates, which look identical across unrelated videos and would produce false matches. Each frame is scaled down to a small greyscale image and reduced to the same kind of gradient-based perceptual hash used for photos. Two videos are compared by taking the distance between frames at corresponding positions and averaging, so the decision rests on the whole sampled sequence rather than one lucky or unlucky frame. Comparing content this way is what allows a re-encode, a resize, or a bitrate change to still match its source.
Extraction runs through a bundled frame extractor invoked as a child process, with a hard timeout per file. On timeout or scan cancellation the child is killed, so a corrupt or pathological file degrades that one comparison instead of wedging the scan. Temporary frames are written to a scratch directory that is cleaned up automatically.
One security note worth stating, since it constrains behaviour: release builds resolve the frame extractor only to the copy shipped alongside the application. There is no lookup on the system path and no environment override, specifically so a binary planted elsewhere on the machine cannot be executed instead.
The fallback: duration and aspect ratio. If frame extraction is unavailable or fails, DupeDoctor groups videos by their container-reported duration in seconds and their rounded aspect ratio. This is a heuristic, not content matching — two entirely unrelated clips of the same length and shape will group together, and you should treat such groups as a prompt to look rather than a finding. Two further limits: the metadata reader parses MP4 and MOV containers, so files in other containers get no fallback grouping at all, and the fallback carries no notion of visual similarity whatsoever.
Why this is worth knowing rather than hiding. Video groups are never auto-selected, and they do not count toward the reclaimable headline, which is limited to exact and copy-named matches. So a weak fallback grouping cannot cause an automatic deletion or inflate a number. But it can waste your time if you assume every group was content-verified. If a video group looks implausible — same length, completely different footage — the fallback is very likely what produced it.
Recognised extensions include MP4, M4V, MOV, MKV, WebM, AVI, WMV, FLV, MPG, MPEG, 3GP, and TS.