近年來 AI 影片生成技術快速發展,除了文字生成影片(Text to Video)之外,透過單張圖片產生動態影片(Image to Video)更是目前最受歡迎的應用之一。
Wan 2.1 是由阿里巴巴通義實驗室推出的開源影片生成模型,不僅支援文生影片(T2V),也支援圖生影片(I2V),能夠讓靜態圖片產生自然流暢的動態效果,例如人物眨眼、微笑、轉頭、風吹髮絲、景物運鏡等效果。
本篇將介紹如何在 ComfyUI 中使用 Wan 2.1 Image to Video 工作流,快速將圖片轉換為影片。
安裝 ComfyUI WanVideo 節點
首先開啟 ComfyUI Manager。
選擇:
Manager → Custom Nodes Manager
搜尋:
ComfyUI-WanVideoWrapper安裝完成後重新啟動 ComfyUI。

下載所需模型
Wan 2.1 I2V 工作流主要需要以下模型:
Wan 2.1 I2V 主模型
檔案:
Wan2_1-I2V-14B-480P_fp8_e4m3fn.safetensors
放置位置:
ComfyUI\models\diffusion_models\Wan VAE
檔案:
放置位置:
ComfyUI\models\vae\Text Encoder
檔案:
放置位置:
ComfyUI\models\text_encoders\CLIP Vision 模型
檔案:
放置位置:
ComfyUI\models\clip_vision\載入 Wan 2.1 Image to Video 工作流
我們將 workflow json 檔案放在文章最後供各位參考,載入工作流後請重新啟動 ComfyUI 。
如果模型位置正確,所有節點應可正常載入。

工作流主要節點介紹
Load Image
首先載入欲轉換為影片的圖片。Wan 2.1 Image to Video 對於輸入圖片品質相當敏感,建議選擇主體清晰、構圖完整的圖片,以獲得更理想的動畫效果。
適合使用的素材包括:
- 角色立繪
- 人像照片
- 風景圖片
- 插畫作品
WanVideo ImageToVideo Encode
此節點負責將輸入圖片轉換為 Wan 模型所需的影像特徵資料。
需要特別注意的是,輸出影片的長寬比例必須與原始圖片保持一致。例如,若輸入圖片解析度為 1088 × 1920,則輸出影片可設定為 544 × 960、816 × 1440 等相同比例的解析度,以避免畫面變形或生成異常。

