Video Info π₯π ₯π π ’
Read fps, frame count, and dimensions out of a loaded video
- video_info
- source_fpsπ¨
- source_frame_countπ¨
- source_durationπ¨
- source_widthπ¨
- source_heightπ¨
- loaded_fpsπ¦
- loaded_frame_countπ¦
- loaded_durationπ¦
- loaded_widthπ¦
- loaded_heightπ¦
The single most useful thing this node does: it tells your Video Combine what frame rate to render at so the audio doesn't drift. That's it, that's the pitch. Video Info takes the video_info bundle that a Load Video node emits and unpacks it into a pile of separate number outputs - fps, frame count, duration, width, height - that you can wire wherever you need a value instead of hard-coding one. It's part of Kosinkadink's VideoHelperSuite.
You reach for it any time your workflow needs to know something about the video it loaded rather than just process the pixels. Matching output fps to input, computing how many frames you have, feeding dimensions into a resize - all downstream of this node.
How it works
Load Video nodes carry metadata alongside the frames in a VHS_VIDEOINFO object. On its own that's opaque. Video Info cracks it open into individual typed outputs so the numbers become usable. Crucially, it reports the video in two states: as it was on disk, and as it came out after your load settings.
The outputs split into a source group (the original file, marked with a yellow square) and a loaded group (after force_rate, select_every_nth, and frame_load_cap did their thing, marked with a blue square):
- source_fps, source_frame_count, source_duration, source_width, source_height - the untouched file.
- loaded_fps, loaded_frame_count, loaded_duration, loaded_width, loaded_height - what you actually got.
The one you'll use most is loaded_fps. Convert Video Combine's frame_rate widget to an input and wire loaded_fps into it - now the output plays at the true rate of your (possibly resampled) frames, and audio stays synced. This is the fix for the classic "why is my sound ahead of the video" problem.
The input and outputs that matter
There's one input, video_info, which comes from the matching output on a Load Video node. Everything else is the ten outputs above. Don't overthink it: connect the source, grab the number you need.
How to install it
ComfyUI Manager: search ComfyUI-VideoHelperSuite, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite
then restart. No weights.
Common issues & troubleshooting
Source vs loaded confusion. If you resampled with force_rate or thinned with select_every_nth, the source and loaded numbers differ - and for anything about what you're actually working with, you want the loaded (blue) outputs. Use source only when you specifically need the original file's properties.
Audio still drifts after wiring loaded_fps. Make sure you connected loaded_fps into Video Combine's frame_rate and that you're using the same audio the video came with. If you loaded audio separately or trimmed it, the durations won't match no matter what fps you set.
Nothing to connect it to. Video Info needs a Load Video node's video_info output. If you only need the post-load numbers and want fewer ports to wire, the leaner Video Info (Loaded) node gives you just the blue set.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| video_info | VHS_VIDEOINFO | β |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| source_fpsπ¨ | FLOAT | β |
| source_frame_countπ¨ | INT | β |
| source_durationπ¨ | FLOAT | β |
| source_widthπ¨ | INT | β |
| source_heightπ¨ | INT | β |
| loaded_fpsπ¦ | FLOAT | β |
| loaded_frame_countπ¦ | INT | β |
| loaded_durationπ¦ | FLOAT | β |
| loaded_widthπ¦ | INT | β |
| loaded_heightπ¦ | INT | β |