Nodes/ComfyUi-NoodleWebcam/🍜Webcam Noodle
ComfyUI Node

🍜Webcam Noodle

Point your webcam at ControlNet — and brace for the crashes

By Niutonian·Created 3 years ago·Updated 2 years ago· 30
🍜Webcam Noodle
    • IMAGE
    â—„select_webcam0â–ş
    â—„framerate12â–ş
    â—„control_streamstartâ–ş
    â—„duration10â–ş
    â—„height480â–ş
    â—„width640â–ş

    WebcamNode does one thing: it records your webcam for a set number of seconds and hands the frames to your graph as a batch of images. That's it. No API, no key, no hidden model downloads. You wire its IMAGE output into a ControlNet preprocessor - OpenPoseDW, Depth, Canny - and suddenly your live camera feed becomes the spatial structure driving generation. The author's own demos are exactly that: webcam → pose skeleton → AnimateDiff-style output, with a "Have fun" sign-off.

    Here's the honest part, straight from the README's "BROKEN THINGS" section: it's broken. The author says so themselves and asks for pull requests. So before you build your whole live-streaming setup around this, know what you're getting into.

    How it works

    The node opens the webcam with OpenCV (cv2.VideoCapture(index)), then loops reading frames for duration seconds, sleeping 1/framerate between reads. Each frame gets resized to your width/height, converted BGR→RGB, and stacked into one big tensor in (N, H, W, 3) - which is exactly the batch format ComfyUI's IMAGE type expects. One execution, one batch of N frames out. The webcam index is just a number, not a dropdown: 0 is usually your built-in camera, and if you have OBS or virtual-camera apps installed, your real camera might be index 5 or worse. Try each index until the preview looks like you.

    The inputs that matter

    • select_webcam - camera index (default 0).
    • framerate - 1–60 fps, default 12. Keep it low; you don't need 60 raw frames for a ControlNet condition.
    • duration - 1–120 seconds, default 10. This is your batch size: 12 fps Ă— 10 s = 120 frames.
    • control_stream - "start" or "stop".
    • width / height - output frame size (defaults 640Ă—480).

    Output is a single IMAGE tensor: the whole recorded clip as one batch. That wires straight into a ControlNet preprocessor, or into VAEEncode for img2img over your own face, or into AnimateDiff if you're feeling ambitious. No per-frame handling needed - it arrives pre-batched.

    Install

    ComfyUI Manager: search "ComfyUi-NoodleWebcam" and hit install. Or the manual way:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Niutonian/ComfyUi-NoodleWebcam
    

    Then restart ComfyUI. Dependencies are torch, torchvision, and opencv-python-headless - you almost certainly already have all three, so this install is painless. The example workflows also want AnimateDiff-Evolved, pythongosssss Custom-Scripts, MTB Nodes, FizzNodes, and Advanced ControlNet, but those are for the demo graphs, not the node itself.

    Where people get burned

    The community's verdict from a late-2023 thread: "at best gives burnt images, but best for batch queue." The "burnt images" part is real and visible in the source - the current capture() returns frames scaled back up to 0–255 byte values, and ComfyUI previews IMAGE as 0–1 floats. Result: a blown-out white frame in the preview even though downstream nodes still see the data. It's also why the README says the preview "doesn't return the correct preview."

    The other classic trap: the stream state lives on the node instance, so to restart a capture you have to change framerate or duration to force it to reset - toggling to "stop" and back doesn't reliably do it. And yes, it crashes. The README says a ComfyUI restart is sometimes the only cure, and real users reported exactly that. If the webcam is in use by another app, OpenCV will silently fail to open it and you'll get an empty batch.

    Verdict

    Reach for WebcamNode if you want a no-frills way to batch your webcam into a ControlNet pipeline and you're comfortable nudging values to coax it back to life. If you need a stable live feed - continuous streaming, reliable previews - this isn't it; Jovimetrix is the more dependable path for that. Think of this as the experimental noodle experiment it claims to be: fun when it cooperates, and refreshingly honest about the fact that it often won't.

    Category🍜Noodle Webcam

    Inputs (6)

    NameTypeDefaultDescription
    select_webcamINT00–10—
    framerateINT121–60—
    control_streamSTRINGstart—
    durationINT101–120—
    heightINT480100–1080—
    widthINT640100–1920—

    Outputs (1)

    NameTypeDescription
    IMAGEIMAGE—