CMK Video QuickMetrics
The video stats panel with no wiring required
- video
- video
QuickMetrics is the other half of CMK's video-metrics pair, and the split between them is worth understanding before you pick one. CMK Video Metrics gives you numbers as sockets you can wire into things. CMK Video QuickMetrics gives you the same numbers printed inside the node, where you can just read them.
If you want to know what resolution and frame rate came out of a merge, drop QuickMetrics in. If you want a downstream node to act on that, use the other one. Neither is better; they answer different questions.
How it works
Structurally it's the same node with a different tail end. It runs the shared metrics collector - dimensions from the video's own getter, frame rate fished out of the component object under several possible attribute names, bit depth, and a best-effort frame count that tries tensor shape first, then named count attributes, then list length - and then, instead of returning a stack of integers, it returns the video plus a ui dictionary holding the text panel and each individual metric.
That ui payload is the whole trick, and it's a standard ComfyUI mechanism: a node can return display data alongside its outputs without occupying output sockets. So QuickMetrics declares itself an output node, meaning ComfyUI will execute it as a graph terminal even if nothing consumes its video output. Park it at the end of a video branch and it will always run and always show its readout.
The panel it renders is a list of key: value lines, and it carries width, height, pixels per frame, fps, bit depth, frames, duration and a metrics dictionary alongside the text. So the compact list you see in the node is a summary of a richer payload - frames and duration are there even though they're not on the socket list.
Inputs and outputs
One input:
video(VIDEO) - ComfyUI's native video type.
One output:
video(VIDEO) - the same video, unchanged. Because it's the only output and the node is also a display node, you'll often see it sitting with its output unconnected. That's fine and it's the intended use.
Compare with CMK Video Metrics, which is the same input and adds width, height, fps and bit_depth as INT outputs. QuickMetrics deliberately has none of those - its information lives in the UI, not on sockets.
Install
Manager → search CMK Flow → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/CMKFlow/cmk_nodes
python3 custom_nodes/cmk_nodes/scripts/install_cmk_requirements.py
No models, no ffmpeg, no extra dependencies for this node. Two environment conditions do matter: a ComfyUI built with the comfy_api.latest node interface and native video type (the pack is verified against ComfyUI 0.38.2 / frontend 1.53.6), and the Vue Nodes / Nodes 2.0 setting enabled - CMK warns on startup when it's off, and the in-node display surfaces are exactly the sort of thing that degrades when the dynamic node rendering falls back to legacy LiteGraph.
Common issues
- Nothing shows in the node. Two usual causes: Vue Nodes off, or an older frontend that ignores the
uipayload. Check the pack's startup warning first. - Values read 0 or a dash. The source object didn't expose that field through any of the paths the collector tries. It walks
frame_rate,fps,framerate, then a handful of frame-count names, and gives up quietly rather than erroring - so a zero is "unknown", not "empty video". fpslooks rounded. The metrics dict keeps the float, but the panel and the sibling node's INT output round it. A 23.976 file shows as 23 or 24 depending on the surface.- "It's running again every time." It's an output node with a display payload, so it participates in every execution. That's by design and costs essentially nothing - it does no decoding.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |