Video Stage
ComfyTV's video generator — LTX 2.3 under the hood, and why you won't see a tensor
- texts
- images
- videos
- audio
- video
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:16for 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?
audiois required, and its length should roughly matchduration_s. - Can't connect to normal ComfyUI video nodes? That's expected - you're holding a
COMFYTV_VIDEOsnapshot. Insert a← ComfyTV VideoBridge 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.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| workflow | COMBO | Local LTX 2.3 T2V | Which backend video workflow to invoke when Run is clicked. Placeholder for now. |
| resolution | COMBO | 720P | Target output resolution tier (the short side, in px). Combined with the aspect ratio to compute (w, h). |
| aspect_ratio | COMBO | 16:9 | Target output aspect ratio. Combined with resolution to compute actual (w, h) downstream. |
| duration_s | INT | 51–120 | Target clip duration in seconds. The wrapped workflow picks fps and frame count. |
| generate_audio | BOOLEAN | false | Whether the wrapped workflow should generate an audio track alongside video. |
| main_prompt | STRING | Primary prompt — the user's intent for this stage. Upstream text inputs are treated as additional context. | |
| texts | COMFY_AUTOGROW_V3 | — | |
| images | COMFY_AUTOGROW_V3 | — | |
| videos | COMFY_AUTOGROW_V3 | — | |
| audio | COMFY_AUTOGROW_V3 | — | |
| custom_params | STRING | {} | Internal — JSON of user-defined parameter attachments/values for this node. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |