H3 Extras
Read the canvas back as numbers, not as a report string
- h3_inputs
- width
- height
- length
- frame_count
- latent_t
- audio_t
- seconds
- task
- is_keyframes
- is_references
- summary
The H3 pack keeps its state on a h3_inputs wire, and that's great for plumbing - but a wire is opaque. H3 Extras is the probe that reads the canvas back off it as plain numbers, the ones you can wire into a resolution picker, a text node, or a graph branch.
What you get
Feed it any h3_inputs wire and mode (default auto - match whatever H3 Encode is set to, so the task reported is the task that'll actually run), and it splits the canvas into values:
- width, height - the snapped canvas.
- length - the length the canvas asked for, and frame_count - what it snaps up to on H3's
17k+5frame grid. These differ, and the difference is the point: ask for 5 seconds and you get 124 frames, not 120. - latent_t (video latent frames) and audio_t (audio latent frames at 40 Hz) - the actual latent lengths.
- seconds -
frame_count / 24, the real duration. - task -
t2va,fl2vaorref2va- what the same list will make H3 Encode do. - is_keyframes / is_references - booleans you can wire into a switch to branch a graph on which task is active.
- summary - one human-readable line naming all of it, for a text preview.
Why you'd bother
H3 Canvas already gives you a report string with most of this. The difference is type: report is prose for your eyes, H3 Extras is numbers for your graph. is_keyframes into a conditional is the obvious branch - run a different sampler or schedule depending on whether a keyframe is driving the clip. frame_count into a text node is the honest way to show the user what they're actually going to get, and latent_t is what you want if any downstream node needs the true latent length rather than the requested one.
Install
Pack install: ComfyUI Manager → "Nynxz H3", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-NynxzH3
Restart. Pure Python, no dependencies, ComfyUI 0.30.0+.
The one-liner
If you ever find yourself re-typing the frame count a workflow reported, this is the node that hands it to you as a wireable integer. Small, but it's the difference between reading your own logs and letting the graph decide for itself.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| h3_inputs | NYNXZH3_INPUT | From H3 Inputs, or anywhere along the chain. | |
| mode | COMBO | auto | Match whatever H3 Encode is set to, so the task reported here is the task that will actually run. |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| width | INT | — |
| height | INT | — |
| length | INT | The length the canvas asked for. |
| frame_count | INT | What it snaps up to on the model's 17k+5 grid — the frames you actually get. |
| latent_t | INT | Video latent frames. |
| audio_t | INT | Audio latent frames (40 Hz). |
| seconds | FLOAT | frame_count / 24. |
| task | STRING | t2va, fl2va or ref2va — what the same list will make H3 Encode do. |
| is_keyframes | BOOLEAN | True for fl2va — a first and/or last frame is driving the clip. Wire into a switch to branch a graph on it. |
| is_references | BOOLEAN | True for ref2va — <Picture i> / <Video k> / <Audio j> references. |
| summary | STRING | One line naming all of it, for a text preview. |