ℹ S42 CutFlow Clip Info
The metadata readout that tells you what your clip actually is
- clip
- frame_count
- width
- height
- duration_seconds
- aspect_ratio
- info
Half of debugging a ComfyUI video workflow is answering the same three questions at every stage: how many frames is this, what resolution, and how long would it be at my frame rate? S42CF Clip Info answers all three (plus one) from a single wire, and it lives in the Preview category as a pure diagnostic - it changes nothing, it just tells you the truth about the data.
Feed it clip (any IMAGE batch) and fps (default 24, used for the duration math), and you get six outputs:
frame_count(INT) - the number of frames.width/height(INT) - the resolution.duration_seconds(FLOAT) - frame count ÷ fps. The useful one: setfpsto your real frame rate and it's your clip's length in seconds.aspect_ratio(FLOAT) - width ÷ height, so you can check at a glance whether that 1.78 is actually 16:9.info(STRING) - a formatted one-line summary for a text display node or the console.
That's the entire node, and it's the right amount of node. It's the ComfyUI equivalent of a tape measure you keep on the desk.
Where it earns its keep is the "insert one at every stage and find where frames disappear" technique. Your final export is the wrong length? Drop a Clip Info after the loader, after each transform, and after the saver, and the frame_count outputs tell you exactly which node added or dropped frames. This is the standard workflow-debugging move, and it's also how you wire up automation: frame_count is a real INT output, so you can feed it into S42CF AudioTrim's target_frames or any other node that wants to know the clip length - that single connection keeps audio and video in sync no matter what you change upstream.
The one thing to remember is that fps is assumed, not measured - a video file's actual frame rate lives in its container, and an IMAGE batch has forgotten it by the time it reaches this node. Set fps to match your project or every duration-derived number downstream is wrong. If your duration_seconds looks off, that's the first place to look.
Installing it
S42-CutFlow install: ComfyUI Manager → search "S42 CutFlow" → Install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt
One-line requirements (opencv-python-headless); the node is a few tensor .shape reads. "[S42 CutFlow] Loaded ..." on restart confirms registration.
The takeaway
Thin, boring, and exactly what you need when something upstream is lying about the footage. Wire its frame_count into your audio-trim targets and it doubles as the sync node you didn't know you needed.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | IMAGE | Video clip to analyze. | |
| fps | FLOAT | 24.01–120 | Assumed FPS for duration calculation. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| frame_count | INT | — |
| width | INT | — |
| height | INT | — |
| duration_seconds | FLOAT | — |
| aspect_ratio | FLOAT | — |
| info | STRING | — |