[BMZ] VideoSettings
The 'which resolution is actually legal for video' node
- cleaned_project_name
- save
- width
- height
Every video workflow has the same awkward moment: you're staring at a "width" and "height" box and you have no idea which resolution your model actually wants. Wan and its cousins are picky - they're trained on specific native sizes, and feeding them 1920x1080 because it's a "normal" resolution is how you get washed-out, artifacty garbage. BmzVideoSettings exists to make that decision a dropdown instead of a guess. It's a settings node, not a generator: it outputs the width, height, a sanitized project name, and a save flag, and everything else in your workflow reads from it.
How it works
The resolution input is an enum of six presets - and they're not random. They're the native Wan-style video resolutions:
- 704x1280 (901,120 px, 1.82:1) and 1280x704 - the high-res pair
- 480x864 (414,720 px, 1.8:1) and 864x480 - the mid pair
- 320x576 (184,320 px, 1.8:1) and 576x320 - the low-VRAM pair
These are the pixel counts Wan 2.x and the LTX family actually train on. Pick one and the node splits it into clean width and height INT outputs you wire into your latent-size or video-model node - no arithmetic, no chance of an off-by-something mistake.
If none of the presets fits, custom_resolution overrides them. It's a plain string, and it must look like "832x480" - the parser matches the first \d+x\d+ pattern and reads it as width x height. Anything else raises an exception, loudly. So if you're going off-preset, keep the format exact: 640x960, not "640 by 960" or "640 960" - the parser wants the digits, an x, and more digits, in that order at the start of the string.
The other two inputs are quieter. project_name (default my_project) gets sanitized into cleaned_project_name: it strips anything after the first dot (so my_run_042.png becomes my_run_042), then replaces every non-alphanumeric character with _. That's exactly what you want for a SaveVideo filename prefix, where . and spaces cause nothing but pain. save is a BOOLEAN that passes straight through - a single switch to gate whether the video actually gets written, useful when you're iterating and don't want 400 clips piling up on disk.
What wires where
cleaned_project_name→ filename prefix on your video saverwidth,height→ the size input on your video latent / samplersave→ gate an output node or feed a conditional
Installing it
Part of the four-node ComfyUI-BmzUtils pack. ComfyUI Manager → search "ComfyUI-BmzUtils" → install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/bmalhz/ComfyUI-BmzUtils
No model downloads, no heavy dependencies - the pack only needs jinja2, and this node needs nothing beyond core.
The honest caveats
It's a tiny utility with one job and it does it fine, but don't expect more. The six presets are fixed - if your model's sweet spot isn't one of them (LTX2 and friends have their own favorites), you'll be typing into custom_resolution anyway, and at that point you're only losing a dropdown's worth of convenience. And since this is a brand-new, zero-star pack, the resolution list is the author's opinion, not gospel - cross-check it against your model's documentation the first time. For the very common case of "I just need the right Wan sizes and a clean filename," it does exactly that with zero moving parts.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| resolution | COMBO | 6 options: 704x1280 (1.82, 901120), 480x864 (1.8, 414720), 320x576 (1.8, 184320), 1280x704 (1.82, 901120), 864x480 (1.8, 414720), 576x320 (1.8, 184320) | |
| custom_resolution | STRING | — | |
| project_name | STRING | my_project | — |
| save | BOOLEAN | true | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| cleaned_project_name | STRING | — |
| save | BOOLEAN | — |
| width | INT | — |
| height | INT | — |