Video Split
One clean cut, two clips, zero drama
- video
- video_a
- video_b
Sometimes you don't need to trim a clip to a range - you need to cut it in half so each piece can go its own way. One half gets graded, the other gets retimed, and they never meet again. That's Video Split, the two-output node that does exactly one thing: cut at a timestamp, hand you both halves.
How it works
On ▶ Run it reads the clip's duration, trims twice (0 → split point, split point → end), and saves both as project snapshots. You get two COMFYTV_VIDEO outputs:
- video_a - everything before the cut.
- video_b - everything from the cut to the end.
The one parameter is split_s, the cut point in seconds. It must land strictly inside the clip - the node rejects anything within about 0.05s of either end, since a "cut" at 0 or at the duration isn't a cut at all. Set the value in the node body (or nudge it with the timeline widget - ←/→ move the handle one frame at a time).
Because both halves are persisted as snapshots, you can then send them down different branches: color one, stabilize the other, or feed just one half into a Concat with other material. This "cut now, treat separately later" pattern is the whole reason the node exists.
Where it sits in the pack
It's a sibling of Video Clip (trim to an arbitrary in/out range, one output) and the natural partner of Video Concat (which can rejoin the halves, optionally with other clips in between - that's how you insert a shot). If you're assembling a sequence, the Director timeline and Sequence nodes do this kind of thing at scale; Split is the surgical version for a single cut.
Two grounded gotchas. First, the default split_s of 0 is not valid - you must set a real timestamp, or the run errors. Second, the output types are COMFYTV_VIDEO snapshots; if either half needs to become a native ComfyUI tensor, a ← ComfyTV Video Bridge handles the conversion.
Install
Pack-standard: cd ComfyUI/custom_nodes && git clone https://github.com/jtydhr88/ComfyTV, restart ComfyUI, find it under ComfyTV → Video. It's a media-processing stage - PyAV on disk, no GPU, no model downloads, nothing to configure beyond the pack itself.
Troubleshooting
- "split point must fall inside the clip" - you set a time outside the clip (or left the default 0). Read the duration off the clip and pick something between ~0.05s and duration − 0.05s.
- The two halves look slightly different at the cut - that's re-encode behavior on both sides of the cut, not a bug; keep the source clean (same codec, same color space) and the seam is invisible.
That's the node - a single cut, two outputs, and the rest is up to your downstream branches.
Inputs (5)
| 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. |
| split_s | FLOAT | 0.000–3600 | — |
| videoopt | COMFYTV_VIDEO | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_a | COMFYTV_VIDEO | — |
| video_b | COMFYTV_VIDEO | — |