Verify Integrity
Verify Integrity — the full-decode 'is this file actually corrupt?' check
- passed
- message
A file can exist on disk and still be broken. Maybe the encode died halfway, maybe the disk corrupted a chunk, maybe it's a salvaged download. Checkers that only look at the header will tell you it's fine, right up until the player freezes two minutes in. Verify Integrity is the brute-force answer in the Framerate Converter pack (Trope Tools, TropeMedia): it decodes the entire file from start to finish and reports whether FFmpeg found any errors doing it.
It's the heavy lifter of the "Verify" group, and unlike the fps/sync checks it doesn't skim metadata - it does real work.
How it works
The mechanism is the classic FFmpeg integrity test: run ffmpeg -v error -i <file> -f null -, which decodes every frame and discards the output. With -v error set, FFmpeg only prints actual problems. The node then scans the captured stderr for real error keywords - error, invalid, corrupt, missing, truncat, and friends - rather than treating any warning as a failure.
That last part matters, because FFmpeg's decoder emits plenty of informational lines and transient warnings that aren't corruption. A naive check that fails on any stderr would produce false negatives on perfectly good files. This one filters.
Inputs and outputs
One required input, video_path, and two outputs:
- passed (BOOLEAN) - true if the full decode completed with zero genuine errors.
- message (STRING) -
PASS: Full decode completed with zero errors, or a FAIL listing the offending error lines.
There's a 5-minute timeout (a long 4K file takes a while to fully decode), and a neat caching touch: the node re-runs only when the file's modification time or size changes, so re-queuing a workflow doesn't needlessly re-decode the same file.
Install
Pack install as always: ComfyUI Manager → Trope Tools - Framerate Converter, or git clone https://github.com/LaserDog80/ComfyUI-FramerateConverter into custom_nodes/ and restart. It needs the system ffmpeg binary.
Honest expectations: this is a post-conversion sanity check and a diagnostics tool, not a daily driver. You reach for it when a video misbehaves in playback and you want to know if it's your player or your file, or when you want an automated gate that guarantees an output decodes cleanly before it ships. It costs real CPU time - it's decoding the whole thing - but for a deliverable you care about, "it decoded with zero errors" is a genuinely comforting sentence.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| video_path | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| passed | BOOLEAN | — |
| message | STRING | — |