← Theatre Networking

NDI (Live Video)

NDI is a way of sending multiple video streams over a network. It can be a cost-effective way of using live camera feeds in your show using just a laptop and a smartphone, or a good way to get the same video to multiple places. Each broadcasting device makes a video stream on the network which any other device can see.

For this example we will get a live video feed from a phone to display on a screen through QLab. This will cover Android and iPhone. The steps are very similar but will look a touch different.

Equipment List:

  • Smartphone
  • USB-C/Lightning Ethernet adaptor for phone
  • Ethernet adaptor for Mac if it doesn't have one
  • (Optional) Network Switch
  • Ethernet Cables

Step 1: Setup

To allow multiple devices to connect to this network we will use a network switch; however, for small applications it would work to connect the devices directly.

Through a network switch

Mac (QLab) 10.0.0.2 255.255.255.0
Network switch Unmanaged: no address
Phone 10.0.0.3 255.255.255.0
An unmanaged switch just passes video between the devices, so it has no address of its own. The Mac and phone both start 10.0.0 and share the subnet 255.255.255.0.
  1. Connect the Mac and phone to the network switch.
  2. Download an NDI camera app. I personally use Camera for OBS Studio on iPhone.

(Note - a Mac can have multiple Ethernet interfaces/dongles connected at once. So if using OSC at the same time you can just use 2x separate network connections.)

Step 2: Addressing the Mac

For this example we will use the 10.0.0.x range with subnet 255.255.255.0.

In this example the Mac is 10.0.0.2 and the phone is 10.0.0.3.

  1. On the Mac, open System Settings > Network and select your Ethernet adaptor > Details.
  2. Disable Limit IP address tracking.
  3. Then click TCP/IP in the sidebar.
  4. Next to Configure IPv4 change the drop-down to Manually.
  5. Then fill in the address and subnet.
  6. If it asks for a DNS server, use 8.8.8.8 and 8.8.4.4
macOS network Details window with Limit IP address tracking turned off
macOS TCP/IP settings with Configure IPv4 set to Manually, IP address 10.0.0.2, subnet mask 255.255.255.0 and no router

If connecting directly or with an unmanaged switch it does not matter that you are not addressing or using a router - by addressing the devices like this they can still talk to each other.

Step 3: Addressing the Phone

For an iPhone:

  1. Connect the Ethernet adaptor to the phone and plug it into the switch.
  2. Go to Settings > Ethernet, then tap your adaptor. Ethernet only appears in Settings while the adaptor is connected.
  3. Tap Configure IP and choose Manual.
  4. Enter the IP address (10.0.0.3) and Subnet Mask (255.255.255.0). Leave Router blank.
  5. Tap Save.
‹ EthernetConfigure IPv4Save
Automatic
Manual
BootP

Manual IP

IP Address 10.0.0.3
Subnet Mask 255.255.255.0
Router Leave blank
Illustration. The screen looks slightly different between iOS versions.

For an Android:

  1. Connect the Ethernet adaptor to the phone and plug it into the switch.
  2. On a Samsung phone go to Settings > Connections > More connection settings > Ethernet. On most other Android phones go to Settings > Network & internet > Ethernet (sometimes under Advanced).
  3. Turn on Use static IP. Some phones only let you save this with Ethernet switched off, so turn Ethernet off, save the settings, then turn it back on.
  4. Enter the IP address (10.0.0.3). If it asks for a network prefix length instead of a subnet mask, enter 24 (the same as 255.255.255.0). Leave the gateway blank if you can.
  5. Save.
←Ethernet
Use static IP
IP address 10.0.0.3
Network prefix length 24
Gateway Leave blank
DNS 1 Leave blank
Illustration. The screen looks slightly different between Android phone makers.

Not every Android phone lets you set a static address for Ethernet. If yours doesn't, connect through a router instead of a switch. The router hands out addresses automatically, so set the Mac's Configure IPv4 to Using DHCP and both devices will end up on the same range.

Step 4: QLab Setup

First we need to configure our display outputs. This differs slightly with and without a video license.

  1. Connect your display. In this example I am using an iPad but any display is the same.
  2. Go to Settings > Video.
  3. Under output devices you should see the Mac and the other screen.
QLab Video settings, Output Devices tab listing the Built-in Retina Display and a Sidecar Display (AirPlay)
  1. Then go to output routing. If both outputs aren't shown here, click New Output Route > New output route with device and choose the device you want.
QLab Output Routing tab with Output 1 on the Built-in Retina Display and Output 2 on the Sidecar Display

Under Video Outputs there is a slight difference.

For unlicensed users, select your second display from the drop-down at the top.

Unlicensed QLab Video Outputs tab with Video output for all cues set to the Sidecar Display

For licensed users, ensure either your device shows up as a video stage or click New Video Stage and choose your display under Stage with output.

Licensed QLab Video Outputs tab with Stage 1 on the Built-in Retina Display and Stage 2 on the Sidecar Display

Now for the camera.

  1. Start the video stream on your app of choice with everything on the network.
  2. Go to Video Inputs in the QLab settings.
  3. Create a new patch or repurpose the default one.
  4. Under Device, click the drop-down and click Scan for NDI Sources.
  5. Click off the drop-down, then click back.
  6. Your phone should now show as an option.
  7. Select it, then click Monitor to check it is working.
QLab Video Inputs tab with the default Patch 1 set to the MacBook Pro Camera
QLab Video Inputs tab with the Device drop-down open and Scan for NDI Sources highlighted
QLab Device drop-down showing Scanning for NDI Sources
QLab Device drop-down listing the phone under NDI sources
QLab Monitor Input window showing the live feed from the phone

Step 5: Output

Now, in your cue stack, create a Camera cue, then click I/O and ensure your input and (if on a licensed version) video/sound outputs are set.

Unlicensed QLab camera cue I/O tab with the NDI camera as Video Input and the Sidecar Display as the fixed Video Output
QLab camera cue I/O tab with the NDI camera as Video Input and Stage 2 as Video Output

Then play the cue and voilà! Live cameras in QLab.