Skip to content

NDI

media.play.ndi

Serves a running stream to NDI receivers. The tariff grid accounts for this capability per stream: one advertised source can serve multiple receivers. Output requires both the streamer's listener and NDI output permission on the stream.

Transport

NDI High Bandwidth with SpeedHQ, served over TCP. Use Auto on the receiver. The shared server catalog uses TCP 5960; media ports are allocated automatically from TCP 5961–6060. Each advertised source needs one media port. Local discovery uses mDNS on UDP 5353.

NDI output has no authentication. Restrict network access to trusted receivers; no playback token is requested. This capability does not provide NDI HX or a push to a preconfigured destination address.

Track preparation

The NDI encoder uses prepared raw tracks from a running stream:

  • Video: the first suitable v210 or uyvy422 track in MediaInfo order.
  • Audio: the first suitable track in one of these formats:

    • 16-bit PCM
    • S32P
    • FLTP
  • No audio: video-only output is supported.

Compressed tracks are skipped. Configure compressed-input decoding and the required pixel format separately in the media pipeline, as for SDI output. Raw tracks are not combined, and NDI output does not offer selection by track number. An existing stream can retain compressed tracks for other receivers and add suitable raw tracks.

Configuration

Configure settings through central. With the current cluster setup, pin the stream to a specific server: give the streamer a unique labels value of ndi-studio-a and the stream required_ndi-studio-a. Enable the listener on that same server. Giving the label to multiple servers permits placement on any of them. See the Agora guide for the procedure.

Fragment of the applied streamer configuration with raw SDI input:

listeners:
  ndi:
    bind: 192.168.10.20
    port: 5960
    ports: {from: 5961, to: 6060}
    queue: 4
streams:
  - name: conference
    inputs:
      - sdi:
          device: /dev/video0
          pixel_format: v210
    ndi_output:
      quality: 90

Replace the address and device with your own. For compressed input, prepare raw tracks with the transcoder instead. Connecting an NDI receiver does not start a stopped stream.

Field Value and constraints
listeners.ndi Omitting the section disables the listener.
bind Optional interface IP; when omitted, all IPv4 interfaces are used.
port Catalog port, default 5960; must be outside the media range.
ports.from, ports.to Inclusive media port bounds, default 5961 and 6060.
queue Positive queue limit per client in complete pictures, default 4; a pair of fields counts as one picture.
ndi_output Omitting the section disables NDI playback of this stream.
quality Fixed SpeedHQ quality from 52 to 99, default 90, with no adaptive adjustment.

Allow receivers to access the catalog and media ports. A non-default catalog port may prevent discovery by IP alone in NDI Access Manager.

Playback and status

Select server-name (stream-name) in the NDI receiver. The receiver opens the connection; multiple receivers share one NDI encoder. The first viewer starts the encoder, and it stops after 20 seconds without viewers. The advertisement and allocated port remain until output is disabled.

State appears under ndi_output in stream statistics. address and viewers give the media port address and admitted viewer count; encoder_running and signal indicate encoder status and whether a complete picture was prepared in the last second. error describes preparation or publication failures.

Connections remain open when frames stop arriving; NDI output does not generate black video or silence. Prepare a slate through the stream backup. A slow client's bounded queue first drops complete pictures; 5 seconds of continuous dropping disconnects that client. Disabling ndi_output or the listener immediately closes clients and removes advertisements.