生成時間說明
Wan 2.1 Image to Video 的運算需求相當高,實際生成時間會受到以下因素影響:
- 顯示卡效能
- 輸出影片解析度
- 影片長度(Frames 數量)
- 採樣步數(Steps)
以一般 24GB~32GB VRAM 顯示卡為例,生成一段數秒鐘的影片往往需要數分鐘至十餘分鐘不等。
雖然需要投入較長的等待時間,但 Wan 2.1 Image to Video 所生成的動畫品質通常相當優秀,無論是人物表情、頭部轉動、髮絲飄動或鏡頭運動,都能呈現出自然流暢的動態效果,是目前相當值得嘗試的開源 AI 影片生成方案之一。
小編在此附上工作流 json 檔案如下:
{
"id": "wan21-i2v-b70-official-kijai-147-fixed",
"revision": 0,
"last_node_id": 12,
"last_link_id": 13,
"nodes": [
{
"id": 1,
"type": "LoadImage",
"pos": [
-650,
160
],
"size": [
413,
498
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
1,
2
]
},
{
"name": "MASK",
"type": "MASK",
"slot_index": 1,
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.26",
"Node name for S&R": "LoadImage",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
"ComfyUI_00024_ (1).png",
"image"
]
},
{
"id": 2,
"type": "CLIPVisionLoader",
"pos": [
-650,
-150
],
"size": [
315,
58
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP_VISION",
"type": "CLIP_VISION",
"slot_index": 0,
"links": [
3
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.26",
"Node name for S&R": "CLIPVisionLoader",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
"clip_vision_h.safetensors"
]
},
{
"id": 3,
"type": "WanVideoClipVisionEncode",
"pos": [
-220,
-150
],
"size": [
330,
262
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "clip_vision",
"type": "CLIP_VISION",
"link": 3
},
{
"name": "image_1",
"type": "IMAGE",
"link": 1
},
{
"name": "image_2",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "negative_image",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "image_embeds",
"type": "WANVIDIMAGE_CLIPEMBEDS",
"slot_index": 0,
"links": [
4
]
}
],
"properties": {
"cnr_id": "ComfyUI-WanVideoWrapper",
"ver": "1.4.7",
"Node name for S&R": "WanVideoClipVisionEncode",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
1,
1,
"center",
"average",
true,
0,
0.2
]
},
{
"id": 4,
"type": "WanVideoVAELoader",
"pos": [
160,
-260
],
"size": [
372,
130
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "compile_args",
"shape": 7,
"type": "WANCOMPILEARGS",
"link": null
}
],
"outputs": [
{
"name": "vae",
"type": "WANVAE",
"slot_index": 0,
"links": [
5,
12
]
}
],
"properties": {
"cnr_id": "ComfyUI-WanVideoWrapper",
"ver": "1.4.7",
"Node name for S&R": "WanVideoVAELoader",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
"wan_2.1_vae.safetensors",
"bf16",
false,
false
]
},
{
"id": 7,
"type": "WanVideoTextEncode",
"pos": [
780,
-90
],
"size": [
420,
262
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "t5",
"shape": 7,
"type": "WANTEXTENCODER",
"link": 7
},
{
"name": "model_to_offload",
"shape": 7,
"type": "WANVIDEOMODEL",
"link": 8
}
],
"outputs": [
{
"name": "text_embeds",
"type": "WANVIDEOTEXTEMBEDS",
"slot_index": 0,
"links": [
9
]
}
],
"properties": {
"cnr_id": "ComfyUI-WanVideoWrapper",
"ver": "1.4.7",
"Node name for S&R": "WanVideoTextEncode",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
"cinematic subtle motion, natural movement, soft camera push in, realistic details, stable face, high quality video",
"low quality, blurry, distorted face, deformed, flicker, jitter, artifacts, text, watermark, worst quality",
true,
false,
"gpu"
]
},
{
"id": 8,
"type": "WanVideoModelLoader",
"pos": [
150,
-780
],
"size": [
477,
338
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "compile_args",
"shape": 7,
"type": "WANCOMPILEARGS",
"link": null
},
{
"name": "block_swap_args",
"shape": 7,
"type": "BLOCKSWAPARGS",
"link": null
},
{
"name": "lora",
"shape": 7,
"type": "WANVIDLORA",
"link": null
},
{
"name": "vram_management_args",
"shape": 7,
"type": "VRAM_MANAGEMENTARGS",
"link": null
},
{
"name": "extra_model",
"shape": 7,
"type": "VACEPATH",
"link": null
},
{
"name": "fantasytalking_model",
"shape": 7,
"type": "FANTASYTALKINGMODEL",
"link": null
},
{
"name": "multitalk_model",
"shape": 7,
"type": "MULTITALKMODEL",
"link": null
},
{
"name": "fantasyportrait_model",
"shape": 7,
"type": "FANTASYPORTRAITMODEL",
"link": null
},
{
"name": "vace_model",
"shape": 7,
"type": "VACEPATH",
"link": null
}
],
"outputs": [
{
"name": "model",
"type": "WANVIDEOMODEL",
"slot_index": 0,
"links": [
8,
10
]
}
],
"properties": {
"cnr_id": "ComfyUI-WanVideoWrapper",
"ver": "1.4.7",
"Node name for S&R": "WanVideoModelLoader",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
"Wan2_1-I2V-14B-480P_fp8_e4m3fn.safetensors",
"fp16",
"fp8_e4m3fn",
"offload_device",
"sdpa",
"default"
]
},
{
"id": 9,
"type": "WanVideoSampler",
"pos": [
1300,
-400
],
"size": [
315,
927
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "WANVIDEOMODEL",
"link": 10
},
{
"name": "image_embeds",
"type": "WANVIDIMAGE_EMBEDS",
"link": 6
},
{
"name": "text_embeds",
"shape": 7,
"type": "WANVIDEOTEXTEMBEDS",
"link": 9
},
{
"name": "samples",
"shape": 7,
"type": "LATENT",
"link": null
},
{
"name": "feta_args",
"shape": 7,
"type": "FETAARGS",
"link": null
},
{
"name": "context_options",
"shape": 7,
"type": "WANVIDCONTEXT",
"link": null
},
{
"name": "cache_args",
"shape": 7,
"type": "CACHEARGS",
"link": null
},
{
"name": "flowedit_args",
"shape": 7,
"type": "FLOWEDITARGS",
"link": null
},
{
"name": "slg_args",
"shape": 7,
"type": "SLGARGS",
"link": null
},
{
"name": "loop_args",
"shape": 7,
"type": "LOOPARGS",
"link": null
},
{
"name": "experimental_args",
"shape": 7,
"type": "EXPERIMENTALARGS",
"link": null
},
{
"name": "sigmas",
"shape": 7,
"type": "SIGMAS",
"link": null
},
{
"name": "unianimate_poses",
"shape": 7,
"type": "UNIANIMATE_POSE",
"link": null
},
{
"name": "fantasytalking_embeds",
"shape": 7,
"type": "FANTASYTALKING_EMBEDS",
"link": null
},
{
"name": "uni3c_embeds",
"shape": 7,
"type": "UNI3C_EMBEDS",
"link": null
},
{
"name": "multitalk_embeds",
"shape": 7,
"type": "MULTITALK_EMBEDS",
"link": null
},
{
"name": "freeinit_args",
"shape": 7,
"type": "FREEINITARGS",
"link": null
}
],
"outputs": [
{
"name": "samples",
"type": "LATENT",
"slot_index": 0,
"links": [
11
]
},
{
"name": "denoised_samples",
"type": "LATENT",
"slot_index": 1,
"links": null
}
],
"properties": {
"cnr_id": "ComfyUI-WanVideoWrapper",
"ver": "1.4.7",
"Node name for S&R": "WanVideoSampler",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
30,
6,
5,
400322338790308,
"randomize",
true,
"unipc",
0,
1,
"",
"comfy",
0,
-1,
false
]
},
{
"id": 10,
"type": "WanVideoDecode",
"pos": [
1680,
-650
],
"size": [
315,
198
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "vae",
"type": "WANVAE",
"link": 12
},
{
"name": "samples",
"type": "LATENT",
"link": 11
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"slot_index": 0,
"links": [
13
]
}
],
"properties": {
"cnr_id": "ComfyUI-WanVideoWrapper",
"ver": "1.4.7",
"Node name for S&R": "WanVideoDecode",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
false,
272,
272,
144,
128,
"default"
]
},
{
"id": 11,
"type": "VHS_VideoCombine",
"pos": [
1680,
-390
],
"size": [
1000,
2077.4117647058824
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 13
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"slot_index": 0,
"links": null
}
],
"properties": {
"cnr_id": "comfyui-videohelpersuite",
"ver": "0a75c7958fe320efcb052f1d9f8451fd20c730a8",
"Node name for S&R": "VHS_VideoCombine",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": {
"frame_rate": 16,
"loop_count": 0,
"filename_prefix": "WanVideoWrapper_I2V_B70",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": true,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "WanVideoWrapper_I2V_B70_00002.mp4",
"subfolder": "",
"type": "output",
"format": "video/h264-mp4",
"frame_rate": 16,
"workflow": "WanVideoWrapper_I2V_B70_00002.png",
"fullpath": "C:\\AI\\ComfyUI_Windows_portable\\ComfyUI\\output\\WanVideoWrapper_I2V_B70_00002.mp4"
}
}
}
},
{
"id": 6,
"type": "LoadWanVideoT5TextEncoder",
"pos": [
160,
-450
],
"size": [
377,
130
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "wan_t5_model",
"type": "WANTEXTENCODER",
"slot_index": 0,
"links": [
7
]
}
],
"properties": {
"cnr_id": "ComfyUI-WanVideoWrapper",
"ver": "1.4.7",
"Node name for S&R": "LoadWanVideoT5TextEncoder",
"ue_properties": {
"widget_ue_connectable": {},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
"umt5-xxl-enc-bf16.safetensors",
"bf16",
"offload_device",
"disabled"
]
},
{
"id": 5,
"type": "WanVideoImageToVideoEncode",
"pos": [
280,
-90
],
"size": [
352,
434
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "vae",
"shape": 7,
"type": "WANVAE",
"link": 5
},
{
"name": "clip_embeds",
"shape": 7,
"type": "WANVIDIMAGE_CLIPEMBEDS",
"link": 4
},
{
"name": "start_image",
"shape": 7,
"type": "IMAGE",
"link": 2
},
{
"name": "end_image",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "control_embeds",
"shape": 7,
"type": "WANVIDIMAGE_EMBEDS",
"link": null
},
{
"name": "temporal_mask",
"shape": 7,
"type": "MASK",
"link": null
},
{
"name": "extra_latents",
"shape": 7,
"type": "LATENT",
"link": null
},
{
"name": "add_cond_latents",
"shape": 7,
"type": "ADD_COND_LATENTS",
"link": null
},
{
"name": "empty_frame_pad_image",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "image_embeds",
"type": "WANVIDIMAGE_EMBEDS",
"slot_index": 0,
"links": [
6
]
}
],
"properties": {
"cnr_id": "ComfyUI-WanVideoWrapper",
"ver": "1.4.7",
"Node name for S&R": "WanVideoImageToVideoEncode",
"ue_properties": {
"widget_ue_connectable": {
"width": true,
"height": true
},
"version": "7.8",
"input_ue_unconnectable": {}
}
},
"widgets_values": [
544,
960,
81,
0.03,
1,
1,
true,
false,
false,
0
]
}
],
"links": [
[
1,
1,
0,
3,
1,
"IMAGE"
],
[
2,
1,
0,
5,
2,
"IMAGE"
],
[
3,
2,
0,
3,
0,
"CLIP_VISION"
],
[
4,
3,
0,
5,
1,
"WANVIDIMAGE_CLIPEMBEDS"
],
[
5,
4,
0,
5,
0,
"WANVAE"
],
[
6,
5,
0,
9,
1,
"WANVIDIMAGE_EMBEDS"
],
[
7,
6,
0,
7,
0,
"WANTEXTENCODER"
],
[
8,
8,
0,
7,
1,
"WANVIDEOMODEL"
],
[
9,
7,
0,
9,
2,
"WANVIDEOTEXTEMBEDS"
],
[
10,
8,
0,
9,
0,
"WANVIDEOMODEL"
],
[
11,
9,
0,
10,
1,
"LATENT"
],
[
12,
4,
0,
10,
0,
"WANVAE"
],
[
13,
10,
0,
11,
0,
"IMAGE"
]
],
"groups": [
{
"id": 1,
"title": "WanVideoWrapper 1.4.7 official-style I2V 14B 480P - B70",
"bounding": [
-700,
-820,
3400,
1500
],
"color": "#3f789e",
"flags": {}
}
],
"config": {},
"extra": {
"ds": {
"scale": 0.4346449261414088,
"offset": [
921.7220794775614,
1381.3554938155744
]
},
"frontendVersion": "1.43.18",
"node_versions": {
"ComfyUI-WanVideoWrapper": "1.4.7",
"comfy-core": "0.3.26",
"ComfyUI-VideoHelperSuite": "0a75c7958fe320efcb052f1d9f8451fd20c730a8"
},
"note": "Built from Kijai official wanvideo_2_1_14B_I2V_example_03 structure. Important: CLIPVisionLoader connects directly to WanVideoClipVisionEncode. Do NOT insert CLIP Vision Encode.",
"ue_links": [],
"links_added_by_ue": [],
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}


