Skip to content

Instantly share code, notes, and snippets.

@Jimmyson
Last active November 5, 2022 01:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jimmyson/6121d47ee4e556f90c3d25ce798d6272 to your computer and use it in GitHub Desktop.
Save Jimmyson/6121d47ee4e556f90c3d25ce798d6272 to your computer and use it in GitHub Desktop.
NDI at PAX

Broadcasting Gameplay at PAX

This document aims to detail...

What is NDI

NDI (Network Device Interface) is a recently developed communication protocol that travels over the TCP/IP stack, and send real-time low latency audio/visual packets to devices over gigabit ethernet.

Network Device Interface - Wikipedia

Typically, NDI is a broadcast and subscribe based protocol. Active servers or devices will broadcast out their service for discovery without any audio or visual content. When a client has connect, NDI will then commence broadcasting its content direct to the subscribed client.

NDI have variations of its protocols, and the features of each. See the above Wikipedia link.

Capturing the display

NDI doesn't really care what audio or visual information it is boardcasting. So software needs to be deployed to be able to generate the information.

As NDI has been out for a while and publically avaliable, several solutions exist that allows various devices from Physical Cameras to software driven capture to send out an NDI signal.

OBS is well known as a desktop capture software, and the NDI protocol has been added to the software via a OBS extension. NewTek (the developers of NDI) haav also created a toolset that allows a reference implentation of desktop capture and monitoring.

As we are working with software, NDI would need runtime libraries installed to support the Protocol.

Managing Multiple Broadcasting Devices

When broadcasting multiple active devices to a lesser amount of devices (such as signage), there needs to be a device setting in the middle that can delegate what is forwarded and shared, much like a router within a typical network.

An NDI router will be able to sit in the middle between broadcasting deivces, and ingest clients. The router would need to be configured to allow this dynamic routing to be set.

The router would first need to discover what servers are currently broadcasting, and set each channel accodingly. The router will also provision multile output channels for the device for clients to connect to. Once each is prepared, the router can then be configured to send and forward a desired subscription towards a provisioned output channel.

How can we prepare this at a place like PAX

There are 3 roles of responibility for deploying this at a place like PAX

  1. A player may want to share their play session with the broader event, but have minimal latency impacts to their gaming session
  2. An audience would like to watch and engage with the active play session, whilst being force to wait outside of the play zone, as a form of immersion.
  3. A moderator would need to monitor and oversee the broadcast content, with the responsbility of changing what is broadcasted to the audience, and what devices are active on the network.

Sharing the Content

Any active machine plugged into the network would need to have the NDI runtime installed on the machine to support the broadcasting, along with a Screen Capture to ensure the visual display is being emitted into the NDI feed.

We need to ensure the NDI Screen Capture software is present on the machine.

Solutions

  • OBS with obs-ndi + NDI Runtime
  • NDI Screen Capture (NDI Tools)
  • NDI HX Screen Capture (NDI Tools)

Ensuring consent

To cover any legal liabeties, we must consider updating the login/seat allocater tool to be the gatekeeper to authorizing the Screen Capture. A Terms-of-Service dialog may need to be shown, clarify responsibility of the player, and action taken upon broadcasting of questionable/personal material.

We must assume the player does not want to share their play session with the broader LAN and PAX audience.

If the player wishes to share there game session, they can confirm (or tick a box) on the computer, and this will activate the Screen Capture software.

When a play session has wrapped up, the screen capture software is then terminated.

Broadcasting the Content on Signage

Devices broadcasting content would require very little interaction. These devices would only need a base Operating System running, along with the NDI runtime and a NDI Monitor software. This monitor will need to be configured to connect to a specific NDI broadcaster/server

Several solutions exist:

  • NDI Studio Monitor (NDI Tools)
  • NDI Simple Monitor (Open Source & Linux targeted) Link

Routing the Content

Several solutions exist:

  • NDI Router (NDI Tools)
  • NDI MultiView (BirdDog)
  • NDI-Controller (Open-source) Link

Developing with NDI

There is an NDI SDK, but one must register with NewTek to be able to download it....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment