Nodes/Chaosaiart-Nodes/🔶 KSampler img2video v1
ComfyUI Node

🔶 KSampler img2video v1

Frame-by-frame animation without a motion model

By chaosaiart·Created 2 years ago·Updated about a year ago· 117
🔶 KSampler img2video v1
  • activ_frame
  • model
  • positive
  • negative
  • vae
  • start_Image
  • zoom_frame
  • Info
  • IMAGE
  • SAMPLER
◄Image_Mode▾►
◄Image_Size▾►
◄Img2img_input_Size▾►
â—„seed_start-1â–º
◄seed_mode▾►
â—„steps25â–º
â—„denoise0.70â–º
â—„cfg8.0â–º
◄sampler_name▾►
◄scheduler▾►

This is the actual mechanism behind the whole "LowVRAM Animation" pitch this pack was built around. There's no motion module, no learned temporal prior, nothing like AnimateDiff or a real video model underneath it - it's chained img2img, one frame regenerated from the previous frame's output, run over and over. The author (who goes by chaosaiart, and posted this pack to r/comfyui and r/StableDiffusion back in early 2024) pitched it explicitly as "no batch size process, only checkpoint plus nodes, frame after frame" - cheap on VRAM because you're never holding more than one frame's worth of latent at a time, at the cost of doing by hand what a real video model handles automatically: keeping consecutive frames coherent.

How it holds together across frames

The trick is in seed_mode. Alongside the usual "increment" option (a new seed every frame - more variation, more flicker), there's a set of "fixed" options: fixed - 0.50 - SD1.5, plus 0.45, 0.48, 0.52, 0.55. The 0.50 variant is called out by name as tuned specifically for SD 1.5 checkpoints. Rather than reseeding from scratch each frame, these hold the seed steady and use a fixed noise offset, which is what keeps the frame-to-frame output looking like a continuous sequence instead of a slideshow of unrelated images. denoise (default 0.7) is doing the heavy lifting alongside it - high enough to actually change the image each pass, low enough that the previous frame's content mostly survives into the next one.

activ_frame (required, ACTIV_FRAME type) is the sync point: it comes from the restarter node's ACTIV_FRAME output, and it's what keeps this sampler, a Load Image Batch node, and a Number Counter all agreeing on which frame of the sequence is currently being generated, rather than each one tracking its own count independently. The optional start_Image (IMAGE) is your seed frame for the very first iteration - after that, the pack's caching mechanism is what feeds each subsequent frame's output back in as the next frame's input. The optional zoom_frame (ZOOM_FRAME type) plugs in a zoom-control node elsewhere in the pack for a slow pan/zoom effect layered on top.

Standard fields fill in the rest: model, Image_Mode/Image_Size (aspect and tier, same pattern as the pack's Empty Latent node), Img2img_input_Size (crop/override/resize), steps (default 25), cfg (default 8), sampler_name, scheduler, positive/negative, vae. Three outputs: Info, IMAGE, and SAMPLER (a LATENT, despite the name).

Why you'd reach for it, and its real limits

This predates and is genuinely superseded by real video models for anyone chasing quality or motion coherence - AnimateDiff, and later Wan/LTX-Video-class models, do the temporal consistency job properly because they were trained to. What this node buys you instead is running on hardware that couldn't touch those: no motion module to hold in VRAM, no multi-frame batch, just one image generating into the next. If you're stuck on a small GPU and SD 1.5, or curious about the pre-video-model era's workaround, it's worth knowing. If you have the VRAM for a real video model, use that instead.

Installing and troubleshooting

Install via ComfyUI Manager (search "Chaosaiart-Nodes," or "Install via Git URL" with https://github.com/chaosaiart/Chaosaiart-Nodes) or manually with git clone into custom_nodes, then restart. Linux needs pip install opencv-python and pip install tqdm (venv active first). Windows has a bundled Install_windows script.

The most common failure mode here isn't an error, it's drift: colors saturating or the subject slowly mutating over dozens of frames, because every frame is another lossy VAE encode/decode cycle stacked on the last. That's inherent to the technique, not a bug - pair it with the pack's Adjust Color node every few frames to pull it back, or accept shorter sequences. If frames aren't syncing with your image batch loader, verify activ_frame and the loader's activ_frame2index are both wired to the same restarter's ACTIV_FRAME output rather than one of them running its own independent counter. And this is a small, largely solo-maintained pack with little community traffic since its 2024 launch - if something breaks on a recent ComfyUI build, the GitHub issues page is your best resource, not a forum search.

Category🔶Chaosaiart/animation

Inputs (17)

NameTypeDefaultDescription
activ_frameACTIV_FRAME—
modelMODEL—
Image_ModeCOMBO3 options: Widht = Height, Widescreen / 16:9, Portrait (Smartphone) / 9:16
Image_SizeCOMBO4 options: 360p, 480p, HD, Full HD
Img2img_input_SizeCOMBO3 options: crop, override, resize
seed_startINT-1-1–18446744073709550000—
seed_modeCOMBO6 options: fixed - 0.50 - SD1.5, increment, fixed - 0.45, fixed - 0.48, fixed - 0.52, fixed - 0.55
stepsINT250–10000—
denoiseFLOAT0.700–1—
cfgFLOAT8.00–100—
sampler_nameCOMBO34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
schedulerCOMBO9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
positiveCONDITIONING—
negativeCONDITIONING—
vaeVAE—
start_ImageoptIMAGE—
zoom_frameoptZOOM_FRAME—

Outputs (3)

NameTypeDescription
InfoSTRING—
IMAGEIMAGE—
SAMPLERLATENT—