Verify A/V Sync
Verify A/V Sync — the answer to 'did the audio stay in sync?'
- passed
- message
Audio drift is the most insidious failure mode in video conversion. A 24→25 fps speed change that mangles the soundtrack doesn't fail loudly - the file plays, looks fine, and then the music comes in a quarter-second late on every cut. Verify A/V Sync is the node in the Framerate Converter pack (Trope Tools, TropeMedia) that catches this automatically instead of leaving it to your ears.
It's part of the "Verify" group, and it does something fairly clever for a check that looks simple: it compares the duration and start time of the video and audio streams in the output file. If the video stream is a different length than the audio stream, or they start at different points, something's out of sync.
Inputs
- video_path - the file to check, typically the output of a conversion.
- duration_tolerance - how much the stream lengths may differ, default 0.05s.
- start_tolerance - how far apart the stream start times may be, default 0.01s.
The outputs
- passed (BOOLEAN) - the verdict.
- message (STRING) - a per-stream breakdown of what it compared:
PASS: Durations match - video=115.200s, audio=115.203s (diff=0.003s)
Two details worth knowing. First, if the file has no audio stream, it passes with a "sync check skipped" note rather than failing - silent video isn't out of sync, it's just quiet. Second, it only checks the stream container timestamps, which is exactly the right thing to check after a conversion: a mismatched duration between streams is the signature of an audio pipeline that ran at the wrong speed.
Install
Standard pack install: ComfyUI Manager → Trope Tools - Framerate Converter, or git clone https://github.com/LaserDog80/ComfyUI-FramerateConverter into custom_nodes/ and restart. Uses the system ffprobe binary.
Where it fits: after a speed-change conversion, run this alongside Verify FPS as your "did the output survive?" gate. And if it does fail, the pack's own guidance applies - switch to preserve_pitch audio mode, and if sync still drifts, your source is probably variable framerate. Run Detect VFR to confirm, normalize to CFR, and convert again. The verify nodes aren't there to be pretty; they're there to catch the silent failures before they reach a client.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| video_path | STRING | — | |
| duration_toleranceopt | FLOAT | 0.050–1 | — |
| start_toleranceopt | FLOAT | 0.0100–1 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| passed | BOOLEAN | — |
| message | STRING | — |