Nodes/ComfyUI_StreamingT2V/StreamingT2VRunLongStepVidXTendPipelineCustomRef
ComfyUI Node

StreamingT2VRunLongStepVidXTendPipelineCustomRef

VidXTend extension with custom reference frames for appearance control

By chaojie·Created 2 years ago·Updated 2 years ago· 36
StreamingT2VRunLongStepVidXTendPipelineCustomRef
  • VidXTendPipeline
  • short_video
  • ref_frames
  • IMAGE
promptA cat running on the street
num_frames24
num_steps50
image_guidance9.00
seed33
negative_promptworst quality, normal quality, low quality, low res, blurry, text,watermark, logo, banner, extra digits, cropped,jpeg artifacts, signature, username, error,sketch ,duplicate, ugly, monochrome, horror, geometry, mutation, disgusting

StreamingT2VRunLongStepVidXTendPipelineCustomRef is the VidXTend long-extension node with one extra input that changes the game: a ref_frames IMAGE that replaces the default appearance anchor. Same loop as the plain StreamingT2VRunLongStepVidXTendPipeline - generate 8 frames, append, repeat - but instead of anchoring the whole video to its own first frame, it anchors to whatever frames you feed in.

Why would you want that? The appearance-preservation module is what keeps a long generation from drifting: it holds onto the first chunk so the scene doesn't morph into something else by frame 200. The plain node uses the seed video's first frame as that anchor. CustomRef lets you hand the pipeline frames from elsewhere - a different source clip, keyframes you've picked, frames from a previous run you liked. That's the difference between "the video remembers how it started" and "the video remembers what you actually want it to look like." If your seed's first frame is weak but you have a stronger reference, this node is the fix.

How it works

Identical mechanics to the plain VidXTend long node, with one line different: input_frames_conditioning gets your ref_frames instead of images[:1]. Everything else - the 8-frame loop, the last-8-frames context, the CUDA cache clearing between chunks, the num_frames target - is the same.

Inputs that matter

  • VidXTendPipeline - from StreamingT2VLoaderVidXTendModel.
  • short_video - the seed IMAGE whose frames actually get extended.
  • ref_frames - the reference IMAGE(s) used as the appearance anchor. This is the input you're here for.
  • prompt - the scene description.
  • num_frames, num_steps (50), image_guidance (9.0), seed (33) - the usual extension knobs.
  • negative_prompt - the standard default list.

Output is an IMAGE of num_frames frames, ready for VHS_VideoCombine.

Installing it

Same as the rest of the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/chaojie/ComfyUI_StreamingT2V

or ComfyUI Manager → search StreamingT2V → install, restart. VidXTend auto-downloads; no manual checkpoint. Heavy requirements.txt as always.

The take

This is the variant I'd pick over the plain long node more often than you'd expect. The cost is one extra wire, and the benefit is real control over long-term appearance - which is the hardest failure mode in long video generation. One practical note: match your ref_frames to the seed's content reasonably well. Feed it something wildly different and the pipeline will fight itself, because the extension is still being driven by the actual short video. The reference steers, it doesn't replace.

CategoryStreamingT2V

Inputs (9)

NameTypeDefaultDescription
VidXTendPipelineVidXTendPipeline
short_videoIMAGE
promptSTRINGA cat running on the street
ref_framesIMAGE
num_framesINT24
num_stepsINT50
image_guidanceFLOAT9.00
seedINT33
negative_promptSTRINGworst quality, normal quality, low quality, low res, blurry, text,watermark, logo, banner, extra digits, cropped,jpeg artifacts, signature, username, error,sketch ,duplicate, ugly, monochrome, horror, geometry, mutation, disgusting

Outputs (1)

NameTypeDescription
IMAGEIMAGE