Nodes/MKRShift_Nodes/NDI Stream Plan
ComfyUI Node

NDI Stream Plan

A spec for NDI output, not the output itself

By criskb·Created 7 months ago·Updated 5 months ago· 0
NDI Stream Plan
    • ndi_plan_json
    • manifest_line
    • summary_json
    stream_nameMKRShift NDI
    asset_path
    source_kindvideo
    alpha_modeignore

    The plan node that says what an NDI stream should be

    NDI is how live-video gear talks to each other over a network - it's the protocol behind sending a program feed to a switcher, a projector, or another machine without capture cards. MKRNDIStreamPlan is the pack's node for it, and the first thing to know is exactly what it does and doesn't do: it produces a JSON plan describing an NDI stream. It does not stream anything.

    This is the pack's plan-node architecture in its purest form - the same pattern as the Maya and Nuke bridges. A plan node builds a structured description; something else executes it. For NDI, the executor is the pack's network-transport lane and its host add-ons (the README groups this under "Network Transport" alongside OSC, Spout, Syphon, TCP, WebSocket plans). If you wire this up and expect a visible stream, you'll be disappointed - it's the spec document, not the stream.

    The inputs

    Four required, all simple:

    • stream_name (default "MKRShift NDI") - the name other NDI receivers will see. Also used to build a stream_slug.
    • asset_path - what the stream should feed from (a video file, an image sequence, etc.). Empty is allowed - the plan is still valid, it just has nothing to source yet.
    • source_kind - what type of source the stream carries: image, image_sequence, video, or texture. This tells the executor how to play the asset.
    • alpha_mode - how to treat the alpha channel: ignore, premultiplied, or straight. Relevant if your source has transparency and you're keying downstream.

    The outputs

    Three strings:

    • ndi_plan_json - the actual plan (mkrshift_ndi_plan_v1), containing stream name, slug, protocol, asset path, source kind, and alpha mode. This is what you feed the transport/runtime machinery.
    • manifest_line - a compact comma-separated line (name, source kind, alpha mode, path) for manifests and copy decks.
    • summary_json - a quick confirmation: stream name and whether a path is set.

    Install and the honest take

    cd ComfyUI/custom_nodes
    git clone https://github.com/criskb/MKRShift_Nodes
    

    Restart, or install "MKRShift Nodes" via ComfyUI Manager. No pip deps, no models, no ffmpeg - this node touches nothing.

    Here's my honest take, because it matters for your time budget: if you need real, working NDI output today, this node alone won't get you there - there's no NDI sender in the pack, and setting up the add-on/transport lane is real work. What it is good for is exactly what plan nodes are for: defining a consistent, inspectable, versioned description of "an NDI feed called X, sourced from Y, alpha handled as Z" that can ride through a manifest and get executed later. If your pipeline is all-in on the pack's network lane, it fits. If you just wanted a quick NDI push, check whether the full lane is worth the setup before you commit - the plan is the cheap part.

    CategoryMKRShift Nodes/Addons/Network

    Inputs (4)

    NameTypeDefaultDescription
    stream_nameSTRINGMKRShift NDI
    asset_pathSTRING
    source_kindCOMBOvideo4 options: image, image_sequence, video, texture
    alpha_modeCOMBOignore3 options: ignore, premultiplied, straight

    Outputs (3)

    NameTypeDescription
    ndi_plan_jsonSTRING
    manifest_lineSTRING
    summary_jsonSTRING