AUTOBUY購物中心

ComfyUI 教學 - 使用 Wan 2.1 Image to Video 將圖片變成影片

  • 2026-06-24 16:51:20

    近年來 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

    檔案:

    wan_2.1_vae.safetensors

    放置位置:

    ComfyUI\models\vae\

    Text Encoder

    檔案:

    umt5-xxl-enc-bf16.safetensors

    放置位置:

    ComfyUI\models\text_encoders\

    CLIP Vision 模型

    檔案:

    clip_vision_h.safetensors

    放置位置:

    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
    }

  • 2026-06-25 14:53:12

    目前 ComfyUI 已經內建 Wan 2.2 Image to Video(I2V) 工作流,不需要自行建立流程即可快速開始體驗 AI 圖生影片功能。

    匯入工作流範本

    首先在 ComfyUI 左側的 Templates 中,依序選擇 Video → Wan 2.2 14B Image to Video,即可載入官方提供的工作流。

    下載所需模型

    Wan 2.2 14B I2V 工作流主要需要以下模型:

    Diffusion Model / UNet

    檔案:
    wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors
    wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors

    放置位置:

    ComfyUI\models\diffusion_models\

    LoRA

    檔案:
    wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors
    wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors

    放置位置:

    ComfyUI\models\loras\

    VAE

    檔案:
    wan_2.1_vae.safetensors

    放置位置:

    ComfyUI\models\vae\

    Text Encoder

    檔案:
    umt5_xxl_fp8_e4m3fn_scaled.safetensors

    放置位置:

    ComfyUI\models\text_encoders\

    載入完成後,ComfyUI 會自動提示此工作流所需的模型。請依提示下載各個模型,並分別放置到對應的模型目錄中。完成後重新啟動 ComfyUI,即可開始使用 Wan 2.2 Image to Video,將靜態圖片轉換為流暢的 AI 動畫影片。

    Wan 2.2 Image to Video 大幅提升了 AI 圖生影片的品質,不僅能更穩定地保留原始圖片中的角色、場景與風格,對於鏡頭運動、人物動作以及時間連續性也有明顯改善。搭配官方提供的 ComfyUI 工作流,即使是初次接觸 AI 影片生成的使用者,也能快速完成環境建置並體驗高品質的 Image to Video 功能。未來只要善用 Prompt 描述、適當調整影片長度與解析度,便能創作出更自然、更具電影感的 AI 動畫作品。近年 I2V 技術的發展也持續朝向更高解析度、更佳角色一致性與更流暢的動態表現邁進,Wan 2.2 正是目前開源 AI 影片生成領域中相當值得體驗的模型之一。