Nodes/Reactor API: Realtime Video/Reactor Camera Capture
ComfyUI Node

Reactor Camera Capture

Your webcam as live input to a real-time video model

By reactor-team·Created about a month ago·Updated about 11 hours ago· 7
Reactor Camera Capture
  • camera
  • REACTOR_CAMERA

This node does almost nothing, and that's the point. Reactor Camera Capture is a two-field widget that names a camera on the machine you're browsing from and hands that name downstream as a REACTOR_CAMERA. Nothing streams through the node itself. The pixels move later, in the browser window that Reactor Realtime opens.

What it's for

The Reactor pack is the ComfyUI front end for Reactor's hosted real-time video models - you don't download weights, you spend an API key. That's the API-wrapper category in a nutshell: a node that looks like any other generator from the canvas and is underneath an HTTP client with your credential baked in. Two of those models edit a source rather than generating from a prompt: X2 edits a clip or a camera from a text prompt, and Vidu S2-Editing restyles, re-dresses or recasts whatever it's watching. Both want a live feed as an option, and this node is how you point them at yours.

Reach for it when you want the thing that's genuinely new about V2V: restyle yourself in real time, try on an outfit from a reference image, swap the room behind you, and hit Save when a take is worth keeping. If you'd rather edit a file you already have, skip this node and wire a video loader into Realtime instead.

How it actually works

The widget lists the cameras your browser can see; the node passes the chosen label through and stops. When a run starts, Reactor Realtime opens its window in your browser tab and the client side publishes a video track named camera into the session, which is the source track those two models read. So the "capture" is real, it just happens one layer up from the graph.

One detail from the source worth knowing, because it explains an error you'd otherwise never guess at: for a live camera source the browser is asked for a fixed frame size (a 16:9 frame at 1920×1080) and holds it. A live session dies if the resolution changes mid-chunk. So don't go changing your webcam's capture mode in another app while a take is running.

Inputs and outputs

  • camera - the device to stream. Default is the browser's default camera. It's a dropdown populated by your browser, not by ComfyUI.
  • REACTOR_CAMERA (output) - plug it into the camera socket that Reactor Realtime shows for X2 or Vidu S2-Editing.

That's the whole node. No latency setting, no resolution setting, no flip setting.

Install

Manager search comfyui-reactor-api (it lists as "Reactor API: Realtime Video"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/reactor-team/comfyui-reactor-api
pip install -r comfyui-reactor-api/requirements.txt

The only Python dependency is reactor-sdk>=1.6, and there are no model files to download - everything runs on Reactor's side. Then copy config.ini.example to config.ini and set REACTOR_API_KEY under [API], or export REACTOR_API_KEY in the environment ComfyUI starts from (the env var wins). Restart ComfyUI and the nodes appear under Reactor in the menu.

Where people get burned

Permissions. The camera label list is empty or generic until the browser has been granted camera access at least once. Allow it, then reload - getUserMedia wants a secure context, so localhost or HTTPS, not a LAN IP over plain HTTP.

One source, not two. These models edit exactly one input. Wire a camera and a video into Realtime and it refuses: "connect a video or a Reactor Camera Capture." Pick one.

The tab matters. A live take needs the workflow open in a real ComfyUI browser tab. Queue it from the API or a headless runner and you get "Open this workflow in a ComfyUI browser tab to record a live take."

The name collision. Search "ComfyUI Reactor" and you'll land on gourieff's ReActor - the face-swap pack, which had its GitHub repo taken down at one point and lives on in community forks. Different project entirely, no relation to this one. If you're reading a ReActor face-swap tutorial and wondering why there's no camera socket, that's why.

CategoryReactor

Inputs (1)

NameTypeDefaultDescription
cameraREACTOR_CAMERA_DEVICEThe camera to stream. Default is the browser's default camera.

Outputs (1)

NameTypeDescription
REACTOR_CAMERAREACTOR_CAMERA—