Nodes/ComfyUI_Eclipse/IO Context Video
ComfyUI Node

IO Context Video

One wire for the whole video generation state

By r-vageΒ·Created 10 months agoΒ·Updated a day agoΒ· 31
IO Context Video
  • pipe
  • model
  • clip
  • vae
  • positive
  • negative
  • latent
  • images_input
  • images_ref_start
  • images_ref_new
  • images_ref_end
  • images_1st
  • images_loop
  • images_pp1
  • images_pp2
  • images_pp3
  • images_output
  • mask_1
  • mask_2
  • mask_3
  • sampler_name
  • scheduler
  • audio
  • any_1
  • any_2
  • context
  • model
  • clip
  • vae
  • positive
  • negative
  • latent
  • images_input
  • images_ref_start
  • images_ref_new
  • images_ref_end
  • images_1st
  • images_loop
  • images_pp1
  • images_pp2
  • images_pp3
  • images_output
  • mask_1
  • mask_2
  • mask_3
  • steps
  • cfg
  • sampler_name
  • scheduler
  • denoise
  • seed
  • width
  • height
  • text_pos
  • text_i2p
  • text_neg
  • frame_rate
  • frame_load_cap
  • context_length
  • overlap
  • skip_first_frames
  • select_every_nth
  • loop_idx
  • audio
  • any_1
  • any_2
  • path
  • purge
β—„stepsβ€”β–Ί
β—„cfgβ€”β–Ί
β—„denoiseβ€”β–Ί
β—„seedβ€”β–Ί
β—„widthβ€”β–Ί
β—„heightβ€”β–Ί
β—„text_posβ€”β–Ί
β—„text_i2pβ€”β–Ί
β—„text_negβ€”β–Ί
β—„frame_rateβ€”β–Ί
β—„frame_load_capβ€”β–Ί
β—„context_lengthβ€”β–Ί
β—„overlapβ€”β–Ί
β—„skip_first_framesβ€”β–Ί
β—„select_every_nthβ€”β–Ί
β—„loop_idxβ€”β–Ί
β—„pathβ€”β–Ί
β—„purgeβ€”β–Ί

Video workflows are where wire spaghetti goes to die. Between the model, conditioning, and sampler you also have first/last frames, reference frames, loop targets, masks, audio, frame rate, context windows and overlap - a context node for images already bundles a dozen values, and video doubles it. The IO Context Video is Eclipse's big pipe for that world: bundle the whole video generation state into one PIPE, merge and replace fields as it flows, and explode everything back out at the consumer.

What it is

The video sibling of IO Context Image, and the same design: all-optional inputs, one bundled context (PIPE) output, and an exploded output per field. It starts from any input pipe, overlays whatever you connect or set, and hands the merged dictionary downstream. The code carries the same rgthree-Context lineage the image variant does.

What makes it a video context is the extra surface:

  • Frame images: images_input, images_ref_start, images_ref_new, images_ref_end, images_1st, images_loop, three post-process slots images_pp1/2/3, and images_output - that's your source video, reference frames for start/new/end consistency, loop seeds, and the output.
  • Masks: mask_1/2/3 for region-based control.
  • Video timing: frame_rate, frame_load_cap, context_length, overlap, skip_first_frames, select_every_nth, loop_idx.
  • Audio: an audio input, plus two free-form any_1/any_2 slots for whatever else your pipeline shoves in.
  • The usual generation core: model, clip, vae, positive/negative, latent, sampler settings, dimensions, prompt text, path, purge.

How it works

Identical merge semantics to the image context: feed a pipe in to start, connect the fields you want to set, and each connected value overwrites the pipe's. The output context is the merged dict; every field also comes out on its own socket. The frame slots (ref_start/ref_new/ref_end) are where a video pipeline hangs its image-to-video consistency - you can feed one into the next pass's context to keep a character stable across a long generation.

The inputs a beginner actually touches:

  • pipe - carry a context forward from a loader or previous pass.
  • images_input / images_ref_start / images_ref_end - the frames that anchor generation.
  • frame_rate / frame_load_cap / context_length / overlap - how the pipeline reads and windows the video.
  • model / vae / positive / negative - the generation core, same as any sampler.

What goes in, what comes out

All inputs optional; outputs are context (PIPE) plus one socket per field. Because everything also explodes out individually, you can mix this with plain nodes - the video context doesn't force a pure-pipe workflow on you.

Install

Part of ComfyUI_Eclipse (formerly RvTools, rewritten in v4.0.0). Manager β†’ search ComfyUI_Eclipse β†’ install β†’ restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse

