Multi-Keyframe Video Stitching
Creates a smooth video using 6 key frames.It auto fills in the motion between frames and stitchs the segments together seamlessly.
查看工作流内部
源模板的只读预览。在 Cloud 中打开,即可查看节点并进行修改。
Loading the graph
Open full-size workflow preview- 输出
- 视频
- 作者
- ComfyUI
从代码中调用该模型
以下请求使用与体验区相同的预设图和设置。每次提交都可能开始一次付费运行;如果提交结果未知,请勿自动重试。
What you need
- Runs on
- Comfy Cloud
- 密钥
- COMFY_API_KEY
- 你的文件
- 由代码根据链接上传
需要付费的 Cloud 方案和额度。
# Python 3.10+: pip install comfy-sdk==0.4.0
import os
from comfy_sdk import Comfy
api_key = os.environ.get("COMFY_API_KEY", "").strip()
if not api_key: raise RuntimeError("Set COMFY_API_KEY")
os.environ.setdefault("COMFY_BASE_URL", "https://cloud.comfy.org")
client = Comfy(api_key=api_key)
workflow = client.workflows.from_json({
"62": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_keyframe_1_FILENAME"
},
"_meta": {
"title": "Start Frame"
}
},
"122": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_keyframe_2_FILENAME"
},
"_meta": {
"title": "End Frame"
}
},
"124": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_keyframe_3_FILENAME"
},
"_meta": {
"title": "End Frame"
}
},
"126": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_keyframe_4_FILENAME"
},
"_meta": {
"title": "End Frame"
}
},
"128": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_keyframe_5_FILENAME"
},
"_meta": {
"title": "End Frame"
}
},
"130": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_keyframe_6_FILENAME"
},
"_meta": {
"title": "End Frame"
}
},
"133": {
"class_type": "ImageBatch",
"inputs": {
"image1": [
"140:8",
0
],
"image2": [
"141:8",
0
]
},
"_meta": {
"title": "Batch Images (DEPRECATED)"
}
},
"134": {
"class_type": "ImageBatch",
"inputs": {
"image1": [
"133",
0
],
"image2": [
"142:8",
0
]
},
"_meta": {
"title": "Batch Images (DEPRECATED)"
}
},
"135": {
"class_type": "ImageBatch",
"inputs": {
"image1": [
"134",
0
],
"image2": [
"143:8",
0
]
},
"_meta": {
"title": "Batch Images (DEPRECATED)"
}
},
"136": {
"class_type": "ImageBatch",
"inputs": {
"image1": [
"135",
0
],
"image2": [
"144:8",
0
]
},
"_meta": {
"title": "Batch Images (DEPRECATED)"
}
},
"145": {
"class_type": "CreateVideo",
"inputs": {
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": 24,
"images": [
"136",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"146": {
"class_type": "SaveVideo",
"inputs": {
"filename_prefix": "video/ComfyUI",
"format": "auto",
"format.codec": "auto",
"video": [
"145",
0
]
},
"_meta": {
"title": "Save Video"
}
},
"140:37": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"140:38": {
"class_type": "CLIPLoader",
"inputs": {
"clip_name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
"device": "default",
"type": "wan"
},
"_meta": {
"title": "Load CLIP"
}
},
"140:39": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "wan_2.1_vae.safetensors"
},
"_meta": {
"title": "Load VAE"
}
},
"140:54": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"140:91",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"140:55": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"140:92",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"140:56": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"140:57": {
"class_type": "KSamplerAdvanced",
"inputs": {
"add_noise": "enable",
"cfg": 1,
"end_at_step": 2,
"latent_image": [
"140:67",
2
],
"model": [
"140:54",
0
],
"negative": [
"140:67",
1
],
"noise_seed": 106238756028535,
"positive": [
"140:67",
0
],
"return_with_leftover_noise": "enable",
"sampler_name": "euler",
"scheduler": "simple",
"start_at_step": 0,
"steps": 4
},
"_meta": {
"title": "KSampler (Advanced)"
}
},
"140:58": {
"class_type": "KSamplerAdvanced",
"inputs": {
"add_noise": "disable",
"cfg": 1,
"end_at_step": 10000,
"latent_image": [
"140:57",
0
],
"model": [
"140:55",
0
],
"negative": [
"140:67",
1
],
"noise_seed": 0,
"positive": [
"140:67",
0
],
"return_with_leftover_noise": "disable",
"sampler_name": "euler",
"scheduler": "simple",
"start_at_step": 2,
"steps": 4
},
"_meta": {
"title": "KSampler (Advanced)"
}
},
"140:6": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"140:38",
0
],
"text": "A time-lapse from a locked-off camera on the same hilltop: the stormy indigo twilight lifts and dawn breaks over the lone hawthorn tree. Clouds race across the sky and thin out, mist rolls through the hollows and burns away, and pale pink blossom bursts open all along the tree's twisted branches. Fresh green shoots spread over the rolling hill and the light warms from cold violet to soft rose and gold. The tree, the hill and the horizon stay exactly in place; only the season, the sky and the light change, smoothly and continuously, as the seasons advance in a single fluid shot with no cuts."
},
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
"140:60": {
"class_type": "CreateVideo",
"inputs": {
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": 16,
"images": [
"140:8",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"140:67": {
"class_type": "WanFirstLastFrameToVideo",
"inputs": {
"batch_size": 1,
"end_image": [
"122",
0
],
"height": 480,
"length": 25,
"negative": [
"140:7",
0
],
"positive": [
"140:6",
0
],
"start_image": [
"62",
0
],
"vae": [
"140:39",
0
],
"width": 832
},
"_meta": {
"title": "WanFirstLastFrameToVideo"
}
},
"140:7": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"140:38",
0
],
"text": "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走"
},
"_meta": {
"title": "CLIP Text Encode (Negative Prompt)"
}
},
"140:8": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"140:58",
0
],
"vae": [
"140:39",
0
]
},
"_meta": {
"title": "VAE Decode"
}
},
"140:91": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors",
"model": [
"140:37",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"140:92": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors",
"model": [
"140:56",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"141:37": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"141:38": {
"class_type": "CLIPLoader",
"inputs": {
"clip_name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
"device": "default",
"type": "wan"
},
"_meta": {
"title": "Load CLIP"
}
},
"141:39": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "wan_2.1_vae.safetensors"
},
"_meta": {
"title": "Load VAE"
}
},
"141:54": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"141:91",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"141:55": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"141:92",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"141:56": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"141:57": {
"class_type": "KSamplerAdvanced",
"inputs": {
"add_noise": "enable",
"cfg": 1,
"end_at_step": 2,
"latent_image": [
"141:67",
2
],
"model": [
"141:54",
0
],
"negative": [
"141:67",
1
],
"noise_seed": 332092862784409,
"positive": [
"141:67",
0
],
"return_with_leftover_noise": "enable",
"sampler_name": "euler",
"scheduler": "simple",
"start_at_step": 0,
"steps": 4
},
"_meta": {
"title": "KSampler (Advanced)"
}
},
"141:58": {
"class_type": "KSamplerAdvanced",
"inputs": {
"add_noise": "disable",
"cfg": 1,
"end_at_step": 10000,
"latent_image": [
"141:57",
0
],
"model": [
"141:55",
0
],
"negative": [
"141:67",
1
],
"noise_seed": 0,
"positive": [
"141:67",
0
],
"return_with_leftover_noise": "disable",
"sampler_name": "euler",
"scheduler": "simple",
"start_at_step": 2,
"steps": 4
},
"_meta": {
"title": "KSampler (Advanced)"
}
},
"141:6": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"141:38",
0
],
"text": "A time-lapse from a locked-off camera on the same hilltop: spring turns into high summer around the lone hawthorn tree. The pink blossom falls away and drifts on the wind as dense dark-green leaves fill the crown. The grass on the hill grows tall and lush, wildflowers open in waves of white and yellow, and tall white clouds build and sail across a bright blue midday sky, their shadows sweeping over the slopes. The tree, the hill and the horizon stay exactly in place; only the season, the sky and the light change, smoothly and continuously, in a single fluid shot with no cuts."
},
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
"141:60": {
"class_type": "CreateVideo",
"inputs": {
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": 16,
"images": [
"141:8",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"141:67": {
"class_type": "WanFirstLastFrameToVideo",
"inputs": {
"batch_size": 1,
"end_image": [
"124",
0
],
"height": 480,
"length": 25,
"negative": [
"141:7",
0
],
"positive": [
"141:6",
0
],
"start_image": [
"122",
0
],
"vae": [
"141:39",
0
],
"width": 832
},
"_meta": {
"title": "WanFirstLastFrameToVideo"
}
},
"141:7": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"141:38",
0
],
"text": "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走"
},
"_meta": {
"title": "CLIP Text Encode (Negative Prompt)"
}
},
"141:8": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"141:58",
0
],
"vae": [
"141:39",
0
]
},
"_meta": {
"title": "VAE Decode"
}
},
"141:91": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors",
"model": [
"141:37",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"141:92": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors",
"model": [
"141:56",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"142:37": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"142:38": {
"class_type": "CLIPLoader",
"inputs": {
"clip_name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
"device": "default",
"type": "wan"
},
"_meta": {
"title": "Load CLIP"
}
},
"142:39": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "wan_2.1_vae.safetensors"
},
"_meta": {
"title": "Load VAE"
}
},
"142:54": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"142:91",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"142:55": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"142:92",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"142:56": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"142:57": {
"class_type": "KSamplerAdvanced",
"inputs": {
"add_noise": "enable",
"cfg": 1,
"end_at_step": 2,
"latent_image": [
"142:67",
2
],
"model": [
"142:54",
0
],
"negative": [
"142:67",
1
],
"noise_seed": 502081291840272,
"positive": [
"142:67",
0
],
"return_with_leftover_noise": "enable",
"sampler_name": "euler",
"scheduler": "simple",
"start_at_step": 0,
"steps": 4
},
"_meta": {
"title": "KSampler (Advanced)"
}
},
"142:58": {
"class_type": "KSamplerAdvanced",
"inputs": {
"add_noise": "disable",
"cfg": 1,
"end_at_step": 10000,
"latent_image": [
"142:57",
0
],
"model": [
"142:55",
0
],
"negative": [
"142:67",
1
],
"noise_seed": 0,
"positive": [
"142:67",
0
],
"return_with_leftover_noise": "disable",
"sampler_name": "euler",
"scheduler": "simple",
"start_at_step": 2,
"steps": 4
},
"_meta": {
"title": "KSampler (Advanced)"
}
},
"142:6": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"142:38",
0
],
"text": "A time-lapse from a locked-off camera on the same hilltop: summer fades into autumn as the sun sinks to golden hour behind the lone hawthorn tree. The leaves turn from green to amber, orange and deep red, a few of them tumbling away in gusts of wind. The tall grass dries to a warm gold, and the tree's long shadow stretches slowly across the hill as the low sun slides sideways. Clouds glow copper and pink. The tree, the hill and the horizon stay exactly in place; only the season, the sky and the light change, smoothly and continuously, in one fluid shot with no cuts."
},
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
"142:60": {
"class_type": "CreateVideo",
"inputs": {
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": 16,
"images": [
"142:8",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"142:67": {
"class_type": "WanFirstLastFrameToVideo",
"inputs": {
"batch_size": 1,
"end_image": [
"126",
0
],
"height": 480,
"length": 25,
"negative": [
"142:7",
0
],
"positive": [
"142:6",
0
],
"start_image": [
"124",
0
],
"vae": [
"142:39",
0
],
"width": 832
},
"_meta": {
"title": "WanFirstLastFrameToVideo"
}
},
"142:7": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"142:38",
0
],
"text": "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走"
},
"_meta": {
"title": "CLIP Text Encode (Negative Prompt)"
}
},
"142:8": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"142:58",
0
],
"vae": [
"142:39",
0
]
},
"_meta": {
"title": "VAE Decode"
}
},
"142:91": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors",
"model": [
"142:37",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"142:92": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors",
"model": [
"142:56",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"143:37": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"143:38": {
"class_type": "CLIPLoader",
"inputs": {
"clip_name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
"device": "default",
"type": "wan"
},
"_meta": {
"title": "Load CLIP"
}
},
"143:39": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "wan_2.1_vae.safetensors"
},
"_meta": {
"title": "Load VAE"
}
},
"143:54": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"143:91",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"143:55": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"143:92",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"143:56": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"143:57": {
"class_type": "KSamplerAdvanced",
"inputs": {
"add_noise": "enable",
"cfg": 1,
"end_at_step": 2,
"latent_image": [
"143:67",
2
],
"model": [
"143:54",
0
],
"negative": [
"143:67",
1
],
"noise_seed": 282609046210025,
"positive": [
"143:67",
0
],
"return_with_leftover_noise": "enable",
"sampler_name": "euler",
"scheduler": "simple",
"start_at_step": 0,
"steps": 4
},
"_meta": {
"title": "KSampler (Advanced)"
}
},
"143:58": {
"class_type": "KSamplerAdvanced",
"inputs": {
"add_noise": "disable",
"cfg": 1,
"end_at_step": 10000,
"latent_image": [
"143:57",
0
],
"model": [
"143:55",
0
],
"negative": [
"143:67",
1
],
"noise_seed": 0,
"positive": [
"143:67",
0
],
"return_with_leftover_noise": "disable",
"sampler_name": "euler",
"scheduler": "simple",
"start_at_step": 2,
"steps": 4
},
"_meta": {
"title": "KSampler (Advanced)"
}
},
"143:6": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"143:38",
0
],
"text": "A time-lapse from a locked-off camera on the same hilltop: autumn gives way to deep winter as dusk falls over the lone hawthorn tree. The last red leaves blow off and the branches stand bare. Snow begins to fall, first in a few flakes, then thickly, settling on every branch and smoothing the whole hill under a soft white blanket. The warm sunset drains into a cold blue-violet sky with a thin band of last light on the horizon. The tree, the hill and the horizon stay exactly in place; only the season, the sky and the light change, smoothly and continuously, in one fluid shot with no cuts."
},
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
"143:60": {
"class_type": "CreateVideo",
"inputs": {
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": 16,
"images": [
"143:8",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"143:67": {
"class_type": "WanFirstLastFrameToVideo",
"inputs": {
"batch_size": 1,
"end_image": [
"128",
0
],
"height": 480,
"length": 25,
"negative": [
"143:7",
0
],
"positive": [
"143:6",
0
],
"start_image": [
"126",
0
],
"vae": [
"143:39",
0
],
"width": 832
},
"_meta": {
"title": "WanFirstLastFrameToVideo"
}
},
"143:7": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"143:38",
0
],
"text": "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走"
},
"_meta": {
"title": "CLIP Text Encode (Negative Prompt)"
}
},
"143:8": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"143:58",
0
],
"vae": [
"143:39",
0
]
},
"_meta": {
"title": "VAE Decode"
}
},
"143:91": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors",
"model": [
"143:37",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"143:92": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors",
"model": [
"143:56",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"144:37": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"144:38": {
"class_type": "CLIPLoader",
"inputs": {
"clip_name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
"device": "default",
"type": "wan"
},
"_meta": {
"title": "Load CLIP"
}
},
"144:39": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "wan_2.1_vae.safetensors"
},
"_meta": {
"title": "Load VAE"
}
},
"144:54": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"144:91",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"144:55": {
"class_type": "ModelSamplingSD3",
"inputs": {
"model": [
"144:92",
0
],
"shift": 5
},
"_meta": {
"title": "ModelSamplingSD3"
}
},
"144:56": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"144:57": {
"class_type": "KSamplerAdvanced",
"inputs": {
"add_noise": "enable",
"cfg": 1,
"end_at_step": 2,
"latent_image": [
"144:67",
2
],
"model": [
"144:54",
0
],
"negative": [
"144:67",
1
],
"noise_seed": 1081792442176464,
"positive": [
"144:67",
0
],
"return_with_leftover_noise": "enable",
"sampler_name": "euler",
"scheduler": "simple",
"start_at_step": 0,
"steps": 4
},
"_meta": {
"title": "KSampler (Advanced)"
}
},
"144:58": {
"class_type": "KSamplerAdvanced",
"inputs": {
"add_noise": "disable",
"cfg": 1,
"end_at_step": 10000,
"latent_image": [
"144:57",
0
],
"model": [
"144:55",
0
],
"negative": [
"144:67",
1
],
"noise_seed": 0,
"positive": [
"144:67",
0
],
"return_with_leftover_noise": "disable",
"sampler_name": "euler",
"scheduler": "simple",
"start_at_step": 2,
"steps": 4
},
"_meta": {
"title": "KSampler (Advanced)"
}
},
"144:6": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"144:38",
0
],
"text": "A time-lapse from a locked-off camera on the same hilltop: winter dusk deepens into a clear, still night above the bare, snow-dusted hawthorn tree. The last glow on the horizon fades away, the sky darkens to deep navy and black, and stars appear one by one until the faint band of the galaxy arcs over the tree. Moonlight rises from the side and glints on the snow, giving the hill a silver edge, while the stars wheel slowly across the sky. The tree, the hill and the horizon stay exactly in place; only the sky and the light change, smoothly and continuously, with no cuts."
},
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
"144:60": {
"class_type": "CreateVideo",
"inputs": {
"bit_depth": "auto",
"codec": "none",
"color_space": "sRGB",
"fps": 16,
"images": [
"144:8",
0
]
},
"_meta": {
"title": "Create Video"
}
},
"144:67": {
"class_type": "WanFirstLastFrameToVideo",
"inputs": {
"batch_size": 1,
"end_image": [
"130",
0
],
"height": 480,
"length": 25,
"negative": [
"144:7",
0
],
"positive": [
"144:6",
0
],
"start_image": [
"128",
0
],
"vae": [
"144:39",
0
],
"width": 832
},
"_meta": {
"title": "WanFirstLastFrameToVideo"
}
},
"144:7": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"144:38",
0
],
"text": "色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走"
},
"_meta": {
"title": "CLIP Text Encode (Negative Prompt)"
}
},
"144:8": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"144:58",
0
],
"vae": [
"144:39",
0
]
},
"_meta": {
"title": "VAE Decode"
}
},
"144:91": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors",
"model": [
"144:37",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"144:92": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors",
"model": [
"144:56",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
}
})
workflow.set_input("62", "image", client.assets.from_url("https://comfy.org/catalog-media/355e43fc-9314-423c-9bb4-60e392f6b905/409d71e0-812f-475d-a889-049ee879c67f"))
workflow.set_input("122", "image", client.assets.from_url("https://comfy.org/catalog-media/e2928720-cfd8-44d8-88c1-5600eee2df6f/bbe0e7d2-dc7b-4fa2-b232-10a9463b7480"))
workflow.set_input("124", "image", client.assets.from_url("https://comfy.org/catalog-media/4ee3c115-a4fd-4fc8-a5de-66a1043ff111/014a35ec-33e3-452f-bbd2-5781cf7d92ca"))
workflow.set_input("126", "image", client.assets.from_url("https://comfy.org/catalog-media/103c269e-16ee-410f-94e9-7a1bb568299e/2fa4c753-28e4-4e34-a3da-e5457e6bc939"))
workflow.set_input("128", "image", client.assets.from_url("https://comfy.org/catalog-media/deac9ebe-14cb-4897-b6f6-064b209d708b/48acce99-e35a-4fe7-94ec-286f0db330a4"))
workflow.set_input("130", "image", client.assets.from_url("https://comfy.org/catalog-media/f0d772c2-0333-499d-ab54-6aa9f60ada1d/e2765e2c-73ad-4b0f-a727-6b2db2e34b2e"))
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)
for output in job.get_outputs("146"):
output.to_file(output.name)试试一个示例
关于此工作流
The Multi-Keyframe Video Stitching workflow in ComfyUI is designed to transform a series of static images into a fluid video sequence. Utilizing six key frames, this workflow automatically generates the transitional frames needed to create a seamless video. At the core of this process is the Wan2.2 model, which excels at interpreting motion between images to ensure smooth transitions.
The workflow begins with the LoadImage and ImageBatch nodes, which prepare the key frames for processing. The intermediate nodes, such as 11ac0cb0-38fb-41d4-9a55-7c44422b2516 and 1c5f4533-5d1e-4449-97ca-9027b9ea9c11, handle the interpolation of frames by predicting and filling in the motion paths. Finally, the CreateVideo and SaveVideo nodes compile the frames into a cohesive video file.
This workflow is particularly useful for creators looking to produce animations or video content from still images without requiring extensive manual editing. By automating the interpolation process, it saves time and ensures consistency in the motion between frames. The use of advanced nodes and the Wan2.2 model allows for high-quality video output that maintains the integrity of the original images while providing a natural flow of motion.
常见问答
This workflow is optimized for six key frames to ensure smooth transitions and efficient processing.
Yes, you can adjust the speed by modifying the frame rate settings in the CreateVideo node.
The SaveVideo node supports common video formats such as MP4 and AVI for the final output.
No prior experience is necessary. The workflow is designed to be user-friendly and intuitive for beginners.