ExVideoNode
Stretch Stable Video Diffusion to 128 frames from one still
- image
- svd_base_model
- exvideo_model
- VIDEO
One image in, an mp4 out - that's the pitch. But ExVideoNode isn't just another image-to-video node; it's an SVD (Stable Video Diffusion) node that goes where plain SVD won't: way past its native ~14 frames. The default num_frames is 128, so a single still becomes a four-plus-second clip at 30fps. If you've been getting two-second loops out of ComfyUI's stock SVD workflow and want longer, this is the pack's answer.
How it works
Under the hood it builds DiffSynth's SVDVideoPipeline from a model manager holding two models: the SVD base (stabilityai/stable-video-diffusion-img2vid-xt) and the ExVideo continuation model (ECNU-CILab/ExVideo-SVD-128f-v1). That second model is the whole trick - ExVideo is a fine-tune that teaches SVD to keep going for far more frames than it was trained for, and the node wires it in as a second SD_MODEL_PATH. Your input image gets crop-and-resized to 512x512, motion intensity is fixed at a bucket of 127, and it denoises num_frames frames at your chosen fps with num_inference_steps steps.
The if_upscale toggle (default on) runs a second pass after the first render: it takes the 512 output, re-encodes at 1024 with denoising_strength 0.5 and half the steps, and writes an upscaled_ prefixed file - that's the one the node returns if it succeeds. Turn it off and you get the raw 512 result, which is your first lever when VRAM complains. Note it's a crop-and-resize, not a letterbox: your image gets cropped to square, so compose for a center crop or you'll lose the edges.
The inputs that matter
image(IMAGE) - the still you're animating.svd_base_modelandexvideo_model- bothSD_MODEL_PATH. The shipped workflow wires twoSDPathLoadernodes into these: one for the SVD base, one for the ExVideo fine-tune. Both download on first use.num_frames(128),fps(30),num_inference_steps(50) - the clip length and quality knobs.if_upscale(True),seed- the rest of it.
Output is VIDEO, and it lands as an mp4 in ComfyUI's output folder. Wire it into the pack's PreViewVideo node to actually look at it in the UI.
What you're signing up for
This is the pack's most VRAM-hungry node, and the author's test environment - an 11GB 2080 Ti - is optimistic, not typical. SVD is already chunky, and 128 frames of temporal processing at fp16 plus a 1024 upscale pass will OOM a small card fast. Your dials, in order: if_upscale off, then num_frames down, then fps down. The downloads are also chunky (SVD xt is multiple gigabytes), and they're synchronous - the UI freezing on the first run is expected.
One honest caveat: for one-off short clips, ComfyUI's regular SVD nodes are more flexible - they expose motion bucket and micro-conditioning that this node hardcodes. ExVideoNode is a specialization, not a replacement. If what you want is a long take from a still with zero workflow fiddling, it's exactly that. If you want to tune the motion, build the stock SVD graph instead.
Install is the pack standard: ComfyUI Manager (search "ComfyUI-DiffSynth-Studio"), or git clone https://github.com/AIFSH/ComfyUI-DiffSynth-Studio into custom_nodes, pip install -r requirements.txt, restart, and make sure ffmpeg is on your PATH. Expect the first run to spend a while downloading models before a single frame appears.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| svd_base_model | SD_MODEL_PATH | — | |
| exvideo_model | SD_MODEL_PATH | — | |
| num_frames | INT | 128 | — |
| fps | INT | 30 | — |
| num_inference_steps | INT | 50 | — |
| if_upscale | BOOLEAN | true | — |
| seed | INT | 1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| VIDEO | VIDEO | — |