Wan Video Image To Video Encode_v2 (QQ)
I2V conditioning from start, middle, AND end images — the experimental bit
- vae
- clip_embeds
- start_image
- mid_image
- end_image
- control_embeds
- temporal_mask
- extra_latents
- add_cond_latents
- image_embeds
Standard Wan I2V conditions on a start image: the first frame is fixed and the model invents everything after. WanVideoImageToVideoEncode_v2 is the pack's experiment in going further - encoding a start image, a mid image, and an end image into the conditioning so the model has to pass through all three points. The README is refreshingly honest about it: "(EXPERIMENTAL) Maybe there's native ways to do this, but it seems to work." That's the whole vibe. It builds on Kijai's image-to-video encoding machinery (hence the WANVIDIMAGE_EMBEDS output type) and adds the multi-frame twist on top.
The mechanism: each provided image is VAE-encoded into latents, placed at its position in the timeline, and cosine-interpolated between keyframes (the README calls it "temporal feathering") so the transition from start → mid → end is smooth rather than a hard jump. Per-frame latent strength multipliers then control how hard each anchor holds the image.
The inputs that matter
- width / height / num_frames - the output canvas (default 832×480×81) and length. The encoder is 8-aligned.
- start_image, mid_image, end_image (optional
IMAGEs) - the three anchors. Wire at least start; the node shines when you give it all three. - mid_position (0–1, default 0.5) - where the mid image sits in the timeline. end_position (0–1, default 1.0) - where the end image lands relative to the remaining timeline.
- start/mid/end_latent_strength - per-anchor latent multipliers; the tooltips say it straight: "lower values allow for more motion." Lower = the model is freer to drift from the image.
- end_final_strength (default 0.8) - strength of an end-image copy placed at the final frame for temporal consistency.
- noise_aug_strength (default 0) - a little noise here "can add motion and give sharper results."
- force_offload, plus optional vae, clip_embeds (the CLIP-vision encoding), control_embeds (for the Fun/FLF2V models - enable fun_or_fl2v_model for those), temporal_mask, extra_latents (Skyreels A2 reference images), tiled_vae (low-memory), and add_cond_latents (WIP).
Output is a single image_embeds (WANVIDIMAGE_EMBEDS) - wire it into the WanVideoWrapper sampler's image-embeds input.
When you'd risk it
The classic use: you want a clip that ends on a specific frame (a loop that returns to its start, a shot that must land on a particular composition, or a "transform from A to B to C" sequence). End-anchoring is exactly the trick the community uses for seamless loops and multi-keyframe sequences, and normally that means chaining multiple I2V generations. This node attempts it in one pass. Treat it as an experiment: if the multi-image conditioning fights the model, drop back to start-image-only encoding - the defaults are tuned to work, but "default setting work but can be adjusted" is doing a lot of work in that README sentence.
Installing it
Part of siraxe/ComfyUI-WanVideoWrapper_QQ via ComfyUI Manager (search WanVideoWrapper_QQ/SA-Nodes-QQ), or:
cd ComfyUI/custom_nodes
git clone https://github.com/siraxe/ComfyUI-WanVideoWrapper_QQ.git
Restart ComfyUI. Needs Kijai's ComfyUI-WanVideoWrapper installed (the WANVIDIMAGE_EMBEDS and WANVAE types live there) plus a Wan VAE.
Gotchas
- Mid/end anchors that contradict the start will fight the model - keep them consistent in subject.
- Lower
_latent_strength= more motion, but also more drift. Find the floor per anchor before blaming the node. - Pack note: repo renamed to ComfyUI-SA-Nodes-QQ in v1.3.4; delete any stale
wanwrapper_qqfolder incustom_nodesif old workflows reference it.
Inputs (22)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 83264–8096 | Width of the image to encode |
| height | INT | 48064–8096 | Height of the image to encode |
| num_frames | INT | 811–10000 | Number of frames to encode |
| noise_aug_strength | FLOAT | 0.0000–10 | Strength of noise augmentation, helpful for I2V where some noise can add motion and give sharper results |
| start_latent_strength | FLOAT | 1.0000–10 | Additional latent multiplier, helpful for I2V where lower values allow for more motion |
| mid_latent_strength | FLOAT | 1.0000–10 | Additional latent multiplier for mid frame, helpful for I2V where lower values allow for more motion |
| end_latent_strength | FLOAT | 1.0000–10 | Additional latent multiplier, helpful for I2V where lower values allow for more motion |
| end_final_strength | FLOAT | 0.8000–10 | Strength for end_image copy placed at final frame for temporal consistency |
| mid_position | FLOAT | 0.500–1 | Position of mid_image as fraction of total frames (0.0 = start, 1.0 = end) |
| end_position | FLOAT | 1.000–1 | Position of end_image relative to remaining timeline after mid_image |
| force_offload | BOOLEAN | true | — |
| vaeopt | WANVAE | — | |
| clip_embedsopt | WANVIDIMAGE_CLIPEMBEDS | Clip vision encoded image | |
| start_imageopt | IMAGE | Image to encode | |
| mid_imageopt | IMAGE | middle frame | |
| end_imageopt | IMAGE | end frame | |
| control_embedsopt | WANVIDIMAGE_EMBEDS | Control signal for the Fun -model | |
| fun_or_fl2v_modelopt | BOOLEAN | true | Enable when using official FLF2V or Fun model |
| temporal_maskopt | MASK | mask | |
| extra_latentsopt | LATENT | Extra latents to add to the input front, used for Skyreels A2 reference images | |
| tiled_vaeopt | BOOLEAN | false | Use tiled VAE encoding for reduced memory use |
| add_cond_latentsopt | ADD_COND_LATENTS | Additional cond latents WIP |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image_embeds | WANVIDIMAGE_EMBEDS | — |