diff --git a/example_workflows/wanvideo_480p_I2V_endframe_example_01.json b/example_workflows/wanvideo_480p_I2V_endframe_example_01.json index da15113..d2fdaa0 100644 --- a/example_workflows/wanvideo_480p_I2V_endframe_example_01.json +++ b/example_workflows/wanvideo_480p_I2V_endframe_example_01.json @@ -1,15 +1,15 @@ { "id": "7c6603fc-8871-4e88-a3dd-ac43e7650d8e", "revision": 0, - "last_node_id": 102, - "last_link_id": 168, + "last_node_id": 103, + "last_link_id": 174, "nodes": [ { "id": 46, "type": "WanVideoTextEmbedBridge", "pos": [ - 578.7194213867188, - 608.81591796875 + 485.5692138671875, + 655.3907470703125 ], "size": [ 315, @@ -38,6 +38,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoTextEmbedBridge" }, "widgets_values": [] @@ -46,8 +48,8 @@ "id": 50, "type": "CLIPTextEncode", "pos": [ - 128.72010803222656, - 868.81640625 + 35.57008361816406, + 915.3912353515625 ], "size": [ 400, @@ -74,6 +76,8 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ @@ -84,8 +88,8 @@ "id": 48, "type": "CLIPLoader", "pos": [ - -231.27989196777344, - 618.8159790039062 + -324.42987060546875, + 665.3908081054688 ], "size": [ 315, @@ -107,6 +111,8 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "CLIPLoader" }, "widgets_values": [ @@ -119,8 +125,8 @@ "id": 49, "type": "CLIPTextEncode", "pos": [ - 128.72010803222656, - 618.8159790039062 + 35.57008361816406, + 665.3908081054688 ], "size": [ 400, @@ -147,6 +153,8 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ @@ -199,6 +207,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoVRAMManagement" }, "widgets_values": [ @@ -257,8 +267,8 @@ "id": 51, "type": "Note", "pos": [ - -201.2799530029297, - 448.8155212402344 + -294.4300231933594, + 495.39044189453125 ], "size": [ 253.16725158691406, @@ -302,6 +312,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "LoadWanVideoT5TextEncoder" }, "widgets_values": [ @@ -382,41 +394,6 @@ "color": "#432", "bgcolor": "#653" }, - { - "id": 39, - "type": "WanVideoBlockSwap", - "pos": [ - -210, - -760 - ], - "size": [ - 315, - 130 - ], - "flags": {}, - "order": 10, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "block_swap_args", - "type": "BLOCKSWAPARGS", - "slot_index": 0, - "links": [] - } - ], - "properties": { - "Node name for S&R": "WanVideoBlockSwap" - }, - "widgets_values": [ - 20, - false, - false, - true - ], - "color": "#223", - "bgcolor": "#335" - }, { "id": 35, "type": "WanVideoTorchCompileSettings", @@ -429,7 +406,7 @@ 178 ], "flags": {}, - "order": 11, + "order": 10, "mode": 0, "inputs": [], "outputs": [ @@ -441,6 +418,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoTorchCompileSettings" }, "widgets_values": [ @@ -466,7 +445,7 @@ 261.5306701660156 ], "flags": {}, - "order": 28, + "order": 33, "mode": 0, "inputs": [ { @@ -492,6 +471,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoTextEncode" }, "widgets_values": [ @@ -514,7 +495,7 @@ 498.3180847167969 ], "flags": {}, - "order": 12, + "order": 11, "mode": 0, "inputs": [], "outputs": [ @@ -533,6 +514,8 @@ ], "title": "Load Image: Start image", "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "LoadImage" }, "widgets_values": [ @@ -555,7 +538,7 @@ 648.9437866210938 ], "flags": {}, - "order": 13, + "order": 12, "mode": 0, "inputs": [], "outputs": [ @@ -574,6 +557,8 @@ ], "title": "Load Image: End image", "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "LoadImage" }, "widgets_values": [ @@ -596,7 +581,7 @@ 88 ], "flags": {}, - "order": 14, + "order": 13, "mode": 0, "inputs": [], "outputs": [], @@ -619,7 +604,7 @@ 58 ], "flags": {}, - "order": 15, + "order": 14, "mode": 2, "inputs": [], "outputs": [ @@ -630,6 +615,8 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "CLIPVisionLoader" }, "widgets_values": [ @@ -650,7 +637,7 @@ 106 ], "flags": {}, - "order": 16, + "order": 15, "mode": 0, "inputs": [], "outputs": [ @@ -664,6 +651,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "LoadWanVideoClipTextEncoder" }, "widgets_values": [ @@ -674,119 +663,6 @@ "color": "#2a363b", "bgcolor": "#3f5159" }, - { - "id": 38, - "type": "WanVideoVAELoader", - "pos": [ - 165.65065002441406, - -324.7489318847656 - ], - "size": [ - 372.7727966308594, - 82 - ], - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "vae", - "type": "WANVAE", - "slot_index": 0, - "links": [ - 130, - 165 - ] - } - ], - "properties": { - "Node name for S&R": "WanVideoVAELoader" - }, - "widgets_values": [ - "wanvideo\\Wan2_1_VAE_bf16.safetensors", - "bf16" - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 89, - "type": "WanVideoImageToVideoEncode", - "pos": [ - 176.49185180664062, - -125.9861068725586 - ], - "size": [ - 352.79998779296875, - 262 - ], - "flags": {}, - "order": 35, - "mode": 0, - "inputs": [ - { - "name": "start_image", - "type": "IMAGE", - "link": 142 - }, - { - "name": "vae", - "type": "WANVAE", - "link": 130 - }, - { - "name": "clip_embeds", - "type": "WANVIDIMAGE_CLIPEMBEDS", - "link": 132 - }, - { - "name": "end_image", - "shape": 7, - "type": "IMAGE", - "link": 144 - }, - { - "name": "width", - "type": "INT", - "widget": { - "name": "width" - }, - "link": 135 - }, - { - "name": "height", - "type": "INT", - "widget": { - "name": "height" - }, - "link": 136 - } - ], - "outputs": [ - { - "name": "image_embeds", - "type": "WANVIDIMAGE_EMBEDS", - "links": [ - 133 - ] - } - ], - "properties": { - "Node name for S&R": "WanVideoImageToVideoEncode" - }, - "widgets_values": [ - 832, - 480, - 77, - 0, - 1, - true, - true - ], - "color": "#322", - "bgcolor": "#533" - }, { "id": 77, "type": "ImageResize+", @@ -844,6 +720,8 @@ } ], "properties": { + "aux_id": "kijai/ComfyUI_essentials", + "ver": "76e9d1e4399bd025ce8b12c290753d58f9f53e93", "Node name for S&R": "ImageResize+" }, "widgets_values": [ @@ -869,7 +747,7 @@ "flags": { "collapsed": true }, - "order": 33, + "order": 34, "mode": 0, "inputs": [ { @@ -884,7 +762,9 @@ "type": "IMAGE", "links": [ 141, - 142 + 142, + 169, + 171 ] } ], @@ -945,6 +825,8 @@ } ], "properties": { + "aux_id": "kijai/ComfyUI_essentials", + "ver": "76e9d1e4399bd025ce8b12c290753d58f9f53e93", "Node name for S&R": "ImageResize+" }, "widgets_values": [ @@ -1012,7 +894,7 @@ "flags": { "collapsed": true }, - "order": 18, + "order": 16, "mode": 0, "inputs": [], "outputs": [ @@ -1046,7 +928,7 @@ "flags": { "collapsed": true }, - "order": 19, + "order": 17, "mode": 0, "inputs": [], "outputs": [ @@ -1080,7 +962,7 @@ "flags": { "collapsed": true }, - "order": 39, + "order": 40, "mode": 0, "inputs": [ { @@ -1102,6 +984,8 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "EmptyImage" }, "widgets_values": [ @@ -1111,39 +995,6 @@ 0 ] }, - { - "id": 72, - "type": "WanVideoSLG", - "pos": [ - 898.9722290039062, - 194.19329833984375 - ], - "size": [ - 315, - 106 - ], - "flags": {}, - "order": 20, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "slg_args", - "type": "SLGARGS", - "links": [ - 137 - ] - } - ], - "properties": { - "Node name for S&R": "WanVideoSLG" - }, - "widgets_values": [ - "9", - 0.20000000000000004, - 0.8000000000000002 - ] - }, { "id": 95, "type": "AddLabel", @@ -1186,6 +1037,8 @@ } ], "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "52c2e31a903fec2dd654fb614ea82ba2757d5028", "Node name for S&R": "AddLabel" }, "widgets_values": [ @@ -1243,6 +1096,8 @@ } ], "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "52c2e31a903fec2dd654fb614ea82ba2757d5028", "Node name for S&R": "AddLabel" }, "widgets_values": [ @@ -1258,41 +1113,6 @@ "" ] }, - { - "id": 52, - "type": "WanVideoTeaCache", - "pos": [ - 909.3057861328125, - -17.456310272216797 - ], - "size": [ - 315, - 154 - ], - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "teacache_args", - "type": "TEACACHEARGS", - "links": [ - 106 - ] - } - ], - "properties": { - "Node name for S&R": "WanVideoTeaCache" - }, - "widgets_values": [ - 0.22000000000000006, - 1, - -1, - "offload_device", - "true" - ] - }, { "id": 71, "type": "ImageConcatMulti", @@ -1305,7 +1125,7 @@ 170 ], "flags": {}, - "order": 40, + "order": 41, "mode": 0, "inputs": [ { @@ -1333,7 +1153,10 @@ ] } ], - "properties": {}, + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "52c2e31a903fec2dd654fb614ea82ba2757d5028" + }, "widgets_values": [ 3, "left", @@ -1376,7 +1199,10 @@ ] } ], - "properties": {}, + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "52c2e31a903fec2dd654fb614ea82ba2757d5028" + }, "widgets_values": [ 2, "down", @@ -1396,7 +1222,7 @@ 86 ], "flags": {}, - "order": 38, + "order": 39, "mode": 0, "inputs": [ { @@ -1435,10 +1261,330 @@ } ], "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "52c2e31a903fec2dd654fb614ea82ba2757d5028", "Node name for S&R": "GetImageSizeAndCount" }, "widgets_values": [] }, + { + "id": 101, + "type": "WanVideoDecode", + "pos": [ + 1688.0194091796875, + -647.6461791992188 + ], + "size": [ + 315, + 198 + ], + "flags": {}, + "order": 38, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "WANVAE", + "link": 165 + }, + { + "name": "samples", + "type": "LATENT", + "link": 166 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 167 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoDecode" + }, + "widgets_values": [ + false, + 272, + 272, + 144, + 128 + ] + }, + { + "id": 30, + "type": "VHS_VideoCombine", + "pos": [ + 2060.4794921875, + -627.8284301757812 + ], + "size": [ + 605.903076171875, + 1030.7330322265625 + ], + "flags": {}, + "order": 42, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 90 + }, + { + "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", + "links": null + } + ], + "properties": { + "cnr_id": "comfyui-videohelpersuite", + "ver": "0a75c7958fe320efcb052f1d9f8451fd20c730a8", + "Node name for S&R": "VHS_VideoCombine" + }, + "widgets_values": { + "frame_rate": 16, + "loop_count": 0, + "filename_prefix": "WanVideoWrapper_I2V_endframe", + "format": "video/h264-mp4", + "pix_fmt": "yuv420p", + "crf": 19, + "save_metadata": true, + "trim_to_audio": false, + "pingpong": false, + "save_output": false, + "videopreview": { + "hidden": false, + "paused": false, + "params": { + "filename": "WanVideoWrapper_I2V_endframe_00009.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 16, + "workflow": "WanVideoWrapper_I2V_endframe_00009.png", + "fullpath": "N:\\AI\\ComfyUI\\temp\\WanVideoWrapper_I2V_endframe_00009.mp4" + } + } + } + }, + { + "id": 22, + "type": "WanVideoModelLoader", + "pos": [ + 150, + -780 + ], + "size": [ + 477.4410095214844, + 226.43276977539062 + ], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + { + "name": "compile_args", + "shape": 7, + "type": "WANCOMPILEARGS", + "link": null + }, + { + "name": "block_swap_args", + "shape": 7, + "type": "BLOCKSWAPARGS", + "link": 174 + }, + { + "name": "lora", + "shape": 7, + "type": "WANVIDLORA", + "link": null + }, + { + "name": "vram_management_args", + "shape": 7, + "type": "VRAM_MANAGEMENTARGS", + "link": null + } + ], + "outputs": [ + { + "name": "model", + "type": "WANVIDEOMODEL", + "slot_index": 0, + "links": [ + 29, + 103 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoModelLoader" + }, + "widgets_values": [ + "WanVideo\\Wan2_1-I2V-14B-480P_fp8_e4m3fn.safetensors", + "fp16", + "fp8_e4m3fn", + "offload_device", + "sdpa" + ], + "color": "#223", + "bgcolor": "#335" + }, + { + "id": 38, + "type": "WanVideoVAELoader", + "pos": [ + 165.65065002441406, + -324.7489318847656 + ], + "size": [ + 372.7727966308594, + 82 + ], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "vae", + "type": "WANVAE", + "slot_index": 0, + "links": [ + 165, + 170 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoVAELoader" + }, + "widgets_values": [ + "wanvideo\\Wan2_1_VAE_bf16.safetensors", + "bf16" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 89, + "type": "WanVideoImageToVideoEncode", + "pos": [ + 176.49185180664062, + -125.9861068725586 + ], + "size": [ + 352.79998779296875, + 338 + ], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + { + "name": "vae", + "shape": 7, + "type": "WANVAE", + "link": 170 + }, + { + "name": "clip_embeds", + "shape": 7, + "type": "WANVIDIMAGE_CLIPEMBEDS", + "link": 172 + }, + { + "name": "start_image", + "shape": 7, + "type": "IMAGE", + "link": 171 + }, + { + "name": "end_image", + "shape": 7, + "type": "IMAGE", + "link": 144 + }, + { + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 135 + }, + { + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 136 + }, + { + "name": "control_embeds", + "shape": 7, + "type": "WANVIDIMAGE_EMBEDS", + "link": null + } + ], + "outputs": [ + { + "name": "image_embeds", + "type": "WANVIDIMAGE_EMBEDS", + "links": [ + 133 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoImageToVideoEncode" + }, + "widgets_values": [ + 832, + 480, + 77, + 0, + 1, + true, + true, + false + ], + "color": "#322", + "bgcolor": "#533" + }, { "id": 88, "type": "WanVideoClipVisionEncode", @@ -1448,10 +1594,10 @@ ], "size": [ 327.5999755859375, - 194 + 262 ], "flags": {}, - "order": 34, + "order": 35, "mode": 0, "inputs": [ { @@ -1469,6 +1615,12 @@ "shape": 7, "type": "IMAGE", "link": null + }, + { + "name": "negative_image", + "shape": 7, + "type": "IMAGE", + "link": null } ], "outputs": [ @@ -1476,11 +1628,13 @@ "name": "image_embeds", "type": "WANVIDIMAGE_CLIPEMBEDS", "links": [ - 132 + 172 ] } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoClipVisionEncode" }, "widgets_values": [ @@ -1488,11 +1642,86 @@ 1, "center", "average", - true + true, + 0, + 0.5 ], "color": "#233", "bgcolor": "#355" }, + { + "id": 52, + "type": "WanVideoTeaCache", + "pos": [ + 898.4050903320312, + -54.12175369262695 + ], + "size": [ + 315, + 178 + ], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "teacache_args", + "type": "TEACACHEARGS", + "links": [ + 106 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoTeaCache" + }, + "widgets_values": [ + 0.22000000000000006, + 1, + -1, + "offload_device", + "true", + "e" + ] + }, + { + "id": 72, + "type": "WanVideoSLG", + "pos": [ + 909.8729248046875, + 168.4285125732422 + ], + "size": [ + 315, + 106 + ], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "slg_args", + "type": "SLGARGS", + "links": [ + 137 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoSLG" + }, + "widgets_values": [ + "9", + 0.20000000000000004, + 0.8000000000000002 + ] + }, { "id": 27, "type": "WanVideoSampler", @@ -1502,10 +1731,10 @@ ], "size": [ 315, - 1003.3333129882812 + 1023.3333129882812 ], "flags": {}, - "order": 36, + "order": 37, "mode": 0, "inputs": [ { @@ -1564,6 +1793,12 @@ "shape": 7, "type": "LOOPARGS", "link": null + }, + { + "name": "experimental_args", + "shape": 7, + "type": "EXPERIMENTALARGS", + "link": 173 } ], "outputs": [ @@ -1577,6 +1812,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoSampler" }, "widgets_values": [ @@ -1595,186 +1832,76 @@ ] }, { - "id": 101, - "type": "WanVideoDecode", + "id": 103, + "type": "WanVideoExperimentalArgs", "pos": [ - 1688.0194091796875, - -647.6461791992188 + 889.739013671875, + 324.5948486328125 ], "size": [ - 315, - 198 + 327.5999755859375, + 130 ], "flags": {}, - "order": 37, + "order": 21, "mode": 0, - "inputs": [ - { - "name": "vae", - "type": "WANVAE", - "link": 165 - }, - { - "name": "samples", - "type": "LATENT", - "link": 166 - } - ], + "inputs": [], "outputs": [ { - "name": "images", - "type": "IMAGE", + "name": "exp_args", + "type": "EXPERIMENTALARGS", "links": [ - 167 + 173 ] } ], "properties": { - "Node name for S&R": "WanVideoDecode" + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoExperimentalArgs" }, "widgets_values": [ + "", + true, false, - 272, - 272, - 144, - 128 + 0 ] }, { - "id": 30, - "type": "VHS_VideoCombine", + "id": 39, + "type": "WanVideoBlockSwap", "pos": [ - 2060.4794921875, - -627.8284301757812 + -210, + -760 ], "size": [ - 605.903076171875, - 1030.7330322265625 - ], - "flags": {}, - "order": 41, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 90 - }, - { - "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", - "links": null - } - ], - "properties": { - "Node name for S&R": "VHS_VideoCombine" - }, - "widgets_values": { - "frame_rate": 16, - "loop_count": 0, - "filename_prefix": "WanVideoWrapper_I2V_endframe", - "format": "video/h264-mp4", - "pix_fmt": "yuv420p", - "crf": 19, - "save_metadata": true, - "trim_to_audio": false, - "pingpong": false, - "save_output": false, - "videopreview": { - "hidden": false, - "paused": false, - "params": { - "filename": "WanVideoWrapper_I2V_endframe_00009.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 16, - "workflow": "WanVideoWrapper_I2V_endframe_00009.png", - "fullpath": "N:\\AI\\ComfyUI\\temp\\WanVideoWrapper_I2V_endframe_00009.mp4" - } - } - } - }, - { - "id": 22, - "type": "WanVideoModelLoader", - "pos": [ - 150, - -780 - ], - "size": [ - 477.4410095214844, - 226.43276977539062 + 315, + 130 ], "flags": {}, "order": 22, "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 - } - ], + "inputs": [], "outputs": [ { - "name": "model", - "type": "WANVIDEOMODEL", + "name": "block_swap_args", + "type": "BLOCKSWAPARGS", "slot_index": 0, "links": [ - 29, - 103 + 174 ] } ], "properties": { - "Node name for S&R": "WanVideoModelLoader" + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoBlockSwap" }, "widgets_values": [ - "WanVideo\\Wan2_1-I2V-14B-480P_fp8_e4m3fn.safetensors", - "fp16", - "fp8_e4m3fn", - "offload_device", - "sdpa" + 20, + false, + false, + true ], "color": "#223", "bgcolor": "#335" @@ -1901,22 +2028,6 @@ 0, "CLIP_VISION" ], - [ - 130, - 38, - 0, - 89, - 1, - "WANVAE" - ], - [ - 132, - 88, - 0, - 89, - 2, - "WANVIDIMAGE_CLIPEMBEDS" - ], [ 133, 89, @@ -1965,14 +2076,6 @@ 1, "IMAGE" ], - [ - 142, - 91, - 0, - 89, - 0, - "IMAGE" - ], [ 143, 76, @@ -2076,6 +2179,46 @@ 68, 0, "IMAGE" + ], + [ + 170, + 38, + 0, + 89, + 0, + "WANVAE" + ], + [ + 171, + 91, + 0, + 89, + 2, + "IMAGE" + ], + [ + 172, + 88, + 0, + 89, + 1, + "WANVIDIMAGE_CLIPEMBEDS" + ], + [ + 173, + 103, + 0, + 27, + 10, + "EXPERIMENTALARGS" + ], + [ + 174, + 39, + 0, + 22, + 1, + "BLOCKSWAPARGS" ] ], "groups": [ @@ -2083,8 +2226,8 @@ "id": 1, "title": "ComfyUI text encoding alternative", "bounding": [ - -294.0957946777344, - 304.8821105957031, + -387.2457275390625, + 351.45703125, 1210.621337890625, 805.9080810546875 ], @@ -2096,10 +2239,10 @@ "config": {}, "extra": { "ds": { - "scale": 0.6727499949326058, + "scale": 0.6727499949326061, "offset": [ - 1095.2150100984568, - 1201.7399667672603 + 575.8869196611261, + 1172.2464581591607 ] }, "node_versions": { diff --git a/example_workflows/wanvideo_480p_I2V_example_02.json b/example_workflows/wanvideo_480p_I2V_example_02.json index eaaf9e9..56c008e 100644 --- a/example_workflows/wanvideo_480p_I2V_example_02.json +++ b/example_workflows/wanvideo_480p_I2V_example_02.json @@ -2,7 +2,7 @@ "id": "206247b6-9fec-4ed2-8927-e4f388c674d4", "revision": 0, "last_node_id": 67, - "last_link_id": 80, + "last_link_id": 83, "nodes": [ { "id": 46, @@ -38,6 +38,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoTextEmbedBridge" }, "widgets_values": [] @@ -74,6 +76,8 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ @@ -107,6 +111,8 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "CLIPLoader" }, "widgets_values": [ @@ -147,6 +153,8 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "CLIPTextEncode" }, "widgets_values": [ @@ -199,6 +207,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoVRAMManagement" }, "widgets_values": [ @@ -325,6 +335,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "LoadWanVideoT5TextEncoder" }, "widgets_values": [ @@ -345,7 +357,7 @@ ], "size": [ 315, - 154 + 178 ], "flags": {}, "order": 8, @@ -361,6 +373,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoTeaCache" }, "widgets_values": [ @@ -368,7 +382,8 @@ 1, -1, "offload_device", - "true" + "true", + "e" ] }, { @@ -466,6 +481,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoBlockSwap" }, "widgets_values": [ @@ -501,6 +518,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoTorchCompileSettings" }, "widgets_values": [ @@ -544,6 +563,8 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "LoadImage" }, "widgets_values": [ @@ -554,89 +575,6 @@ "color": "#2a363b", "bgcolor": "#3f5159" }, - { - "id": 66, - "type": "ImageResizeKJ", - "pos": [ - -175.95899963378906, - 176.40057373046875 - ], - "size": [ - 315, - 266 - ], - "flags": {}, - "order": 21, - "mode": 0, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 72 - }, - { - "name": "get_image_size", - "shape": 7, - "type": "IMAGE", - "link": null - }, - { - "name": "width_input", - "shape": 7, - "type": "INT", - "widget": { - "name": "width_input" - }, - "link": null - }, - { - "name": "height_input", - "shape": 7, - "type": "INT", - "widget": { - "name": "height_input" - }, - "link": null - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 73, - 74 - ] - }, - { - "name": "width", - "type": "INT", - "links": [ - 75 - ] - }, - { - "name": "height", - "type": "INT", - "links": [ - 76 - ] - } - ], - "properties": { - "Node name for S&R": "ImageResizeKJ" - }, - "widgets_values": [ - 624, - 624, - "lanczos", - false, - 16, - 0, - 0, - "disabled" - ] - }, { "id": 63, "type": "WanVideoImageToVideoEncode", @@ -646,26 +584,27 @@ ], "size": [ 352.79998779296875, - 262 + 338 ], "flags": {}, "order": 25, "mode": 0, "inputs": [ - { - "name": "start_image", - "type": "IMAGE", - "link": 74 - }, { "name": "vae", "type": "WANVAE", - "link": 77 + "link": 81 }, { "name": "clip_embeds", "type": "WANVIDIMAGE_CLIPEMBEDS", - "link": 69 + "link": 82 + }, + { + "name": "start_image", + "shape": 7, + "type": "IMAGE", + "link": 83 }, { "name": "end_image", @@ -688,6 +627,12 @@ "name": "height" }, "link": 76 + }, + { + "name": "control_embeds", + "shape": 7, + "type": "WANVIDIMAGE_EMBEDS", + "link": null } ], "outputs": [ @@ -700,6 +645,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoImageToVideoEncode" }, "widgets_values": [ @@ -709,47 +656,12 @@ 0.030000000000000006, 1, 1, - true + true, + false ], "color": "#2a363b", "bgcolor": "#3f5159" }, - { - "id": 38, - "type": "WanVideoVAELoader", - "pos": [ - 169.25408935546875, - -322.9471740722656 - ], - "size": [ - 372.7727966308594, - 82 - ], - "flags": {}, - "order": 15, - "mode": 0, - "inputs": [], - "outputs": [ - { - "name": "vae", - "type": "WANVAE", - "slot_index": 0, - "links": [ - 43, - 77 - ] - } - ], - "properties": { - "Node name for S&R": "WanVideoVAELoader" - }, - "widgets_values": [ - "wanvideo\\Wan2_1_VAE_bf16.safetensors", - "bf16" - ], - "color": "#322", - "bgcolor": "#533" - }, { "id": 59, "type": "CLIPVisionLoader", @@ -762,7 +674,7 @@ 58 ], "flags": {}, - "order": 16, + "order": 15, "mode": 0, "inputs": [], "outputs": [ @@ -775,6 +687,8 @@ } ], "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.26", "Node name for S&R": "CLIPVisionLoader" }, "widgets_values": [ @@ -783,62 +697,6 @@ "color": "#233", "bgcolor": "#355" }, - { - "id": 65, - "type": "WanVideoClipVisionEncode", - "pos": [ - -176.9497833251953, - -167.4617462158203 - ], - "size": [ - 327.5999755859375, - 242 - ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": 70 - }, - { - "name": "image_1", - "type": "IMAGE", - "link": 73 - }, - { - "name": "image_2", - "shape": 7, - "type": "IMAGE", - "link": null - } - ], - "outputs": [ - { - "name": "image_embeds", - "type": "WANVIDIMAGE_CLIPEMBEDS", - "links": [ - 69 - ] - } - ], - "properties": { - "Node name for S&R": "WanVideoClipVisionEncode" - }, - "widgets_values": [ - 1, - 1, - "center", - "average", - true, - 0, - 0.20000000000000004 - ], - "color": "#233", - "bgcolor": "#355" - }, { "id": 16, "type": "WanVideoTextEncode", @@ -877,6 +735,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoTextEncode" }, "widgets_values": [ @@ -958,6 +818,12 @@ "shape": 7, "type": "LOOPARGS", "link": null + }, + { + "name": "experimental_args", + "shape": 7, + "type": "EXPERIMENTALARGS", + "link": null } ], "outputs": [ @@ -971,6 +837,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoSampler" }, "widgets_values": [ @@ -984,8 +852,7 @@ 0, 1, "", - "comfy", - "" + "comfy" ] }, { @@ -1000,7 +867,7 @@ 106 ], "flags": {}, - "order": 17, + "order": 16, "mode": 0, "inputs": [], "outputs": [ @@ -1013,6 +880,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoEnhanceAVideo" }, "widgets_values": [ @@ -1068,6 +937,8 @@ } ], "properties": { + "cnr_id": "comfyui-videohelpersuite", + "ver": "0a75c7958fe320efcb052f1d9f8451fd20c730a8", "Node name for S&R": "VHS_VideoCombine" }, "widgets_values": { @@ -1133,6 +1004,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoDecode" }, "widgets_values": [ @@ -1197,6 +1070,8 @@ } ], "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", "Node name for S&R": "WanVideoModelLoader" }, "widgets_values": [ @@ -1208,6 +1083,193 @@ ], "color": "#223", "bgcolor": "#335" + }, + { + "id": 38, + "type": "WanVideoVAELoader", + "pos": [ + 169.25408935546875, + -322.9471740722656 + ], + "size": [ + 372.7727966308594, + 82 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [], + "outputs": [ + { + "name": "vae", + "type": "WANVAE", + "slot_index": 0, + "links": [ + 43, + 81 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoVAELoader" + }, + "widgets_values": [ + "wanvideo\\Wan2_1_VAE_bf16.safetensors", + "bf16" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 65, + "type": "WanVideoClipVisionEncode", + "pos": [ + -176.9497833251953, + -167.4617462158203 + ], + "size": [ + 327.5999755859375, + 262 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": 70 + }, + { + "name": "image_1", + "type": "IMAGE", + "link": 73 + }, + { + "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", + "links": [ + 82 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoClipVisionEncode" + }, + "widgets_values": [ + 1, + 1, + "center", + "average", + true, + 0, + 0.20000000000000004 + ], + "color": "#233", + "bgcolor": "#355" + }, + { + "id": 66, + "type": "ImageResizeKJ", + "pos": [ + -175.95899963378906, + 176.40057373046875 + ], + "size": [ + 315, + 266 + ], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 72 + }, + { + "name": "get_image_size", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "name": "width_input", + "shape": 7, + "type": "INT", + "widget": { + "name": "width_input" + }, + "link": null + }, + { + "name": "height_input", + "shape": 7, + "type": "INT", + "widget": { + "name": "height_input" + }, + "link": null + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 73, + 83 + ] + }, + { + "name": "width", + "type": "INT", + "links": [ + 75 + ] + }, + { + "name": "height", + "type": "INT", + "links": [ + 76 + ] + } + ], + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "52c2e31a903fec2dd654fb614ea82ba2757d5028", + "Node name for S&R": "ImageResizeKJ" + }, + "widgets_values": [ + 624, + 624, + "lanczos", + false, + 16, + 0, + 0, + "disabled" + ] } ], "links": [ @@ -1315,14 +1377,6 @@ 2, "WANVIDIMAGE_EMBEDS" ], - [ - 69, - 65, - 0, - 63, - 2, - "WANVIDIMAGE_CLIPEMBEDS" - ], [ 70, 59, @@ -1347,14 +1401,6 @@ 1, "IMAGE" ], - [ - 74, - 66, - 0, - 63, - 0, - "IMAGE" - ], [ 75, 66, @@ -1371,14 +1417,6 @@ 5, "INT" ], - [ - 77, - 38, - 0, - 63, - 1, - "WANVAE" - ], [ 79, 22, @@ -1394,6 +1432,30 @@ 27, 4, "FETAARGS" + ], + [ + 81, + 38, + 0, + 63, + 0, + "WANVAE" + ], + [ + 82, + 65, + 0, + 63, + 1, + "WANVIDIMAGE_CLIPEMBEDS" + ], + [ + 83, + 66, + 0, + 63, + 2, + "IMAGE" ] ], "groups": [ @@ -1414,10 +1476,10 @@ "config": {}, "extra": { "ds": { - "scale": 0.6115909044841832, + "scale": 0.6727499949326018, "offset": [ - 1066.099511487144, - 1189.0841914350103 + 547.1803980844202, + 840.3120224296222 ] }, "node_versions": { diff --git a/example_workflows/wanvideo_Fun_control_example_01.json b/example_workflows/wanvideo_Fun_control_example_01.json index 4275b06..068ad19 100644 --- a/example_workflows/wanvideo_Fun_control_example_01.json +++ b/example_workflows/wanvideo_Fun_control_example_01.json @@ -2,7 +2,7 @@ "id": "206247b6-9fec-4ed2-8927-e4f388c674d4", "revision": 0, "last_node_id": 95, - "last_link_id": 121, + "last_link_id": 124, "nodes": [ { "id": 46, @@ -443,70 +443,6 @@ "color": "#233", "bgcolor": "#355" }, - { - "id": 65, - "type": "WanVideoClipVisionEncode", - "pos": [ - -1200.4986572265625, - -431.59814453125 - ], - "size": [ - 327.5999755859375, - 262 - ], - "flags": {}, - "order": 39, - "mode": 2, - "inputs": [ - { - "name": "clip_vision", - "type": "CLIP_VISION", - "link": 70 - }, - { - "name": "image_1", - "type": "IMAGE", - "link": 73 - }, - { - "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", - "links": [ - 69 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "d20baf00247fd06553fdc9253e18732244e54172", - "Node name for S&R": "WanVideoClipVisionEncode" - }, - "widgets_values": [ - 1, - 1, - "center", - "average", - true, - 0, - 0.20000000000000004 - ], - "color": "#233", - "bgcolor": "#355" - }, { "id": 73, "type": "DownloadAndLoadDepthAnythingV2Model", @@ -540,107 +476,6 @@ "depth_anything_v2_vitl_fp16.safetensors" ] }, - { - "id": 66, - "type": "ImageResizeKJ", - "pos": [ - -1190.589111328125, - -70.7883529663086 - ], - "size": [ - 315, - 266 - ], - "flags": {}, - "order": 36, - "mode": 2, - "inputs": [ - { - "name": "image", - "type": "IMAGE", - "link": 72 - }, - { - "name": "get_image_size", - "shape": 7, - "type": "IMAGE", - "link": null - }, - { - "name": "width_input", - "shape": 7, - "type": "INT", - "widget": { - "name": "width_input" - }, - "link": null - }, - { - "name": "height_input", - "shape": 7, - "type": "INT", - "widget": { - "name": "height_input" - }, - "link": null - }, - { - "name": "width", - "type": "INT", - "widget": { - "name": "width" - }, - "link": 97 - }, - { - "name": "height", - "type": "INT", - "widget": { - "name": "height" - }, - "link": 98 - } - ], - "outputs": [ - { - "name": "IMAGE", - "type": "IMAGE", - "links": [ - 73, - 74 - ] - }, - { - "name": "width", - "type": "INT", - "links": [ - 75 - ] - }, - { - "name": "height", - "type": "INT", - "links": [ - 76 - ] - } - ], - "properties": { - "cnr_id": "comfyui-kjnodes", - "ver": "52c2e31a903fec2dd654fb614ea82ba2757d5028", - "Node name for S&R": "ImageResizeKJ" - }, - "widgets_values": [ - 624, - 624, - "lanczos", - false, - 16, - 0, - 0, - "center" - ] - }, { "id": 69, "type": "WanVideoEmptyEmbeds", @@ -707,29 +542,6 @@ 81 ] }, - { - "id": 81, - "type": "Note", - "pos": [ - 387.06109619140625, - 44.78668975830078 - ], - "size": [ - 255.5326690673828, - 88 - ], - "flags": {}, - "order": 12, - "mode": 0, - "inputs": [], - "outputs": [], - "properties": {}, - "widgets_values": [ - "Use empty embeds when doing just text to video with control, otherwise connect the image embeds from the image encoder" - ], - "color": "#432", - "bgcolor": "#653" - }, { "id": 71, "type": "VHS_LoadVideo", @@ -742,7 +554,7 @@ 650.5508422851562 ], "flags": {}, - "order": 13, + "order": 12, "mode": 0, "inputs": [ { @@ -826,7 +638,7 @@ 149.21942138671875 ], "flags": {}, - "order": 14, + "order": 13, "mode": 0, "inputs": [], "outputs": [], @@ -909,7 +721,7 @@ "flags": { "collapsed": true }, - "order": 15, + "order": 14, "mode": 0, "inputs": [], "outputs": [ @@ -943,7 +755,7 @@ "flags": { "collapsed": true }, - "order": 16, + "order": 15, "mode": 2, "inputs": [], "outputs": [ @@ -951,7 +763,7 @@ "name": "WANVAE", "type": "WANVAE", "links": [ - 105 + 123 ] } ], @@ -972,10 +784,10 @@ ], "size": [ 315, - 154 + 178 ], "flags": {}, - "order": 17, + "order": 16, "mode": 0, "inputs": [], "outputs": [ @@ -997,7 +809,8 @@ 1, -1, "offload_device", - "true" + "true", + "e" ] }, { @@ -1012,7 +825,7 @@ 226.43276977539062 ], "flags": {}, - "order": 18, + "order": 17, "mode": 0, "inputs": [ { @@ -1078,7 +891,7 @@ 130 ], "flags": {}, - "order": 19, + "order": 18, "mode": 0, "inputs": [], "outputs": [ @@ -1117,7 +930,7 @@ 82 ], "flags": {}, - "order": 20, + "order": 19, "mode": 0, "inputs": [], "outputs": [ @@ -1356,7 +1169,7 @@ ], "size": [ 309.3501892089844, - 540.900146484375 + 637.3502197265625 ], "flags": {}, "order": 37, @@ -1413,13 +1226,13 @@ "hidden": false, "paused": false, "params": { - "filename": "control_00002.mp4", + "filename": "control_00001.mp4", "subfolder": "", "type": "temp", "format": "video/h264-mp4", "frame_rate": 16, - "workflow": "control_00002.png", - "fullpath": "N:\\AI\\ComfyUI\\temp\\control_00002.mp4" + "workflow": "control_00001.png", + "fullpath": "N:\\AI\\ComfyUI\\temp\\control_00001.mp4" } } } @@ -1438,7 +1251,7 @@ "flags": { "collapsed": true }, - "order": 21, + "order": 20, "mode": 0, "inputs": [], "outputs": [ @@ -1569,7 +1382,7 @@ "flags": { "collapsed": true }, - "order": 22, + "order": 21, "mode": 0, "inputs": [], "outputs": [ @@ -1678,7 +1491,7 @@ 130 ], "flags": {}, - "order": 23, + "order": 22, "mode": 0, "inputs": [], "outputs": [ @@ -1714,7 +1527,7 @@ 498.3180847167969 ], "flags": {}, - "order": 24, + "order": 23, "mode": 2, "inputs": [], "outputs": [ @@ -1738,134 +1551,8 @@ }, "widgets_values": [ "pasted/image (758).png", - "image" - ], - "color": "#2a363b", - "bgcolor": "#3f5159" - }, - { - "id": 80, - "type": "Reroute", - "pos": [ - 540.1338500976562, - -31.767959594726562 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 43, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 100 - } - ], - "outputs": [ - { - "name": "", - "type": "WANVIDIMAGE_EMBEDS", - "links": [] - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, - { - "id": 63, - "type": "WanVideoImageToVideoEncode", - "pos": [ - -800.4992065429688, - -261.5985107421875 - ], - "size": [ - 352.79998779296875, - 338 - ], - "flags": {}, - "order": 41, - "mode": 2, - "inputs": [ - { - "name": "start_image", - "type": "IMAGE", - "link": 74 - }, - { - "name": "vae", - "type": "WANVAE", - "link": 105 - }, - { - "name": "clip_embeds", - "type": "WANVIDIMAGE_CLIPEMBEDS", - "link": 69 - }, - { - "name": "end_image", - "shape": 7, - "type": "IMAGE", - "link": null - }, - { - "name": "width", - "type": "INT", - "widget": { - "name": "width" - }, - "link": 75 - }, - { - "name": "height", - "type": "INT", - "widget": { - "name": "height" - }, - "link": 76 - }, - { - "name": "control_embeds", - "shape": 7, - "type": "WANVIDIMAGE_EMBEDS", - "link": 93 - }, - { - "name": "num_frames", - "type": "INT", - "widget": { - "name": "num_frames" - }, - "link": 120 - } - ], - "outputs": [ - { - "name": "image_embeds", - "type": "WANVIDIMAGE_EMBEDS", - "links": [ - 100 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "d20baf00247fd06553fdc9253e18732244e54172", - "Node name for S&R": "WanVideoImageToVideoEncode" - }, - "widgets_values": [ - 832, - 480, - 81, - 0.030000000000000006, - 1, - 1, - true, - true + "image", + "" ], "color": "#2a363b", "bgcolor": "#3f5159" @@ -1934,41 +1621,6 @@ }, "widgets_values": [] }, - { - "id": 79, - "type": "Reroute", - "pos": [ - 902.3881225585938, - 175.5585174560547 - ], - "size": [ - 75, - 26 - ], - "flags": {}, - "order": 42, - "mode": 0, - "inputs": [ - { - "name": "", - "type": "*", - "link": 99 - } - ], - "outputs": [ - { - "name": "", - "type": "WANVIDIMAGE_EMBEDS", - "links": [ - 121 - ] - } - ], - "properties": { - "showOutputText": false, - "horizontal": false - } - }, { "id": 78, "type": "WanVideoControlEmbeds", @@ -2115,7 +1767,8 @@ 0, 1, "", - "comfy" + "comfy", + "" ] }, { @@ -2180,7 +1833,7 @@ 186.99449157714844 ], "flags": {}, - "order": 25, + "order": 24, "mode": 0, "inputs": [], "outputs": [], @@ -2191,6 +1844,357 @@ ], "color": "#432", "bgcolor": "#653" + }, + { + "id": 65, + "type": "WanVideoClipVisionEncode", + "pos": [ + -1200.4986572265625, + -431.59814453125 + ], + "size": [ + 327.5999755859375, + 262 + ], + "flags": {}, + "order": 39, + "mode": 2, + "inputs": [ + { + "name": "clip_vision", + "type": "CLIP_VISION", + "link": 70 + }, + { + "name": "image_1", + "type": "IMAGE", + "link": 73 + }, + { + "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", + "links": [ + 122 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d20baf00247fd06553fdc9253e18732244e54172", + "Node name for S&R": "WanVideoClipVisionEncode" + }, + "widgets_values": [ + 1, + 1, + "center", + "average", + true, + 0, + 0.20000000000000004 + ], + "color": "#233", + "bgcolor": "#355" + }, + { + "id": 63, + "type": "WanVideoImageToVideoEncode", + "pos": [ + -800.4992065429688, + -261.5985107421875 + ], + "size": [ + 352.79998779296875, + 338 + ], + "flags": {}, + "order": 41, + "mode": 2, + "inputs": [ + { + "name": "vae", + "type": "WANVAE", + "link": 123 + }, + { + "name": "clip_embeds", + "type": "WANVIDIMAGE_CLIPEMBEDS", + "link": 122 + }, + { + "name": "start_image", + "shape": 7, + "type": "IMAGE", + "link": 124 + }, + { + "name": "end_image", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 75 + }, + { + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 76 + }, + { + "name": "control_embeds", + "shape": 7, + "type": "WANVIDIMAGE_EMBEDS", + "link": 93 + }, + { + "name": "num_frames", + "type": "INT", + "widget": { + "name": "num_frames" + }, + "link": 120 + } + ], + "outputs": [ + { + "name": "image_embeds", + "type": "WANVIDIMAGE_EMBEDS", + "links": [ + 100 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d20baf00247fd06553fdc9253e18732244e54172", + "Node name for S&R": "WanVideoImageToVideoEncode" + }, + "widgets_values": [ + 832, + 480, + 81, + 0.030000000000000006, + 1, + 1, + true, + true + ], + "color": "#2a363b", + "bgcolor": "#3f5159" + }, + { + "id": 66, + "type": "ImageResizeKJ", + "pos": [ + -1190.589111328125, + -70.7883529663086 + ], + "size": [ + 315, + 266 + ], + "flags": {}, + "order": 36, + "mode": 2, + "inputs": [ + { + "name": "image", + "type": "IMAGE", + "link": 72 + }, + { + "name": "get_image_size", + "shape": 7, + "type": "IMAGE", + "link": null + }, + { + "name": "width_input", + "shape": 7, + "type": "INT", + "widget": { + "name": "width_input" + }, + "link": null + }, + { + "name": "height_input", + "shape": 7, + "type": "INT", + "widget": { + "name": "height_input" + }, + "link": null + }, + { + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 97 + }, + { + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 98 + } + ], + "outputs": [ + { + "name": "IMAGE", + "type": "IMAGE", + "links": [ + 73, + 124 + ] + }, + { + "name": "width", + "type": "INT", + "links": [ + 75 + ] + }, + { + "name": "height", + "type": "INT", + "links": [ + 76 + ] + } + ], + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "52c2e31a903fec2dd654fb614ea82ba2757d5028", + "Node name for S&R": "ImageResizeKJ" + }, + "widgets_values": [ + 624, + 624, + "lanczos", + false, + 16, + 0, + 0, + "center" + ] + }, + { + "id": 79, + "type": "Reroute", + "pos": [ + 916.9335327148438, + 39.80095291137695 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 42, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 99 + } + ], + "outputs": [ + { + "name": "", + "type": "WANVIDIMAGE_EMBEDS", + "links": [ + 121 + ] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } + }, + { + "id": 81, + "type": "Note", + "pos": [ + 562.2122802734375, + 14.483749389648438 + ], + "size": [ + 255.5326690673828, + 88 + ], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Use empty embeds when doing just text to video with control, otherwise connect the image embeds from the image encoder to the sampler" + ], + "color": "#432", + "bgcolor": "#653" + }, + { + "id": 80, + "type": "Reroute", + "pos": [ + 834.6790161132812, + -45.101322174072266 + ], + "size": [ + 75, + 26 + ], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ + { + "name": "", + "type": "*", + "link": 100 + } + ], + "outputs": [ + { + "name": "", + "type": "WANVIDIMAGE_EMBEDS", + "links": [] + } + ], + "properties": { + "showOutputText": false, + "horizontal": false + } } ], "links": [ @@ -2266,14 +2270,6 @@ 6, "TEACACHEARGS" ], - [ - 69, - 65, - 0, - 63, - 2, - "WANVIDIMAGE_CLIPEMBEDS" - ], [ 70, 59, @@ -2298,14 +2294,6 @@ 1, "IMAGE" ], - [ - 74, - 66, - 0, - 63, - 0, - "IMAGE" - ], [ 75, 66, @@ -2466,14 +2454,6 @@ 0, "WANVAE" ], - [ - 105, - 85, - 0, - 63, - 1, - "WANVAE" - ], [ 106, 86, @@ -2545,6 +2525,30 @@ 27, 2, "WANVIDIMAGE_EMBEDS" + ], + [ + 122, + 65, + 0, + 63, + 1, + "WANVIDIMAGE_CLIPEMBEDS" + ], + [ + 123, + 85, + 0, + 63, + 0, + "WANVAE" + ], + [ + 124, + 66, + 0, + 63, + 2, + "IMAGE" ] ], "groups": [ @@ -2591,10 +2595,10 @@ "config": {}, "extra": { "ds": { - "scale": 0.8264462809917354, + "scale": 1.1, "offset": [ - 324.06772332943353, - 996.9959463677691 + 177.23656305995507, + 361.5261810657517 ] }, "node_versions": { diff --git a/nodes.py b/nodes.py index 7d7a899..33c8a5e 100644 --- a/nodes.py +++ b/nodes.py @@ -1352,7 +1352,6 @@ class WanVideoImageToVideoEncode: @classmethod def INPUT_TYPES(s): return {"required": { - "start_image": ("IMAGE", {"tooltip": "Image to encode"}), "vae": ("WANVAE",), "width": ("INT", {"default": 832, "min": 64, "max": 2048, "step": 8, "tooltip": "Width of the image to encode"}), "height": ("INT", {"default": 480, "min": 64, "max": 29048, "step": 8, "tooltip": "Height of the image to encode"}), @@ -1364,6 +1363,7 @@ class WanVideoImageToVideoEncode: "force_offload": ("BOOLEAN", {"default": True}), }, "optional": { + "start_image": ("IMAGE", {"tooltip": "Image to encode"}), "end_image": ("IMAGE", {"tooltip": "end frame"}), "control_embeds": ("WANVIDIMAGE_EMBEDS", {"tooltip": "Control signal for the Fun -model"}), "fun_model": ("BOOLEAN", {"default": False, "tooltip": "Enable when using Fun model"}), @@ -1375,8 +1375,8 @@ class WanVideoImageToVideoEncode: FUNCTION = "process" CATEGORY = "WanVideoWrapper" - def process(self, vae, start_image, width, height, num_frames, clip_embeds, force_offload, noise_aug_strength, - start_latent_strength, end_latent_strength, end_image=None, control_embeds=None, fun_model=False): + def process(self, vae, width, height, num_frames, clip_embeds, force_offload, noise_aug_strength, + start_latent_strength, end_latent_strength, start_image=None, end_image=None, control_embeds=None, fun_model=False): device = mm.get_torch_device() offload_device = mm.unet_offload_device() @@ -1390,11 +1390,13 @@ class WanVideoImageToVideoEncode: lat_w = W // 8 num_frames = ((num_frames - 1) // 4) * 4 + 1 + two_ref_images = start_image is not None and end_image is not None - base_frames = num_frames + (1 if end_image is not None and not fun_model else 0) + base_frames = num_frames + (1 if two_ref_images and not fun_model else 0) mask = torch.zeros(1, base_frames, lat_h, lat_w, device=device) - mask[:, 0] = 1 # First frame - + + if start_image is not None: + mask[:, 0] = 1 # First frame if end_image is not None and not fun_model: mask[:, -1] = 1 # End frame if exists @@ -1411,10 +1413,11 @@ class WanVideoImageToVideoEncode: mask = mask.movedim(1, 2)[0]# C, T, H, W # Resize and rearrange the input image dimensions - resized_image = common_upscale(start_image.movedim(-1, 1), W, H, "lanczos", "disabled").movedim(0, 1) - resized_image = resized_image * 2 - 1 - if noise_aug_strength > 0.0: - resized_image = add_noise_to_reference_video(resized_image, ratio=noise_aug_strength) + if start_image is not None: + resized_start_image = common_upscale(start_image.movedim(-1, 1), W, H, "lanczos", "disabled").movedim(0, 1) + resized_start_image = resized_start_image * 2 - 1 + if noise_aug_strength > 0.0: + resized_start_image = add_noise_to_reference_video(resized_start_image, ratio=noise_aug_strength) if end_image is not None: resized_end_image = common_upscale(end_image.movedim(-1, 1), W, H, "lanczos", "disabled").movedim(0, 1) @@ -1425,23 +1428,31 @@ class WanVideoImageToVideoEncode: # Concatenate image with zero frames and encode vae.to(device) - if end_image is None: + if start_image is not None and end_image is None: zero_frames = torch.zeros(3, num_frames-1, H, W, device=device) - concatenated = torch.cat([resized_image.to(device), zero_frames], dim=1) + concatenated = torch.cat([resized_start_image.to(device), zero_frames], dim=1) + elif start_image is None and end_image is not None: + zero_frames = torch.zeros(3, num_frames-1, H, W, device=device) + concatenated = torch.cat([zero_frames, resized_end_image.to(device)], dim=1) + elif start_image is None and end_image is None: + concatenated = torch.zeros(3, num_frames, H, W, device=device) else: if fun_model: zero_frames = torch.zeros(3, num_frames-2, H, W, device=device) else: zero_frames = torch.zeros(3, num_frames-1, H, W, device=device) - concatenated = torch.cat([resized_image.to(device) * start_latent_strength, zero_frames, resized_end_image.to(device) * end_latent_strength ], dim=1) + concatenated = torch.cat([resized_start_image.to(device), zero_frames, resized_end_image.to(device)], dim=1) - y = vae.encode([concatenated.to(device=device, dtype=vae.dtype)], device, end_=(end_image is not None and not fun_model))[0] + y[:, :1] *= start_latent_strength + y[:, -1:] *= end_latent_strength if control_embeds is None: y = torch.cat([mask, y]) else: if end_image is None: y[:, 1:] = 0 + elif start_image is None: + y[:, -1:] = 0 else: y[:, 1:-1] = 0 # doesn't seem to work anyway though... @@ -1538,12 +1549,14 @@ class WanVideoControlEmbeds: "max_seq_len": seq_len, "target_shape": samples.shape, "num_frames": num_frames, - "control_images": samples, - "start_percent": start_percent, - "end_percent": end_percent, + "control_embeds": { + "control_images": samples, + "start_percent": start_percent, + "end_percent": end_percent + } } - return ({"control_embeds": embeds},) + return (embeds,) class WanVideoSLG: @classmethod @@ -2088,7 +2101,6 @@ class WanVideoSampler: image_cond_input = torch.cat([torch.zeros_like(image_cond), image_cond]) if control_lora: - image_cond_input = None if not control_start_percent <= current_step_percentage <= control_end_percent: control_lora_enabled = False if patcher.model.is_patched: @@ -2096,6 +2108,7 @@ class WanVideoSampler: patcher.unpatch_model(device) patcher.model.is_patched = False else: + image_cond_input = control_latents.to(device) if not patcher.model.is_patched: log.info("Loading LoRA...") patcher = apply_lora(patcher, device, device, low_mem_load=False) @@ -2109,7 +2122,7 @@ class WanVideoSampler: 'freqs': freqs, 't': timestep, 'current_step': idx, - 'y': [image_cond_input] if image_cond is not None else None, + 'y': [image_cond_input] if image_cond_input is not None else None, 'control_lora_enabled': control_lora_enabled, }