From 6e924c49bedc84e43018717fad00fa7c31b97988 Mon Sep 17 00:00:00 2001 From: KBRASK Date: Mon, 18 Aug 2025 12:12:54 +0800 Subject: [PATCH] add VideoFramePreprocessor --- cropper.py | 31 +- example/face_swap.json | 1164 +++++++++++++++++++++------------------- 2 files changed, 635 insertions(+), 560 deletions(-) diff --git a/cropper.py b/cropper.py index afb3201..c2b34e8 100644 --- a/cropper.py +++ b/cropper.py @@ -10,13 +10,13 @@ class VideoFramePreprocessor: } } - RETURN_TYPES = ("IMAGE",) - RETURN_NAMES = ("processed_images",) + # CHANGED: Added three INT outputs for width, height, and frame_count + RETURN_TYPES = ("IMAGE", "INT", "INT", "INT") + RETURN_NAMES = ("processed_images", "width", "height", "frame_count") FUNCTION = "process_frames" - CATEGORY = "Stand-In" # Placed in a sub-category for organization + CATEGORY = "Stand-In" def process_frames(self, images: torch.Tensor): - # Input tensor shape: (batch_size/frames, height, width, channels) if images.dim() != 4: raise ValueError("Input must be a batch of images (video frames).") @@ -24,7 +24,6 @@ class VideoFramePreprocessor: print(f"Original video specs: {total_frames} frames, {original_w}x{original_h}") # 1. Trim frame count to be 4n+1 - # We find the largest number <= total_frames that satisfies the condition. new_total_frames = total_frames - ((total_frames - 1) % 4) if new_total_frames != total_frames: @@ -33,29 +32,31 @@ class VideoFramePreprocessor: else: print("Frame count already meets 4n+1 requirement. No trimming needed.") - # 2. Crop dimensions to the nearest multiple of 8 (rounding down) - new_h = (original_h // 8) * 8 - new_w = (original_w // 8) * 8 + # 2. Crop dimensions to the nearest multiple of 16 (rounding down) + new_h = (original_h // 16) * 16 + new_w = (original_w // 16) * 16 if new_h != original_h or new_w != original_w: - print(f"Cropping dimensions to a multiple of 8: {original_w}x{original_h} -> {new_w}x{new_h}") + print(f"Cropping dimensions to a multiple of 16: {original_w}x{original_h} -> {new_w}x{new_h}") - # Calculate the amount to remove from each side for a center crop h_to_remove = original_h - new_h w_to_remove = original_w - new_w h_start = h_to_remove // 2 w_start = w_to_remove // 2 - # Perform the centered crop using tensor slicing processed_images = images[:, h_start : h_start + new_h, w_start : w_start + new_w, :] else: - print("Dimensions are already multiples of 8. No cropping needed.") + print("Dimensions are already multiples of 16. No cropping needed.") processed_images = images - print(f"Final video specs: {processed_images.shape[0]} frames, {processed_images.shape[2]}x{processed_images.shape[1]}") + # Get final dimensions from the processed tensor + final_frames, final_h, final_w, _ = processed_images.shape + + print(f"Final video specs: {final_frames} frames, {final_w}x{final_h}") - return (processed_images,) + # CHANGED: Return the processed images along with the final dimensions + return (processed_images, final_w, final_h, final_frames) NODE_CLASS_MAPPINGS = { @@ -64,4 +65,4 @@ NODE_CLASS_MAPPINGS = { NODE_DISPLAY_NAME_MAPPINGS = { "VideoFramePreprocessor": "Stand-In Trimmer & Cropper", -} +} \ No newline at end of file diff --git a/example/face_swap.json b/example/face_swap.json index b4a9122..0a7f1b4 100644 --- a/example/face_swap.json +++ b/example/face_swap.json @@ -1,8 +1,8 @@ { "id": "206247b6-9fec-4ed2-8927-e4f388c674d4", "revision": 0, - "last_node_id": 151, - "last_link_id": 267, + "last_node_id": 153, + "last_link_id": 274, "nodes": [ { "id": 36, @@ -62,7 +62,7 @@ 46 ], "flags": {}, - "order": 21, + "order": 20, "mode": 0, "inputs": [ { @@ -214,7 +214,7 @@ 46 ], "flags": {}, - "order": 26, + "order": 25, "mode": 0, "inputs": [ { @@ -440,7 +440,7 @@ 57.857322692871094 ], "flags": {}, - "order": 28, + "order": 27, "mode": 0, "inputs": [ { @@ -482,7 +482,7 @@ 873.39453125 ], "flags": {}, - "order": 29, + "order": 28, "mode": 0, "inputs": [ { @@ -644,7 +644,7 @@ 355.67169189453125 ], "flags": {}, - "order": 20, + "order": 19, "mode": 0, "inputs": [ { @@ -697,7 +697,7 @@ 242 ], "flags": {}, - "order": 23, + "order": 22, "mode": 0, "inputs": [ { @@ -790,78 +790,6 @@ false ] }, - { - "id": 103, - "type": "WanVideoEmptyEmbeds", - "pos": [ - 558.069580078125, - -26.766714096069336 - ], - "size": [ - 269.0695495605469, - 126 - ], - "flags": {}, - "order": 25, - "mode": 0, - "inputs": [ - { - "name": "control_embeds", - "shape": 7, - "type": "WANVIDIMAGE_EMBEDS", - "link": null - }, - { - "name": "extra_latents", - "shape": 7, - "type": "LATENT", - "link": null - }, - { - "name": "width", - "type": "INT", - "widget": { - "name": "width" - }, - "link": 250 - }, - { - "name": "height", - "type": "INT", - "widget": { - "name": "height" - }, - "link": 251 - }, - { - "name": "num_frames", - "type": "INT", - "widget": { - "name": "num_frames" - }, - "link": 246 - } - ], - "outputs": [ - { - "name": "image_embeds", - "type": "WANVIDIMAGE_EMBEDS", - "links": [ - 171 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "06863fe2d283e89ba2386260ad2700557dda1897", - "Node name for S&R": "WanVideoEmptyEmbeds" - }, - "widgets_values": [ - 832, - 480, - 81 - ] - }, { "id": 11, "type": "LoadWanVideoT5TextEncoder", @@ -901,90 +829,6 @@ "color": "#332922", "bgcolor": "#593930" }, - { - "id": 142, - "type": "VHS_VideoInfo", - "pos": [ - -582.3883666992188, - -435.1982727050781 - ], - "size": [ - 225.59765625, - 206 - ], - "flags": {}, - "order": 19, - "mode": 0, - "inputs": [ - { - "name": "video_info", - "type": "VHS_VIDEOINFO", - "link": 249 - } - ], - "outputs": [ - { - "name": "source_fps🟨", - "type": "FLOAT", - "links": null - }, - { - "name": "source_frame_count🟨", - "type": "INT", - "links": null - }, - { - "name": "source_duration🟨", - "type": "FLOAT", - "links": null - }, - { - "name": "source_width🟨", - "type": "INT", - "links": [ - 250 - ] - }, - { - "name": "source_height🟨", - "type": "INT", - "links": [ - 251 - ] - }, - { - "name": "loaded_fps🟦", - "type": "FLOAT", - "links": null - }, - { - "name": "loaded_frame_count🟦", - "type": "INT", - "links": null - }, - { - "name": "loaded_duration🟦", - "type": "FLOAT", - "links": null - }, - { - "name": "loaded_width🟦", - "type": "INT", - "links": null - }, - { - "name": "loaded_height🟦", - "type": "INT", - "links": null - } - ], - "properties": { - "cnr_id": "comfyui-videohelpersuite", - "ver": "1.7.4", - "Node name for S&R": "VHS_VideoInfo" - }, - "widgets_values": {} - }, { "id": 126, "type": "MarkdownNote", @@ -1008,104 +852,6 @@ "color": "#432", "bgcolor": "#653" }, - { - "id": 28, - "type": "WanVideoDecode", - "pos": [ - 1446.94677734375, - -808.8124389648438 - ], - "size": [ - 315, - 198 - ], - "flags": {}, - "order": 30, - "mode": 0, - "inputs": [ - { - "name": "vae", - "type": "WANVAE", - "link": 43 - }, - { - "name": "samples", - "type": "LATENT", - "link": 33 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "slot_index": 0, - "links": [ - 256 - ] - } - ], - "properties": { - "cnr_id": "ComfyUI-WanVideoWrapper", - "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", - "Node name for S&R": "WanVideoDecode" - }, - "widgets_values": [ - false, - 272, - 272, - 144, - 128, - "default" - ], - "color": "#322", - "bgcolor": "#533" - }, - { - "id": 122, - "type": "ImageConcatMulti", - "pos": [ - 1819.03466796875, - -562.8757934570312 - ], - "size": [ - 270, - 150 - ], - "flags": {}, - "order": 32, - "mode": 0, - "inputs": [ - { - "name": "image_1", - "type": "IMAGE", - "link": 258 - }, - { - "name": "image_2", - "type": "IMAGE", - "link": 229 - } - ], - "outputs": [ - { - "name": "images", - "type": "IMAGE", - "links": [ - 217 - ] - } - ], - "properties": { - "cnr_id": "comfyui-kjnodes", - "ver": "87d0cf42db7d59992daba4d58a83655b5b359f44" - }, - "widgets_values": [ - 2, - "left", - true, - null - ] - }, { "id": 134, "type": "WanVideoEncode", @@ -1118,7 +864,7 @@ 242 ], "flags": {}, - "order": 27, + "order": 26, "mode": 0, "inputs": [ { @@ -1249,149 +995,6 @@ "color": "#432", "bgcolor": "#653" }, - { - "id": 74, - "type": "VHS_VideoCombine", - "pos": [ - 1870, - -350 - ], - "size": [ - 959.076171875, - 334 - ], - "flags": {}, - "order": 33, - "mode": 0, - "inputs": [ - { - "name": "images", - "type": "IMAGE", - "link": 217 - }, - { - "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_T2V_Stand_In", - "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_T2V_Stand_In_00008.mp4", - "subfolder": "", - "type": "temp", - "format": "video/h264-mp4", - "frame_rate": 16, - "workflow": "WanVideoWrapper_T2V_Stand_In_00008.png", - "fullpath": "/FirstIntelligence/home/bowen/ComfyUI/temp/WanVideoWrapper_T2V_Stand_In_00008.mp4" - } - } - } - }, - { - "id": 128, - "type": "ApplyFaceProcessor", - "pos": [ - -258.21417236328125, - -111.67808532714844 - ], - "size": [ - 270, - 198 - ], - "flags": {}, - "order": 17, - "mode": 0, - "inputs": [ - { - "name": "face_processor", - "type": "FACE_PROCESSOR", - "link": 230 - }, - { - "name": "image", - "type": "IMAGE", - "link": 226 - }, - { - "name": "face_only_mode", - "type": "BOOLEAN", - "widget": { - "name": "face_only_mode" - }, - "link": 263 - } - ], - "outputs": [ - { - "name": "processed_image", - "type": "IMAGE", - "links": [ - 227, - 229, - 231 - ] - }, - { - "name": "face_rgba", - "type": "IMAGE", - "links": [ - 243 - ] - } - ], - "properties": { - "aux_id": "WeChatCV/Stand-In_Preprocessor_ComfyUI", - "ver": "db0d3d966dada4c5c242f9da5287988b533120e4", - "Node name for S&R": "ApplyFaceProcessor" - }, - "widgets_values": [ - 512, - 10, - 1.5, - 0.5, - false, - true - ] - }, { "id": 146, "type": "VideoBackgroundRestorer", @@ -1404,7 +1007,7 @@ 266 ], "flags": {}, - "order": 31, + "order": 30, "mode": 0, "inputs": [ { @@ -1456,77 +1059,6 @@ true ] }, - { - "id": 138, - "type": "VideoInputPreprocessor", - "pos": [ - -274.0709533691406, - 247.68026733398438 - ], - "size": [ - 306.6597595214844, - 266 - ], - "flags": {}, - "order": 24, - "mode": 0, - "inputs": [ - { - "name": "face_processor", - "type": "FACE_PROCESSOR", - "link": 242 - }, - { - "name": "images", - "type": "IMAGE", - "link": 266 - }, - { - "name": "face_rgba", - "type": "IMAGE", - "link": 243 - }, - { - "name": "face_only_mode", - "type": "BOOLEAN", - "widget": { - "name": "face_only_mode" - }, - "link": 262 - } - ], - "outputs": [ - { - "name": "processed_images", - "type": "IMAGE", - "links": [ - 245 - ] - }, - { - "name": "denoise_strength", - "type": "FLOAT", - "links": [ - 252 - ] - } - ], - "properties": { - "aux_id": "WeChatCV/Stand-In_Preprocessor_ComfyUI", - "ver": "db0d3d966dada4c5c242f9da5287988b533120e4", - "Node name for S&R": "VideoInputPreprocessor" - }, - "widgets_values": [ - 0.5, - 0.5, - 1.5, - 10, - true, - true, - 21, - 0.15 - ] - }, { "id": 130, "type": "FaceProcessorLoader", @@ -1598,34 +1130,284 @@ ] }, { - "id": 121, - "type": "PreviewImage", + "id": 138, + "type": "VideoInputPreprocessor", "pos": [ - 57.08710479736328, - -116.29588317871094 + -274.0709533691406, + 247.68026733398438 ], "size": [ - 140, - 246 + 306.6597595214844, + 266 ], "flags": {}, - "order": 22, + "order": 23, + "mode": 0, + "inputs": [ + { + "name": "face_processor", + "type": "FACE_PROCESSOR", + "link": 242 + }, + { + "name": "images", + "type": "IMAGE", + "link": 266 + }, + { + "name": "face_rgba", + "type": "IMAGE", + "link": 243 + }, + { + "name": "face_only_mode", + "type": "BOOLEAN", + "widget": { + "name": "face_only_mode" + }, + "link": 262 + } + ], + "outputs": [ + { + "name": "processed_images", + "type": "IMAGE", + "links": [ + 245 + ] + }, + { + "name": "denoise_strength", + "type": "FLOAT", + "links": [ + 252 + ] + } + ], + "properties": { + "aux_id": "WeChatCV/Stand-In_Preprocessor_ComfyUI", + "ver": "db0d3d966dada4c5c242f9da5287988b533120e4", + "Node name for S&R": "VideoInputPreprocessor" + }, + "widgets_values": [ + 0.5, + 0.5, + 1.5, + 10, + true, + true, + 21, + 0.05 + ] + }, + { + "id": 103, + "type": "WanVideoEmptyEmbeds", + "pos": [ + 558.069580078125, + -26.766714096069336 + ], + "size": [ + 269.0695495605469, + 126 + ], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + { + "name": "control_embeds", + "shape": 7, + "type": "WANVIDIMAGE_EMBEDS", + "link": null + }, + { + "name": "extra_latents", + "shape": 7, + "type": "LATENT", + "link": null + }, + { + "name": "width", + "type": "INT", + "widget": { + "name": "width" + }, + "link": 268 + }, + { + "name": "height", + "type": "INT", + "widget": { + "name": "height" + }, + "link": 269 + }, + { + "name": "num_frames", + "type": "INT", + "widget": { + "name": "num_frames" + }, + "link": 270 + } + ], + "outputs": [ + { + "name": "image_embeds", + "type": "WANVIDIMAGE_EMBEDS", + "links": [ + 171 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "06863fe2d283e89ba2386260ad2700557dda1897", + "Node name for S&R": "WanVideoEmptyEmbeds" + }, + "widgets_values": [ + 832, + 480, + 81 + ] + }, + { + "id": 151, + "type": "VideoFramePreprocessor", + "pos": [ + -642.7044677734375, + -331.05340576171875 + ], + "size": [ + 215.98690795898438, + 86 + ], + "flags": {}, + "order": 18, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 227 + "link": 265 + } + ], + "outputs": [ + { + "name": "processed_images", + "type": "IMAGE", + "links": [ + 266, + 267 + ] + }, + { + "name": "width", + "type": "INT", + "links": [ + 268 + ] + }, + { + "name": "height", + "type": "INT", + "links": [ + 269 + ] + }, + { + "name": "frame_count", + "type": "INT", + "links": [ + 270 + ] } ], - "outputs": [], "properties": { - "cnr_id": "comfy-core", - "ver": "0.3.49", - "Node name for S&R": "PreviewImage" + "aux_id": "WeChatCV/Stand-In_Preprocessor_ComfyUI", + "ver": "172ca8a19b39b110d76b3f8d9bbe8e16417c9f2d", + "Node name for S&R": "VideoFramePreprocessor" }, "widgets_values": [] }, + { + "id": 74, + "type": "VHS_VideoCombine", + "pos": [ + 1849.0545654296875, + -332.7520446777344 + ], + "size": [ + 959.076171875, + 691.564453125 + ], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 217 + }, + { + "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_T2V_Stand_In", + "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_T2V_Stand_In_00003.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 16, + "workflow": "WanVideoWrapper_T2V_Stand_In_00003.png", + "fullpath": "/FirstIntelligence/home/bowen/ComfyUI/temp/WanVideoWrapper_T2V_Stand_In_00003.mp4" + } + } + } + }, { "id": 131, "type": "VHS_LoadVideo", @@ -1665,9 +1447,7 @@ { "name": "frame_count", "type": "INT", - "links": [ - 246 - ] + "links": [] }, { "name": "audio", @@ -1677,9 +1457,7 @@ { "name": "video_info", "type": "VHS_VIDEOINFO", - "links": [ - 249 - ] + "links": [] } ], "properties": { @@ -1715,42 +1493,322 @@ } }, { - "id": 151, - "type": "VideoFramePreprocessor", + "id": 121, + "type": "PreviewImage", "pos": [ - -995.4586791992188, - -315.4657287597656 + 56.162540435791016, + -99.65350341796875 ], "size": [ - 215.98690795898438, - 26 + 140, + 246 ], "flags": {}, - "order": 18, + "order": 21, "mode": 0, "inputs": [ { "name": "images", "type": "IMAGE", - "link": 265 + "link": 227 + } + ], + "outputs": [], + "properties": { + "cnr_id": "comfy-core", + "ver": "0.3.49", + "Node name for S&R": "PreviewImage" + }, + "widgets_values": [] + }, + { + "id": 122, + "type": "ImageConcatMulti", + "pos": [ + 1819.03466796875, + -562.8757934570312 + ], + "size": [ + 270, + 150 + ], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + { + "name": "image_1", + "type": "IMAGE", + "link": 258 + }, + { + "name": "image_2", + "type": "IMAGE", + "link": 229 } ], "outputs": [ { - "name": "processed_images", + "name": "images", "type": "IMAGE", "links": [ - 266, - 267 + 217 + ] + } + ], + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "87d0cf42db7d59992daba4d58a83655b5b359f44" + }, + "widgets_values": [ + 2, + "left", + true, + null + ] + }, + { + "id": 128, + "type": "ApplyFaceProcessor", + "pos": [ + -258.21417236328125, + -111.67808532714844 + ], + "size": [ + 270, + 198 + ], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [ + { + "name": "face_processor", + "type": "FACE_PROCESSOR", + "link": 230 + }, + { + "name": "image", + "type": "IMAGE", + "link": 226 + }, + { + "name": "face_only_mode", + "type": "BOOLEAN", + "widget": { + "name": "face_only_mode" + }, + "link": 263 + } + ], + "outputs": [ + { + "name": "processed_image", + "type": "IMAGE", + "links": [ + 227, + 229, + 231, + 272 + ] + }, + { + "name": "face_rgba", + "type": "IMAGE", + "links": [ + 243 ] } ], "properties": { "aux_id": "WeChatCV/Stand-In_Preprocessor_ComfyUI", - "ver": "172ca8a19b39b110d76b3f8d9bbe8e16417c9f2d", - "Node name for S&R": "VideoFramePreprocessor" + "ver": "db0d3d966dada4c5c242f9da5287988b533120e4", + "Node name for S&R": "ApplyFaceProcessor" }, - "widgets_values": [] + "widgets_values": [ + 512, + 10, + 1.5, + 0.5, + false, + true + ] + }, + { + "id": 28, + "type": "WanVideoDecode", + "pos": [ + 1446.94677734375, + -808.8124389648438 + ], + "size": [ + 315, + 198 + ], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + { + "name": "vae", + "type": "WANVAE", + "link": 43 + }, + { + "name": "samples", + "type": "LATENT", + "link": 33 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "slot_index": 0, + "links": [ + 256, + 273 + ] + } + ], + "properties": { + "cnr_id": "ComfyUI-WanVideoWrapper", + "ver": "d9b1f4d1a5aea91d101ae97a54714a5861af3f50", + "Node name for S&R": "WanVideoDecode" + }, + "widgets_values": [ + false, + 272, + 272, + 144, + 128, + "default" + ], + "color": "#322", + "bgcolor": "#533" + }, + { + "id": 153, + "type": "ImageConcatMulti", + "pos": [ + 1810.8646240234375, + -837.411376953125 + ], + "size": [ + 270, + 150 + ], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + { + "name": "image_1", + "type": "IMAGE", + "link": 273 + }, + { + "name": "image_2", + "type": "IMAGE", + "link": 272 + } + ], + "outputs": [ + { + "name": "images", + "type": "IMAGE", + "links": [ + 274 + ] + } + ], + "properties": { + "cnr_id": "comfyui-kjnodes", + "ver": "87d0cf42db7d59992daba4d58a83655b5b359f44" + }, + "widgets_values": [ + 2, + "left", + true, + null + ] + }, + { + "id": 152, + "type": "VHS_VideoCombine", + "pos": [ + 2817.83935546875, + -327.92816162109375 + ], + "size": [ + 959.076171875, + 691.564453125 + ], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + { + "name": "images", + "type": "IMAGE", + "link": 274 + }, + { + "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_T2V_Stand_In", + "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_T2V_Stand_In_00004.mp4", + "subfolder": "", + "type": "temp", + "format": "video/h264-mp4", + "frame_rate": 16, + "workflow": "WanVideoWrapper_T2V_Stand_In_00004.png", + "fullpath": "/FirstIntelligence/home/bowen/ComfyUI/temp/WanVideoWrapper_T2V_Stand_In_00004.mp4" + } + } + } } ], "links": [ @@ -1970,38 +2028,6 @@ 1, "IMAGE" ], - [ - 246, - 131, - 1, - 103, - 4, - "INT" - ], - [ - 249, - 131, - 3, - 142, - 0, - "VHS_VIDEOINFO" - ], - [ - 250, - 142, - 3, - 103, - 2, - "INT" - ], - [ - 251, - 142, - 4, - 103, - 3, - "INT" - ], [ 252, 138, @@ -2081,16 +2107,64 @@ 146, 2, "IMAGE" + ], + [ + 268, + 151, + 1, + 103, + 2, + "INT" + ], + [ + 269, + 151, + 2, + 103, + 3, + "INT" + ], + [ + 270, + 151, + 3, + 103, + 4, + "INT" + ], + [ + 272, + 128, + 0, + 153, + 1, + "IMAGE" + ], + [ + 273, + 28, + 0, + 153, + 0, + "IMAGE" + ], + [ + 274, + 153, + 0, + 152, + 0, + "IMAGE" ] ], "groups": [], "config": {}, "extra": { "ds": { - "scale": 0.6727499949325989, + "scale": 0.3452271214393305, "offset": [ - 798.9888409617952, - 485.8244985963852 + 1607.2461605242625, + 1128.5361284229455 ] }, "frontendVersion": "1.24.4",