Pipe In Context Video v4
The whole video pipeline on one wire
- pipe
- model_1
- model_2
- clip
- vae
- positive
- negative
- latent
- images_input
- images_ref_start
- images_ref_end
- images_output
- audio_input
- audio_output
- mask_1
- mask_2
- images_pp_1
- images_pp_2
- images_pp_3
- images_pp_4
- images_pp_5
- any_1
- any_2
- any_3
- any_4
- any_5
- context
- model_1
- model_2
- clip
- vae
- positive
- negative
- latent
- width
- height
- frame_rate
- frame_load_cap
- skip_first_frames
- select_every_nth
- images_input
- images_ref_start
- images_ref_end
- images_output
- audio_input
- audio_output
- mask_1
- mask_2
- images_pp_1
- images_pp_2
- images_pp_3
- images_pp_4
- images_pp_5
- any_1
- any_2
- any_3
- any_4
- any_5
- steps
- cfg
- seed
- path
Pipe In Context Video v4 is the fullest node in the pack's generic video context line, and the way to think about it is v2 plus v3: it carries two models (model_1, model_2) and the full conditioning stack (positive, negative, latent). Every slot the video context family has - frames in, reference frames, frames out, audio in/out, masks, post-processing images, catch-alls - plus every setting. If you're building one context wire to rule a serious video pipeline, this is the one the author reached for last.
The one structural detail that separates v4 from the earlier versions is the name of the context input: it's called pipe rather than base_ctx. Functionally identical - an optional incoming context that seeds the new one - but worth knowing when you're looking at node titles, because it's a small inconsistency the pack never cleaned up. Otherwise it's the same rgthree-derived context dict you've seen everywhere here: connect what you want to override, leave the rest to inherit, and every field exits both on the context wire and as its own output.
Why would you actually want both two models and conditioning on the same bus? Multi-pass video. First pass with a cheap/fast model to get motion and composition, second pass with a better model to refine - both conditioned by the same prompt and the same start/end reference frames, all riding one context. The images_ref_start/images_ref_end pair locks the clip's bookends; images_pp_1β¦images_pp_5 carry post-processed frames; steps, cfg, seed and path handle the sampling and output. It's a lot of inputs, and that's the honest cost of "everything on one wire" - the node is a big box in the canvas.
Install. ComfyUI Manager β search "RvTools" β install ComfyUI-RvTools_v2 and restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI-RvTools_v2
# restart ComfyUI afterwards
No models or keys. Manual clones: pip install -r requirements.txt (opencv-python, pynvml, piexif, Pillow, pilgram).
The catches. Don't reach for v4 just because it's v4. If you don't need a second model, v3 is the cleaner fit; if you don't need conditioning, v2. This node earns its size only in two-model, conditioned workflows - and even then, all those empty slots sit on your canvas as clutter when you're not using them. The family caveats apply: pack is unmaintained (ComfyUI_Eclipse is the README-designated successor), context is pipe-typed and unpacks via a matching RvTools/rgthree-style Out node, and dict keys are pack-specific so cross-pack context mixing silently drops fields you might not notice missing.
Inputs (36)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | pipe | β | |
| model_1opt | MODEL | β | |
| model_2opt | MODEL | β | |
| clipopt | CLIP | β | |
| vaeopt | VAE | β | |
| positiveopt | CONDITIONING | β | |
| negativeopt | CONDITIONING | β | |
| latentopt | LATENT | β | |
| widthopt | INT | β | |
| heightopt | INT | β | |
| frame_rateopt | FLOAT | β | |
| frame_load_capopt | INT | β | |
| skip_first_framesopt | INT | β | |
| select_every_nthopt | INT | β | |
| images_inputopt | IMAGE | β | |
| images_ref_startopt | IMAGE | β | |
| images_ref_endopt | IMAGE | β | |
| images_outputopt | IMAGE | β | |
| audio_inputopt | AUDIO | β | |
| audio_outputopt | AUDIO | β | |
| mask_1opt | MASK | β | |
| mask_2opt | MASK | β | |
| images_pp_1opt | IMAGE | β | |
| images_pp_2opt | IMAGE | β | |
| images_pp_3opt | IMAGE | β | |
| images_pp_4opt | IMAGE | β | |
| images_pp_5opt | IMAGE | β | |
| any_1opt | * | β | |
| any_2opt | * | β | |
| any_3opt | * | β | |
| any_4opt | * | β | |
| any_5opt | * | β | |
| stepsopt | INT | β | |
| cfgopt | FLOAT | β | |
| seedopt | INT | β | |
| pathopt | STRING | β |
Outputs (36)
| Name | Type | Description |
|---|---|---|
| context | pipe | β |
| model_1 | MODEL | β |
| model_2 | MODEL | β |
| clip | CLIP | β |
| vae | VAE | β |
| positive | CONDITIONING | β |
| negative | CONDITIONING | β |
| latent | LATENT | β |
| width | INT | β |
| height | INT | β |
| frame_rate | FLOAT | β |
| frame_load_cap | INT | β |
| skip_first_frames | INT | β |
| select_every_nth | INT | β |
| images_input | IMAGE | β |
| images_ref_start | IMAGE | β |
| images_ref_end | IMAGE | β |
| images_output | IMAGE | β |
| audio_input | AUDIO | β |
| audio_output | AUDIO | β |
| mask_1 | MASK | β |
| mask_2 | MASK | β |
| images_pp_1 | IMAGE | β |
| images_pp_2 | IMAGE | β |
| images_pp_3 | IMAGE | β |
| images_pp_4 | IMAGE | β |
| images_pp_5 | IMAGE | β |
| any_1 | * | β |
| any_2 | * | β |
| any_3 | * | β |
| any_4 | * | β |
| any_5 | * | β |
| steps | INT | β |
| cfg | FLOAT | β |
| seed | INT | β |
| path | STRING | β |