Under Eclipse β†’ Pipe. No model downloads.

Troubleshooting

  • A frame slot is None: the reference-frame slots only carry what you wire or what came in the pipe - there's no auto-guessing of "first frame." Feed the frames explicitly.
  • Video settings ignored: check whether the downstream sampler reads the exploded outputs or the context pipe - both carry the values, but a workflow mixing the two can leave a widget in charge. Look at allow_overwrite-style priority on the sampler you're using.
  • Old workflows with red nodes: v4.0.0 removed legacy IDs; run python tools/migrate_workflow.py <file>.json.
CategoryπŸŒ’ Eclipse/ Pipe

Inputs (43)

NameTypeDefaultDescription
pipeoptPIPEOptional input for 'pipe'.
modeloptMODELOptional input for 'model'.
clipoptCLIPOptional input for 'clip'.
vaeoptVAEOptional input for 'vae'.
positiveoptCONDITIONINGOptional input for 'positive'.
negativeoptCONDITIONINGOptional input for 'negative'.
latentoptLATENTOptional input for 'latent'.
images_inputoptIMAGEOptional input for 'images_input'.
images_ref_startoptIMAGEOptional input for 'images_ref_start'.
images_ref_newoptIMAGEOptional input for 'images_ref_new'.
images_ref_endoptIMAGEOptional input for 'images_ref_end'.
images_1stoptIMAGEOptional input for 'images_1st'.
images_loopoptIMAGEOptional input for 'images_loop'.
images_pp1optIMAGEOptional input for 'images_pp1'.
images_pp2optIMAGEOptional input for 'images_pp2'.
images_pp3optIMAGEOptional input for 'images_pp3'.
images_outputoptIMAGEOptional input for 'images_output'.
mask_1optMASKOptional input for 'mask_1'.
mask_2optMASKOptional input for 'mask_2'.
mask_3optMASKOptional input for 'mask_3'.
stepsoptINTOptional input for 'steps'.
cfgoptFLOATOptional input for 'cfg'.
sampler_nameopt*Optional input for 'sampler_name'.
scheduleropt*Optional input for 'scheduler'.
denoiseoptFLOATOptional input for 'denoise'.
seedoptINTOptional input for 'seed'.
widthoptINTOptional input for 'width'.
heightoptINTOptional input for 'height'.
text_posoptSTRINGOptional input for 'text_pos'.
text_i2poptSTRINGOptional input for 'text_i2p'.
text_negoptSTRINGOptional input for 'text_neg'.
frame_rateoptFLOATOptional input for 'frame_rate'.
frame_load_capoptINTOptional input for 'frame_load_cap'.
context_lengthoptINTOptional input for 'context_length'.
overlapoptINTOptional input for 'overlap'.
skip_first_framesoptINTOptional input for 'skip_first_frames'.
select_every_nthoptINTOptional input for 'select_every_nth'.
loop_idxoptINTOptional input for 'loop_idx'.
audiooptAUDIOOptional input for 'audio'.
any_1opt*Optional input for 'any_1'.
any_2opt*Optional input for 'any_2'.
pathoptSTRINGOptional input for 'path'.
purgeoptBOOLEANOptional input for 'purge'.

Outputs (43)

NameTypeDescription
contextPIPEβ€”
modelMODELβ€”
clipCLIPβ€”
vaeVAEβ€”
positiveCONDITIONINGβ€”
negativeCONDITIONINGβ€”
latentLATENTβ€”
images_inputIMAGEβ€”
images_ref_startIMAGEβ€”
images_ref_newIMAGEβ€”
images_ref_endIMAGEβ€”
images_1stIMAGEβ€”
images_loopIMAGEβ€”
images_pp1IMAGEβ€”
images_pp2IMAGEβ€”
images_pp3IMAGEβ€”
images_outputIMAGEβ€”
mask_1MASKβ€”
mask_2MASKβ€”
mask_3MASKβ€”
stepsINTβ€”
cfgFLOATβ€”
sampler_name*β€”
scheduler*β€”
denoiseFLOATβ€”
seedINTβ€”
widthINTβ€”
heightINTβ€”
text_posSTRINGβ€”
text_i2pSTRINGβ€”
text_negSTRINGβ€”
frame_rateFLOATβ€”
frame_load_capINTβ€”
context_lengthINTβ€”
overlapINTβ€”
skip_first_framesINTβ€”
select_every_nthINTβ€”
loop_idxINTβ€”
audioAUDIOβ€”
any_1*β€”
any_2*β€”
pathSTRINGβ€”
purgeBOOLEANβ€”