→ ComfyTV Video
Put a native ComfyUI video on the ComfyTV canvas
- video
- video
Every ComfyTV video stage - Video Clip, Demux, Crop, the generate stages - expects COMFYTV_VIDEO: a URL snapshot of an mp4 on disk, tracked inside the ComfyTV project. But plenty of things in the wider ComfyUI ecosystem hand you a native VIDEO object instead: mesh2motion, AnimateDiff exports, anything using Create Video. Those two shapes don't connect, and → ComfyTV Video is the adapter - native VIDEO in, COMFYTV_VIDEO snapshot out.
The arrow points into ComfyTV, which tells you the one thing that trips everyone up: this is a Stage with a ▶ Run. It doesn't just convert when the graph queues. On Run it saves the video object to an mp4 under output/ComfyTV/bridge/ (codec picked automatically) and registers it as a project snapshot. No Run, no snapshot, and downstream keeps pointing at whatever stale URL it had before.
How it works
One required input: video (VIDEO). On Run the node writes it to disk and emits video of type COMFYTV_VIDEO. The other three inputs - force_run_token, project_id, parent_output_id - are internal lineage plumbing; leave them. The typical flow in the docs: run mesh2motion (or Create Video), bridge the result in, then wire it to a Video Clip or the toolbar's Demux to start editing on the canvas.
The one real footgun in the source: unwired video raises an error on Run. So check the wire before you blame the bridge.
If upstream gives you an image sequence instead of a VIDEO object, don't force it - the docs' route is IMAGE batch → Create Video (fps) → → ComfyTV Video, turning the frames into a clip first. And for the reverse trip, ← ComfyTV Video pushes a finished ComfyTV clip back out to native.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Restart the ComfyUI backend (a full restart, not a browser refresh); nodes appear under the ComfyTV category. ComfyUI Manager finds the pack by searching "ComfyTV". The README's two recurring gotchas: on Desktop/macOS/multi-install setups the relative cd can clone into the wrong instance - read the startup log for the real base path and clone into that absolute path, quoted - and the first level of custom_nodes/ComfyTV/ must contain __init__.py (fix a nested ComfyTV/ComfyTV/… by moving the inner folder up).
Zero Python dependencies declared in pyproject.toml - encode/decode rides on ComfyUI's own ffmpeg/PyAV.
Troubleshooting
- "no input video wired" error. The
videoinput is empty. Wire it, or run the upstream video-producing node first. - Downstream unchanged after a new run. You skipped the bridge's Run, or you didn't re-run it after the video changed. Snapshots are sticky by design.
- Node missing after install. Wrong instance or nested folder - verify the layout and restart the backend properly.
Inputs (4)
| 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. |
| video | VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |