Stack_WanFirstLastFrameToVideo
Interpolate a Video Between Two Fixed Frames
- clip_img_start
- clip_img_end
- start_image
- end_image
- FirstLastFrame
First-frame/last-frame generation (FLF2V) formalizes a trick the Wan community had already been doing by hand for a long time: chain clips together by taking the last frame of one generation and using it as the starting point for the next, building longer sequences out of individually-short clips. Wan's native FLF2V mode does the harder version of that directly - instead of just animating forward from a start image, it generates the video between a start and an end image you both specify, solving for a plausible path connecting them. It's genuinely valued capability: when ByteDance's Bernini model shipped without it, the community named its absence as one of the model's two real weak points, right alongside speed.
How it works. start_image and end_image are your two fixed endpoints. clip_img_start/clip_vision_name_start and clip_img_end/clip_vision_name_end each handle CLIP vision conditioning independently for the start and end frames - this node conditions on both endpoints separately rather than sharing one CLIP vision pass, which makes sense given the model needs identity and composition information from both ends to interpolate between them. clip_vision_name_start/_end both default to clip_vision_h.safetensors. width, height, and length (default 832Ć480, 81 frames) set the output dimensions. Output is FirstLastFrame, a config bundle for a downstream Wan sampler.
Installing it. No extra dependency for this node itself: git clone https://github.com/cardenluo/ComfyUI-Apt_Preset into custom_nodes, restart ComfyUI, or search "ComfyUI-Apt_Preset" in ComfyUI Manager. You do need the Wan FLF2V checkpoint (Alibaba's official release, downloaded separately), and the CLIP vision model matching whatever you set for clip_vision_name_start/_end, placed in models/clip_vision.
Common issues. The thing to get right before you touch a single setting is picking endpoints that aren't too different - if your start and end images differ wildly in pose, framing, or subject scale, the model still has to invent a path between them, and a large gap tends to produce warped, unnatural-looking motion rather than a clean transition. Keep your two frames reasonably close in composition for the smoothest result. If your generated video comes back a couple of frames short of what you requested in length, that's Wan's internal frame math - the model wants frame counts landing on a 4n+1 pattern, so an arbitrary request gets rounded to the nearest valid count rather than erroring. And if identity drifts noticeably partway through - a face that starts looking like your start image and ends up looking more like a generic interpolation - that's a known general Wan limitation on longer or harder interpolations, not something specific to this node; shortening length or choosing closer endpoints usually helps more than any parameter tweak.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_vision_name_start | COMBO | clip_vision_h.safetensors | 1 options: None |
| clip_vision_name_end | COMBO | clip_vision_h.safetensors | 1 options: None |
| width | INT | 83216ā4096 | ā |
| height | INT | 48016ā4096 | ā |
| length | INT | 811ā4096 | ā |
| clip_img_startopt | IMAGE | ā | |
| clip_img_endopt | IMAGE | ā | |
| start_imageopt | IMAGE | ā | |
| end_imageopt | IMAGE | ā |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| FirstLastFrame | FIRSTLASTFRAME | ā |