ComfyUI 插件之 for 循环插件(使用 for 循环简化官方版 InfiniteTalk 无限时长工作流)
ComfyUI 插件之 for 循环插件(使用 for 循环简化官方版 InfiniteTalk 无限时长工作流)
适用场景
后面我们会基于各个场景介绍一些有用的 ComfyUI 插件,本节来看 for 循环插件。
for 循环插件功能适用于 将重复性的子工作流/子图/分组通过循环模式合多为一,从而进行工作流简化。
例如,在 最强开源数字人框架 InfiniteTalk 官方版与 KJ 版孰强孰弱(视频质量/显存占用/生成速度)中介绍了 ComfyUI 官方提供的工作流,如果需要做的视频大于 3s,则需要通过视频延展的方式进行操作(简称 列火车)。每一个延展的分组可以支持 3s 的视频,那么做一个 120s 的视频,则需要设计 1个基础采样 + 39 个视频延展分组。每一个延展分组都需要做以下的重复操作:
-
1. 圈选整个 Video Extend 分组 => ctrl+c => ctril+shift+v(会将连线一起复制) -
2. 修复两个连接( 人工):将上一个 Video Extend 分组中的Batch Images节点的 IMAGE 输出分别连到下一个 Video Extend 分组中的 WanInfiniteTalkToVideo 节点的 previous_frames 和Batch Images节点的 image1 上,如下:

在这样的操作下,工作流会非常庞大,且工作流的搭建会耗时耗力。如果使用 for 循环插件,则仅需要搭建 1个基础采样 + 1 个视频延展分组,将后者纳入循环节点中,循环次数设置为 39 即可。
列火车 的模式在 ComfyUI 中出现的还比较多,比如 官方版的 Wan2.2_Animate 工作流(见 视频人物替换与角色动画模型 Wan2.2_Animate),官方版的 wan2.2_s2v 工作流(见 最强开源数字人框架 InfiniteTalk 与 Wan2.2_S2V / Sonic 孰强孰弱(视频质量/显存占用/生成速度/功能的丰富性/音频时长自动匹配能力)),Stable-Video-Infinity 无限视频工作流。均可以考虑通过循环来实现。
插件安装
使用 ComfyUI-Manager 安装插件 https://github.com/yolain/ComfyUI-Easy-Use,之后重启 ComfyUI。
工作流
我们使用 for 循环简化官方版 InfiniteTalk 无限时长工作流。优化后的工作流如下:


核心原理
核心是两个循环节点:循环开始节点 For Loop Start 和循环结束节点 For Loop End。
For Loop Start 核心输入输出:
-
1. initial_value1:每一次循环过程输入到循环中的值,例如,第一次循环输入的是基础采样后的 VAE Decode后的结果;第二次循环输入的是第一个视频扩展分组中的Batch Images的输出 -
2. index:当前循环到第几次了,从0开始,0表示第一次循环,1表示第二次循环,以此类推 -
3. value1:值与 initial_value1 相同 -
4. total:循环次数,例如需要做一个 120s 的视频,则此处需要设置为 39
For Loop End 核心输入输出:
-
1. initial_value1:接收本次循环的输出值,并送入下一次循环的 initial_value1 中(即 For Loop Start的 initial_value1)。例如,将第一个视频扩展分组中的Batch Images的输出输入到该值,在第二个循环中,将该值输入给了For Loop Start的 initial_value1 -
2. value1:所有循环结束的最终结果
来看下 InfiniteTalk 循环工作流的循环原理。

-
• 第一次循环将基础采样后的 VAE Decode后的结果输入到For Loop Start的 initial_value1,之后 initial_value1 (value1 与 initial_value1等同)输入到两个地方: -
• a. 连接到视频扩展分组的起点(即 “WanInfiniteTalkToVideo” 的 previous_frames 输入)上,进行循环体操作(类似“首尾帧相连”) -
• b. 连接到 Batch Images节点的输入 image1 上,每次视频扩展分组的结果会连到Batch Images节点的输入 image2 上,该节点将整体拼接的结果输出给下一次循环的 initial_value1。通过该节点可以将每次循环的输出进行拼接,最终输出完整视频。 -
• 循环结束后,将完整的结果通过 For Loop End的 value1 输入到Create Video节点,进行最终视频的创建
夜雨聆风
