Empty MotifVideo Latent
Your video's blank canvas is a 5D tensor, and this node builds it right
- LATENT
When you generate a video with Motif-Video 2B, KSampler doesn't start from pixels. It starts from a latent - a compressed representation the model actually works in - and that latent is a 5D tensor: batch, 16 channels, time, height, width. The image latent you're used to from SDXL only has 4 dimensions, so you can't just reach for core EmptyLatentImage. This node builds the video-shaped blank for you, and it handles the one math detail that trips everyone up: the temporal dimension isn't a straight division.
What it does
EmptyMotifLatent creates a zeroed latent with the shape the Motif-Video VAE expects: 16 channels, spatial size divided by 8 per side, and a time dimension of num_frames // 4 + 1. That +1 is the kicker. The VAE compresses time 4x, but it keeps an extra frame for the initial image - the anchor frame that the rest of the video unfolds from. Forget the +1 and your latent is one timestep short of what the decoder wants, which is exactly the kind of silent shape mismatch that gives you garbage video and no error message.
The output is a standard LATENT, so it plugs straight into KSampler's latent_image input.
The inputs that matter
Four of them, and only two you'll think about:
- width / height - default 1280×736, the resolution the pack is tuned for. The node quietly snaps these down to a multiple of 16, so if you type 1000 you get 992 whether you asked for it or not.
- num_frames - default 121. The README's recommended values are 33, 65, or 121 frames. This is the expensive dial: each step processes every frame, so doubling frames roughly doubles the per-step work.
- batch_size - default 1. More than 1 multiplies VRAM in a hurry on a pack that already wants H200-class hardware, so don't touch it unless you know exactly what you're doing.
Installing it
It's part of the official Motif Technologies pack, installed as one unit:
cd ComfyUI/custom_nodes
git clone https://github.com/MotifTechnologies/ComfyUI-MotifVideo2B.git
pip install -r ComfyUI-MotifVideo2B/requirements.txt
ComfyUI Manager won't find the pack by search yet (the registry registration PR is planned but not merged), and its install-by-Git-URL path is blocked under the default security level - the clone command is the path that works. The latent node itself has no model files; the three weights (transformer, text encoder, VAE) come down from Hugging Face either via the auto-download dialog in the example workflows or by hand.
Where people get burned
- Silent dimension snapping. You put in 1280×800 and get back 1280×800 minus a bit. It's deliberate - the VAE requires multiples of 16 - but it means the output resolution is not always what you typed.
- Frame math.
num_frames=120gives a time dim of 31, not 30, because of the initial-frame+1. The node handles it; just don't fight it by hand-crafting latents elsewhere. - Reusing the latent. The latent you feed KSampler also gets read by
MotifVideo Image Encodein image-to-video mode - that node derives the target resolution from it. Use one latent, wire it to both, and everything lines up. - Treating it like an image node. This latent only makes sense for a Motif-Video workflow. Feed it to an SDXL or Wan sampler and you'll get nonsense, because the channel count and VAE stats don't match.
The defaults are sane. If you just loaded the example workflow and want to know what to touch, the honest answer is: frames if you want shorter clips, everything else if you have a reason. On this pack, the resolution and frame count you set here are the single biggest lever on both VRAM and runtime - at the recommended 1280×736 / 121 frames you're in for roughly 30s/step on an H200, so start with 33 frames while you're testing.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 128064–8192 | — |
| height | INT | 73664–8192 | — |
| num_frames | INT | 1211–1024 | — |
| batch_size | INT | 11–64 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |