StreamingT2VRunT2V
The all-in-one node that turns a prompt into a minutes-long mp4
- StreamingT2VModel
- video_path
This is the "give me the whole thing" node. Instead of the three-stage dance (seed a short clip, extend it, enhance it) you feed StreamingT2VRunT2V a prompt and it internally does all three: generates a 16-frame seed with Modelscope's text-to-video model, extends it autoregressively with StreamingT2V until it's num_frames long, upscales the result to 1280x720 with a video-to-video pass, and hands you the path to a finished mp4. No wiring three loaders, no intermediate saves.
How it works
The StreamingT2VModel input is the catch: it's a bundle produced by the all-in-one loader StreamingT2VLoaderModelscopeT2V, which loads everything - the StreamingT2V autoregressive model, the Modelscope T2V backend, and the video-to-video enhancer - into one tuple. That's why the README flags this path as "MORE VRAM": you're holding the whole stack at once.
The run itself is a real pipeline:
- Short step - Modelscope T2V generates the 16-frame 256x256 seed from your prompt.
- Long step - StreamingT2V extends it autoregressively, 8 frames per generation, for
(num_frames - 8) // 8rounds. Each round conditions on the previous frames to keep motion coherent - this is the part that gets you past the 2-second wall every base model hits. - Enhancement - a Modelscope
damo/Video-to-Videopass upscales toupscale_widthxupscale_height(1280x720 by default, withupscale_padcontrolling whether it letterboxes). Ifnum_framesis over 80 it processes the long clip in randomized chunks usingchunk(56) andoverlap(32).
Then it writes the mp4 to ComfyUI's output folder - named after your prompt and a timestamp - and returns the path as video_path.
The inputs you'll actually touch
- prompt / negative_prompt - the usual. The default negative prompt is a solid block of quality tags; leave it alone unless you know better.
- num_frames (24 default) - total length. Each bump of 8 adds one autoregressive generation, so this is also your runtime dial. Bigger = much slower.
- num_steps (50) - diffusion steps for the extension.
- image_guidance (9.0) - guidance scale during the long step. Lower it if the video drifts from your prompt, raise it if it feels stiff.
- seed - reproducibility.
- upscale_width / upscale_height / upscale_pad - final resolution. The 1280x720 default is already a big lift for the enhancer; don't push it without a beefy card.
The chunk and overlap knobs only kick in for clips longer than 80 frames - leave them at their defaults unless you're chasing artifacts in very long videos.
Installing the pack
chaojie/ComfyUI_StreamingT2V via ComfyUI Manager (search StreamingT2V) or:
cd ComfyUI/custom_nodes
git clone https://github.com/chaojie/ComfyUI_StreamingT2V
Then pip install -r requirements.txt - a genuinely heavy list (diffusers, modelscope, xformers, fairscale, open-clip-torch, decord, av, imageio[ffmpeg], and more). Model-wise: the loader expects the original streaming_t2v.ckpt (25.6GB, from PAIR/StreamingT2V on HuggingFace) in ComfyUI/models/checkpoints; Modelscope T2V and the video-to-video enhancer download automatically on first run.
Where people get burned
- VRAM. This node assumes the original 25.6GB streaming checkpoint plus a T2V backend plus an enhancer, all resident. The original research code targeted an A100-class card; this pack's README says the original path wants under 15GB VRAM, but comfortably means more. If you're on a 10GB card, this node is the wrong choice - use the VidXTend path (
StreamingT2VLoaderVidXTendModel+ the VidXTend long-step nodes), which auto-downloads a 5GB model and runs in under 10GB. - SVD loader is a trap here. This node's SVD branch references an image variable it never receives, so if you feed it the
StreamingT2VLoaderSVDoutput it crashes. Stick to the Modelscope (or AnimateDiff) loader for this node; SVD's home isStreamingT2VRunI2V. - Slow is normal. Long + 50 steps + 1280x720 enhancement is minutes per clip on consumer hardware. Start with
num_framesat 24 and small upscales, then grow. - The output is a
STRINGfile path, not a video preview - wire it to a text node or grab the file from ComfyUI's output folder to watch it.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| StreamingT2VModel | StreamingT2VModel | — | |
| prompt | STRING | A cat running on the street | — |
| negative_prompt | STRING | — | |
| num_frames | INT | 24 | — |
| num_steps | INT | 50 | — |
| image_guidance | FLOAT | 9.00 | — |
| seed | INT | 33 | — |
| chunk | INT | 56 | — |
| overlap | INT | 32 | — |
| upscale_width | INT | 1280 | — |
| upscale_height | INT | 720 | — |
| upscale_pad | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |