Appearance
NDI Support
Exaplay 3 can receive NDI® (Network Device Interface) video streams as live inputs, and send its own outputs as NDI streams for monitoring or routing.
What Is NDI?
NDI is a royalty-free standard by NewTek/Vizrt for transmitting high-quality video over standard IP networks (Gigabit Ethernet or faster). Common NDI sources include:
- vMix, OBS, Wirecast — live production software
- PTZ cameras with NDI output
- NDI converters for SDI and HDMI sources
- Other Exaplay 3 instances (see NDI Output below)
Receiving NDI
Walkthrough
☰ menu → Walkthroughs → Media, effects & generators → Receiving an NDI source drops the NDI Receiver onto a track, picks a sender and reads whether a picture arrives.
- Ensure the NDI sender is on the same network as the Exaplay machine.
- In the File Browser, click the Live Feeds tab.
- Drag the NDI Receiver entry onto a track in the Timeline, the same as any media file. The list shows one NDI Receiver entry, not one entry per sender — the sender is picked in the next step.
- Select the new clip and click Set Live Parameters in the Inspector. Under Source, pick the sender in the Stream list (senders are found automatically on the network). Format can stay on Auto (detected).
Once a frame arrives, the dialog shows the size the receiver is actually getting.

Live Source On/Off Switch
Each NDI live source has an Enabled switch in its Set Live Parameters dialog. Turning a source off releases the receiver so the NDI SDK stops scanning for the (absent) sender — the deterministic way to drop CPU when a source is switched off at the wall. The setting is saved with the project, so a source left off stays off after a reload.
- The auto-reconnect search for a sender that drops out unexpectedly stays at full cadence, so a genuinely lost source still reconnects on its own.
- The Enabled switch is the operator's explicit lever for a source that is meant to be off.
New in 3.2: this switch resolves the "NDI source switched off → high CPU" case.
One Stream, Many Placements
Placing the same NDI source several times — four picture-in-picture windows of one camera, say — costs one receiver, not four. The clips that show one stream share a single receiver on the engine: the stream is received, decoded and uploaded to the GPU once, and every placement draws from that picture with its own position, size, effects and warping.
- In the clip's Inspector, the Live section says Receiver shared with … on every placement except the one carrying the receiver. Nothing needs to be set up — clips share automatically when they name the same device, stream and format.
- If the carrying clip is removed, stopped or switched off with its Enabled switch, another placement takes the receiver over on its own within a moment.
- The escape hatch is
live.share-receiversin the system configuration (default on); off restores one receiver per clip.
New in 3.5: four PiPs of one 1080p sender previously ran four receivers and could drop the engine to 20-30 fps at 80-90 % CPU.
Auto-Connect on Project Start
The stream and format chosen for each NDI clip are saved in the project and restored when it loads. The receiver itself connects when the clip is first needed — when the playhead reaches it or a cue plays it — and then stays connected. Only when Settings → System → Lazy media start (project.lazy-start in the machine's Documents\Exaplay3\config\config_system.json) is switched off — switching it off asks for the passkey — are all clips, NDI included, started when the project loads.
If the sender is not on the network yet, the clip keeps looking for it and connects as soon as it appears.
Multiclient
NDI is a network source: on a multiclient rig every machine that shows an NDI clip opens its own receiver for it. Each of those machines needs network reach to the sender, and each one's bandwidth counts.
NDI Performance
Approximate bandwidth per received stream with standard (full-bandwidth) NDI — the actual rate depends on the picture content, and every placement of one stream shares a single receive (see above):
| Resolution | Network bandwidth |
|---|---|
| 1080p/60 | ~125–130 Mbps |
| 2160p (4K)/60 | ~250 Mbps |
Use a dedicated VLAN or at least a managed switch with QoS for NDI traffic in professional environments.
NDI Output (Sends)
An NDI stream is an output like a monitor — you add one and assign it a screen:
- Open the STAGE tab, open a screen (the arrow under its card) and click the + beside the outputs of the PC that should send (Add an output). In the Add output dialog pick the type NDI — on a client PC it is the only type offered — and set the Name, the NDI name (the name receivers see) and the Render resolution; empty names default to the first free
NDI Output N/NDI N. - The new send appears beside that PC's monitors as an NDI box — a rectangle at its resolution, with rounded corners and a faint NDI behind its name. Click it and pick its Assigned screen — a send with no screen is grey and dashed and streams nothing. See The Stage.
- The NDI name can be changed in the send's panel. For a send on the machine whose engine the browser is connected to, the Render resolution can be changed there too, under Hardware; for a send on a client PC it stays the one set in the Add output dialog.
The stream becomes discoverable by any NDI receiver on the network as soon as the screen renders. What goes out:
- Its slice of the screen. A screen with only sends streams the whole canvas. A screen that mixes monitors and sends streams, for each send, the strip the Stage lays out beside the monitors — at the send's own resolution, without the monitors' picture.
- Several sends per screen are fine; each is its own stream with its own name.
- Video only. No audio travels with an NDI send.
- The screen's 2D warp, but not a VIOSO/dp calibration (that is applied to the projector window, and a monitoring stream wants the content).
- Opaque. The canvas alpha is dropped unless
ndi.send-alphais set in the system configuration. - At the engine's render rate (the frame rate the outputs actually present at).
- Only while it is in the show. A send taken out of the show (In show off) streams nothing and is not drawn on the Stage; its PC's inspector lists it under Not in show with Include.
The send's panel shows a Status line — streaming 1920x1080 @50 fps, canvas 1920,0 — and names the reason when it is not sending (the Medialooks NDI renderer missing, a slice that fell off the canvas after a resize). Two sends typed with the same name are told apart automatically (Name, Name 2).
Troubleshooting
| Problem | Solution |
|---|---|
| NDI sender not in the Stream list | Check the firewall (allow UDP 5353 for mDNS discovery, and TCP/UDP 5960 and up for NDI data). Discovery can take a moment after the dialog opens — use the dialog's reload button |
| The sender is listed but the clip stays black | Pick None in Stream, then pick the sender again — this makes the receiver reconnect |
| Dropped frames | Use a wired connection; NDI is latency-sensitive |
| High CPU from a source that is switched off | Turn the source off with the Enabled switch in Set Live Parameters — this releases the receiver so the SDK stops scanning for the absent sender |
| Frame rate drops with several placements of one stream | Every placement should say Receiver shared with … in its Inspector except one. If each says nothing, the clips differ in stream or format (check Set Live Parameters), or live.share-receivers is off |
| High CPU on receive, or several placements of one stream but you only need a smaller picture | Ask the sender for a lower resolution (a 720p sender costs less than half of 1080p to receive and decode) — the receiver cannot downscale the stream it is sent |
