Stability Image to Video
Turn a Still Into a Video Without a Video GPU
- image
- IMAGE
Image-to-video is the biggest model in the local generation scene - Wan, LTX, Hunyuan - and all of them want a chunk of VRAM you may not have. StabilityImageToVideo is this pack's escape hatch: the image-to-video model runs on Stability's servers, you send a still, and the node hands you back frames. It's a hosted Stable Video Diffusion-class model behind /v2beta/image-to-video.
Here's the ComfyUI twist that trips people up: the node does not output a video file. It returns the clip as an IMAGE tensor - one frame per image in the batch. To actually save an mp4 you wire the output into a video-combine node (the pack's example workflow uses VHS_VideoCombine with a frame rate around 24fps). Think of this node as "image-to-video-frame-generator" and the last step is yours.
How it works
You send the image plus three controls. The API returns a generation ID, then the node polls /v2beta/image-to-video/result/{id} until the clip is ready, decodes it with OpenCV, and stacks the frames into a [B, H, W, C] tensor. Asynchronous and blocking - expect a minute or two of "processing" per clip, and budget for it: you're paying credits for every clip regardless of length.
The three knobs are worth knowing:
- motion_bucket_id (1–255, default 127) - the interesting one. This is how much motion you want. Low numbers give gentle, slow movement; high numbers get dramatic (and start warping). 127 is the middle, and it's a sane default.
- cfg_scale (0–10, default 1.8) - video guidance, and unlike image models it wants to be low. Around 2 is the sweet spot; cranking it toward 10 tends to hurt rather than help.
- seed - set it to get the same motion back; 0 randomizes.
Inputs and outputs
- image - required. Any still; Load Image or a prior generation node.
- seed, cfg_scale, motion_bucket_id - as above.
- api_key - per-node override.
Output: IMAGE (a batch of frames). Wire it to VHS_VideoCombine / a video save node, or feed individual frames into a filter for frame-by-frame cleanup.
Installing it
Same pack as all the Stability nodes here - aicu-comfyui-stability-ai-api:
cd ComfyUI/custom_nodes
git clone https://github.com/aicuai/aicu-comfyui-stability-ai-api.git
cd aicu-comfyui-stability-ai-api
pip install -r requirements.txt
Or ComfyUI Manager → search "aicu-comfyui-stability-ai-api" → install → restart. You need a Stability AI API key (paid credits): the node's api_key field, the STABILITY_API_KEY env var, or the pack's auto-generated config.ini.
Where it's not a great fit
If you have the VRAM for Wan or LTX locally, local is almost always the better deal - free, uncensored, and you control the output length and frame count. This node is for the GPU-poor or the impatient-with-downloads. The other real gotcha: the clip comes back as frames, and the first time you run it and see an IMAGE output where you expected a movie, that's not a bug. Grab VHS_VideoCombine, plug the frames in at 24fps, and you're done.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| api_keyopt | STRING | — | |
| seedopt | INT | 00–4294967295 | — |
| cfg_scaleopt | FLOAT | 1.80–10 | — |
| motion_bucket_idopt | INT | 1271–255 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |