凤希AI - 生成控制器
The conductor node that tells your segmented-video loop how many times to run
- 场景分段时长
- 音频分段时长
- 分段时长列表
- 开始索引
- 循环数
- 每秒帧数
- 实际宽度
- 实际高度
- 分段数量
- 过渡帧数
- 实际半宽
- 实际半高
- 自动关机
"Controller" sounds like it touches the GPU. It doesn't. FxAIGeneratorController is a pure arithmetic node - it takes the shape of your segmented long-video job and hands the loop the numbers it needs: how many segments exist, which one to start from, how many iterations to run, and a resolution that's been snapped to something a video model can chew. It's the booking office for a generation run, not the machinery.
In this pack's workflow the idea is: your long video is a list of segment durations (from a scene manager or audio splitter), and you generate each segment in sequence, carrying the previous segment's tail forward so the picture stays coherent. Someone has to compute "start here, loop N times" - that's this node's whole job, and the README describes it as precisely that: a pure data-output controller that only computes start index and loop count.
How it works
启用场景分段 picks which duration list to believe: turn it on and it uses 场景分段时长; otherwise it falls back to 音频分段时长, and if neither is connected you get an empty list and the node returns conservative defaults.
开始索引 and 结束索引 define the window. The node clamps 开始索引 into 0..segment_count-1, then 循环数 = segment_count − start index - or, if you set 结束索引, the count of segments between them. Set 结束索引 to −1 (the default) to mean "to the end."
Resolution gets snapped in a way that trips people up: 长宽对齐基数 (alignment base, default 32) is multiplied by 采样次数 (sample count, 1 or 2) before it divides and floors 宽度/高度. So with defaults, your 960×544 becomes 960×512 - both divisible by 32. The node also passes through 帧率 and 过渡帧数, and the optional 自动关机 flag that the pack uses to shut the machine down after an overnight batch run.
Outputs
Eleven of them, and you won't use most. The ones that matter:
- 分段时长列表 - the duration list, forwarded so the rest of the graph knows what it's working with.
- 开始索引 / 循环数 - feed these to your loop (or the pack's segment loader) so it knows where to start and when to stop.
- 每秒帧数 / 实际宽度 / 实际高度 - the canonical fps and the aligned dimensions; wire 实际宽度/高度 into your sampler and image-size nodes instead of typing numbers in twice.
- 实际半宽 / 实际半高 - width//2 and height//2, the half-resolution figures the MiniMax H3 latent math in this pack wants. Ignore them unless you're on that path.
- 分段数量, 过渡帧数, 自动关机 - passthroughs.
Installing it
It's part of fxai-toolkit (凤希AI, MIT). Install once via ComfyUI Manager (search "fxai-toolkit") or:
cd ComfyUI/custom_nodes
git clone https://github.com/fxai666/fxai-toolkit
# restart ComfyUI
No models, no downloads - it's pure Python integer math. The pack auto-installs soundfile and psutil at first load. Support is through the author's QQ group and Bilibili, and the labels are Chinese.
Where people get burned
The alignment multiplication is the sneaky one. People set 采样次数 to 2 for higher-quality sampling and then wonder why their 960-wide image comes back as 896 - that's the base × sample-count multiplier doing its job. If you want exact control, set 长宽对齐基数 to 1 and the rounding goes away. Also remember this node is only as smart as the list you feed it: no list in, empty list out, and 循环数 collapses to 1.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| 启用场景分段 | BOOLEAN | false | — |
| 开始索引 | INT | 0 | — |
| 结束索引 | INT | -1 | — |
| 帧率 | INT | 24 | — |
| 宽度 | INT | 960 | — |
| 高度 | INT | 544 | — |
| 长宽对齐基数 | INT | 32 | — |
| 场景分段时长opt | LIST | — | |
| 音频分段时长opt | LIST | — | |
| 过渡帧数opt | INT | 9 | — |
| 采样次数opt | INT | 11–2 | — |
| 自动关机opt | BOOLEAN | false | — |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| 分段时长列表 | LIST | — |
| 开始索引 | INT | — |
| 循环数 | INT | — |
| 每秒帧数 | INT | — |
| 实际宽度 | INT | — |
| 实际高度 | INT | — |
| 分段数量 | INT | — |
| 过渡帧数 | INT | — |
| 实际半宽 | INT | — |
| 实际半高 | INT | — |
| 自动关机 | BOOLEAN | — |