Nodes/ComfyUI/HunyuanVideo15ImageToVideo
ComfyUI Node Runs on cloud

HunyuanVideo15ImageToVideo

Hunyuan Video 1.5's image-to-video setup node

By Comfy-Org·Created 4 years ago·Updated about 5 hours ago· 130,652
HunyuanVideo15ImageToVideo
  • positive
  • negative
  • vae
  • start_image
  • clip_vision_output
  • positive
  • negative
  • latent
width848
height480
length33
batch_size1

Hunyuan Video spent its first year without an official image-to-video mode, and the community kept calling it out. The 1.5 update fixed that, and this node is the ComfyUI-side of the fix: it takes your prompt conditioning, a start image, and produces the exact latent + conditioning the sampler needs. If you've used HunyuanImageToVideo (the 1.0 node), this is its 1.5-era sibling - same job, newer model expectations.

The trick is that "image to video" isn't a separate model for Hunyuan Video 1.5. The sampler runs the same text-to-video model; the node just anchors the generation to your first frame. It creates an empty 32-channel latent shaped [batch, 32, frames, h/16, w/16] - Hunyuan compresses spatially 16x and temporally 4x, so length: 33 gives 33 pixel frames. Then, if you feed a start_image, it VAE-encodes those frames and stuffs them into the first latent slots via concat_latent_image, with a concat_mask set to 0 across exactly those first frames. Zero in the mask means "keep this as-is," so the sampler preserves your image and invents the motion after it.

The two inputs that actually matter are start_image (the frame you're animating) and clip_vision_output (wire it from a CLIPVisionEncode of the same image - it teaches the model what the subject looks like, and quality drops noticeably without it). width, height, length and batch_size just size the empty latent; the defaults of 848×480 at 33 frames are the model's comfort zone, and straying too far from them is where Hunyuan's anatomy gets wobbly. For your prompt text, this node expects CONDITIONING - feed it from TextEncodeHunyuanVideo (or CLIPTextEncodeHunyuanVideo_ImageToVideo) output rather than a plain SD encode.

Outputs are positive, negative, and latent. All three go into your KSampler (or its Hunyuan-friendly cousin): positive and negative into the conditioning slots, latent into the latent slot. Then the sampler output → VAEDecode → video.

It ships with ComfyUI core in comfy_extras/nodes_hunyuan.py - nothing to install. It's a recent addition, part of the Hunyuan Video 1.5 support push. You do need the Hunyuan 1.5 checkpoint in models/checkpoints/ (or diffusion_models) and its matching VAE; the wrong VAE quietly produces garbage because the latent layout is 32 channels and SD's 4-channel VAE just doesn't line up.

Where people get burned: forgetting clip_vision_output and wondering why the subject drifts by frame two. And leaving length at the default when their workflow already computed a different one - this node re-sizes the latent from whatever you set, and the source image only anchors the number of frames it occupies, not the total. Keep the two in sync with your sampler settings or you'll get either a truncated clip or a latent that's been upscaled in the time axis.

If you want to iterate fast, batch multiple start images with batch_size and generate variations in one pass - each item in the batch gets its own first frame. That's the workflow most people end up on with 1.5: one image, ten seeds, pick the take.

Categorymodel/conditioning/hunyuan video

Inputs (9)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT84816–16384
heightINT48016–16384
lengthINT331–16384
batch_sizeINT11–4096
start_imageoptIMAGE
clip_vision_outputoptCLIP_VISION_OUTPUT

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT