Nodes/Image Processing Suite for ComfyUI/Camera Switcher (Multi-Video Director)
ComfyUI Node

Camera Switcher (Multi-Video Director)

Cut Between Up to 8 Cameras Automatically

By marcoc2·Created 2 years ago·Updated 5 months ago· 1
Camera Switcher (Multi-Video Director)
  • video_1
  • video_2
  • video_3
  • video_4
  • video_5
  • video_6
  • video_7
  • video_8
  • video
  • cut_log
switch_every_seconds2.0
fps24.0
seed0
avoid_repeattrue

If you generate a scene from several camera angles and then want a finished video that cuts between them like a real production, the naive approach is soul-crushing: splice clips by hand, align frame counts, keep track of which take is which. AnotherCameraSwitcher is the "director" node that does it for you - feed it up to eight video streams and it assembles one timeline, cutting to a different camera every N seconds. Think of it as a poor-man's multi-cam switcher living inside ComfyUI.

It's part of AnotherUtils (marcoc2/ComfyUI-AnotherUtils), the utility grab-bag by marcoags. Pure tensor juggling, no models. The pitch is simple: generate 3–4 versions of a scene (different angles, different prompts), feed them all in, get a single coherent clip that looks edited rather than stitched.

How it works

The node treats the first video as the timeline's master: total length is video_1's frame count, and every other input must match its resolution. Cuts happen every switch_every_seconds (converted to frames via your fps), and the camera shown in each segment is chosen by a seeded random number generator - with avoid_repeat on, it won't pick the same camera twice in a row, which is what stops the edit from feeling like a strobe light. The cut_log output tells you exactly which camera played each segment, which you'll want for keeping your sanity across runs.

The inputs

  • video_1 - required, the master timeline and the one that defines length.
  • video_2video_8 - optional, the other cameras. Leave unconnected and they're ignored.
  • switch_every_seconds - cut cadence (default 2s). Short = frantic coverage; long = patient.
  • fps - the frame rate of your inputs, used to convert seconds to frames. Trust it or the cuts land at the wrong time.
  • seed - the randomness of the cut pattern.
  • avoid_repeat - on by default; the reason your edits don't look like a broken music video.

What comes out

  • video - the assembled IMAGE batch, same length as video_1.
  • cut_log - a string listing which camera is on screen for each segment.

Installing it

Same drill as the rest of the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/marcoc2/ComfyUI-AnotherUtils.git

Restart ComfyUI, or search "AnotherUtils" in ComfyUI Manager. No models.

Where people get burned

The hard requirement nobody reads: all input videos must be the same resolution, and none can be shorter than the longest cut plan requires. The node validates resolution and raises a clear error, but mismatched lengths just produce empty segments, so normalize lengths first (the pack's VideoAutoSyncHStack is handy for that, or just crop). Also, every camera must have at least as many frames as the longest segment it might be asked to serve - with avoid_repeat, a short clip keeps getting skipped, and your edit starts favoring the long takes. And the seed is the creative control here: change it and the whole cut pattern reshuffles, so if you like a cut, write the seed down.

CategoryAnotherUtils/video

Inputs (12)

NameTypeDefaultDescription
video_1IMAGE
switch_every_secondsFLOAT2.00.1–300Cut to a different camera every N seconds
fpsFLOAT24.01–120Frames per second of the input videos
seedINT00–4294967295
avoid_repeatBOOLEANtrueAvoid picking the same camera twice in a row
video_2optIMAGE
video_3optIMAGE
video_4optIMAGE
video_5optIMAGE
video_6optIMAGE
video_7optIMAGE
video_8optIMAGE

Outputs (2)

NameTypeDescription
videoIMAGE
cut_logSTRING