Nodes/ComfyTV/Video Stage
ComfyUI Node

Video Stage

ComfyTV's video generator — LTX 2.3 under the hood, and why you won't see a tensor

By jtydhr88·Created 3 months ago·Updated about 16 hours ago· 725
Video Stage
  • texts
  • images
  • videos
  • audio
  • video
force_run_token0
project_id
parent_output_id0
workflowLocal LTX 2.3 T2V
resolution720P
aspect_ratio16:9
duration_s5
generate_audiofalse
main_prompt
custom_params{}

This is the node that turns a prompt into an actual moving clip inside ComfyTV, and it's the reason most people install the pack. Drop one on the canvas, pick a workflow, type a prompt, hit ▶ Run, and a few seconds later you're scrubbing an MP4 preview right in the node body. It's a per-node run, not a trip through ComfyUI's global queue - everything happens inside the stage, and whatever it produces gets stored as a project snapshot.

What it actually does

Video Stage is ComfyTV's text/image-to-video generator. It wraps a curated ComfyUI video workflow - the pack ships four Local LTX 2.3 variants: T2V (text only), I2V (one image as the first frame / appearance ref), FLF2V (two keyframes, start and end), and IA2V (an image plus an audio track, for lipsync or music-driven motion). Same 22B LTX 2.3 base with a Gemma 3 text encoder, a Lightning LoRA, and a 2× spatial upscaler under all four, just wired differently.

Why LTX 2.3? It's the speed tier of local video: seconds per clip on consumer VRAM rather than minutes, which makes it the natural pick for a canvas app where you iterate. Draft fast here, and refine elsewhere if you want more polish.

The inputs that matter

  • workflow - pick the mode. T2V wants only a prompt; I2V wants one image wired into images; FLF2V wants exactly two in start→end order; IA2V wants an image and an audio track and usually has generate_audio left off.
  • main_prompt - your scene, camera move, mood. Upstream text stages get appended as context.
  • resolution / aspect_ratio - short-side tier (720P default) plus ratio; set 9:16 for vertical shorts.
  • duration_s - clip length in seconds (1–120, default 5). The subgraph derives fps and frame count from this.
  • generate_audio - whether the workflow also synthesizes an audio track.

The output is a single video of type COMFYTV_VIDEO - a snapshot URL stored in the project, not a native ComfyUI VIDEO tensor. That's the whole architecture in a nutshell: ComfyTV stages talk to each other in snapshots, and only Bridge nodes ( / ← ComfyTV Video) let you cross into a normal tensor-based graph. Want to hand the clip to a plain SaveVideo? Bridge it.

Installing and the model tax

Install is the same for every ComfyTV node: cd ComfyUI/custom_nodes && git clone https://github.com/jtydhr88/ComfyTV, restart ComfyUI, and it appears under the ComfyTV category. ComfyUI Manager can install it too if you prefer.

The real cost here isn't the install - it's the models. Unlike every other node in this pack, Video Stage needs actual weights. The README's models.md lists the LTX 2.3 files (22B fp8 checkpoint, Gemma 3 text encoder, the Lightning and LoRA files, plus the upscaler) spread across checkpoints/, text_encoders/, loras/, and latent_upscale_models/. Altogether that's a big download, so budget for it before you hit Run and stare at an error. MiniMax H3 workflows are also available if you want a heavier, higher-fidelity alternative.

Common gotchas

  • I2V ignores your reference? You're on T2V - pick the I2V workflow and make sure the image is actually wired into images.
  • FLF2V with one image? It needs two keyframes, in order.
  • IA2V fails or audio drifts? audio is required, and its length should roughly match duration_s.
  • Can't connect to normal ComfyUI video nodes? That's expected - you're holding a COMFYTV_VIDEO snapshot. Insert a ← ComfyTV Video Bridge to convert it.

One more thing worth knowing: the "Local LTX 2.3 T2V" default label is just the preset - you can import any ComfyUI workflow as JSON and bind it to this stage in the sidebar editor, so it'll happily drive your own model stack instead.

CategoryComfyTV/Generate

Inputs (14)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
workflowCOMBOLocal LTX 2.3 T2VWhich backend video workflow to invoke when Run is clicked. Placeholder for now.
resolutionCOMBO720PTarget output resolution tier (the short side, in px). Combined with the aspect ratio to compute (w, h).
aspect_ratioCOMBO16:9Target output aspect ratio. Combined with resolution to compute actual (w, h) downstream.
duration_sINT51–120Target clip duration in seconds. The wrapped workflow picks fps and frame count.
generate_audioBOOLEANfalseWhether the wrapped workflow should generate an audio track alongside video.
main_promptSTRINGPrimary prompt — the user's intent for this stage. Upstream text inputs are treated as additional context.
textsCOMFY_AUTOGROW_V3
imagesCOMFY_AUTOGROW_V3
videosCOMFY_AUTOGROW_V3
audioCOMFY_AUTOGROW_V3
custom_paramsSTRING{}Internal — JSON of user-defined parameter attachments/values for this node.

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO