Streaming Media

Streaming Media on Facebook Streaming Media on Twitter Streaming Media on LinkedIn

How to Simplify Complex Remote Productions With NDI, Microsoft Teams, and vMix

At present, Microsoft Teams and Skype for Business are the only two videoconferencing apps that support NDI. We have built our remote streaming solutions around Teams. Here's how it works.

Network Device Interface (NDI) is a standard developed by NewTek that enables compatible video products to deliver HD video over a computer network. NDI is royalty-free software and is suitable for use in a live production environment. As part of my Streaming Media University "Live Production With vMix" session, I explained how producers can use NDI in the context of a vMix workflow. The same principles apply in workflows with NewTek’s NDI switchers and other software switchers that support NDI, like OBS.

Using vMix in Remote Productions

vMix software plays many roles as an all-in-one video switcher, recorder, and streaming encoder. In addition to these three main functions, it is also a very capable audio mixer, graphics generator, and media playback program. As the owner of SLV Live (, I have the choice of which hardware and software solutions I use in my productions. Our work varies, as we collaborate with more than 100 clients a year, all of whom have different sets of needs. vMix is the solution we build most of our solutions around, although sometimes we pair it with external hardware solutions when we need features like auto-mixing on a soundboard or the low latency of a hardware SDI switcher.

These days, we rely a lot on videoconferencing tools like Zoom, Microsoft Teams (Figure 1, below), Google Meet, and vMix Call. These four services are used to bring in remote presenters in a real-time production. Then, we use vMix to switch the production and stream it.

Broadcasting over NDI in Microsoft Teams

Figure 1. Broadcasting over NDI in Microsoft Teams

We typically use IBM (formerly Ustream) for our live streams, and Vimeo Live is our backup. If all we did was webcast the videoconference services’ default gallery views, we wouldn’t be adding much value for our clients. So we treat each participant as a discrete video source, akin to a traditional dedicated video camera feed, and composite our own multiview looks. NDI is one of the tools we use to build out our offerings—but it didn’t start that way for us.

Leveraging NDI

The first job that required us to deploy our big remote production workflow was a court case in which the judge, counsel, witnesses, experts, and court registrar were all communicating in real time over Zoom. We used our equipment to remix and stream, to the public and press, a video feed in which our producer could control who was visible at all times. Typically, there were between two to six participants who needed to be seen at the same time.

Our solution required the client to dedicate eight computers to connect to Zoom and to pin one participant each. We duplicated the signal via HDMI to a vMix system that had an eight-input video capture card, and the producer created a set of looks for all of the countless combinations of participants who needed to appear simultaneously at any given time. This workflow performs well for the clients and has been extremely stable for several months of daily use. But I discovered a simpler approach using NDI.

Instead of connecting an SDI cable or an HDMI cable, you can connect multiple computers and NDI-supported devices together over an Ethernet connection. Ethernet and network switches are very inexpensive compared to SDI cables.

In this alternative approach, you use free NDI tools or vMix Desktop Capture to send the signal from one computer to NDI-capable video switching software such as vMix or OBS. You can repeat this process on multiple devices and turn each computer on your network into an NDI video source. This solution works great for videoconference services that don’t natively support NDI and for when you want to capture multiple participants fullscreen on their own screens and send the feed to your video switcher.

Working With Microsoft Teams and NDI

The downside of using this workflow with a videoconference service that doesn’t support NDI natively is that your signal isn’t a clean feed. The name that identifies each participant is part of the signal that is sent to you, along with any pop-ups that enter the screen, including the chat. A bit of cropping of your input can cut off the name, but pop-ups are a real hazard that can be difficult to deal with. What’s more, working with multiple computers at the same time in order to isolate individual speakers requires, of course, multiple computers.

So, while consumers like the ease of use of Zoom, video producers prefer using videoconference services that natively support the NDI protocol, because it allows them to input each of the participants as a clean, isolated NDI input in their software.

At present, Microsoft Teams and Skype for Business are the only two apps that support NDI. We have built our solutions around Teams (Figure 2, below).

Adding an NDI Microsoft Teams source as an input in vMix

Figure 2. Adding an NDI Microsoft Teams source as an input in vMix

As I write this article, my assistant is recording a panel discussion over Teams. There are five panelists, and on one monitor, he has the Teams session open so he can communicate with the panelists. On the laptop, he has vMix open, and each of the five panelists has his or her own clean, isolated video input. Then he switches the video among one, two, and all five panelists at a time, depending on who is speaking. For this workflow, our production gear is a single laptop with a single second monitor, vMix software, and a Teams subscription with NDI enabled.

A lot of our clients may already have their own Teams subscription. But as a producer, I want control, so I have my own subscription to send the meeting invites, manage the recording, and enable NDI. Many client accounts will not have NDI enabled by their administrators (see Figure 3 on the next page), so you don’t want to assume that it is going to automatically be available just because you are on a Teams call. Microsoft 365 Business Basic is only $5 per month and includes online video meetings of up to 24 hours as well as cloud recordings.

One of the best parts about bringing a Teams call into vMix over NDI is that the audio is very easy to manage. If you had a Zoom call on your same system, you would need to use virtual cables software to patch your audio (

With Teams and NDI, the audio from all of the participants, except for yourself, is embedded in each Teams feed. So I normally just turn off the Teams speaker and monitor my audio through vMix. I can still speak with the participants using my headset mic, and my audio is available over NDI as a “local” input. Having my audio separated from the general mix is a nice feature, because if needed, I can speak with the participants while they are live, and my voice won’t be heard on the recording or live stream.

Once you have an NDI connection with Teams—which sometimes requires toggling the start of the recording, starting the NDI broadcast, and re-enabling the NDI setting in the Teams app settings (Figure 3, below)—you can switch which participant is coming in on a specific input (Figure 4, below Figure 3). I typically establish one connection for each of the participants, but having the ability to switch a connection on-the-fly can come in handy too. You can even add an NDI input that is tied to the active speaker.

Microsoft Teams Administrator settings to enable NDI to be available in individual meetings

Figure 3. Microsoft Teams Administrator settings to enable NDI to be available in individual meetings

This shows a shared-screen Microsoft Teams input and the ability to switch which source is coming into a specific NDI input in vMix.

Figure 4. This shows a shared-screen Microsoft Teams input and the ability to switch which source is coming into a specific NDI input in vMix.

The quality of the Teams signal varies, just as it does with all videoconference services that use WebRTC. Once, I had a connection that was 1920x1080, but typically, the highest-quality signal is 1280x720. Having more participants on a call tends to result in a lower individual resolution. I can see this in vMix by clicking on the cog on an individual input that displays the resolution.

The resolution can and does change during calls as internet connections fluctuate. Normally, this isn’t a big issue on a larger panel discussion where no one is shown full­screen and they are resized to smaller video signals within a multi­view display, but it does leave something to be desired when we want a higher-quality fullscreen signal. To be fair, this is a Teams restriction and not a limitation with the NDI protocol.

Sharing PowerPoints in This Workflow

One other workflow consideration that you need to be aware of with Teams is that there are three share options for presenters (Figure 5, below). The Desktop share option allows the presenter to select which screen to share, if the user has multiple connected monitors. It can also generate an NDI signal, but depending on the user’s desktop settings, it may or may not show the Windows taskbar and runs the risk of accidentally showing whatever content ends up in the screen that is selected.

Available share options

Figure 5. Available share options

I prefer to instruct my presenters to share the second option, a Window, and to select the specific application they want to share. For PowerPoint, this would be the fullscreen Power­Point Slide Show, and it would still allow the presenters to see their presenter view notes. This workflow generates a clean NDI signal, but presenters first need to launch their PowerPoint presentation before they toggle the Teams share function for it to be available. This can also get a bit tricky for users to manage if they only have a single computer monitor and aren’t comfortable using the ALT+ Tab Windows shortcut to move between applications.

The third option is named PowerPoint, and it allows the presenter to upload a PPTX file. Unfortunately, this workflow does not generate an NDI signal, and thus is to be avoided.