Using Skype & NDI for Virtual Productions

Who would have ever thought I’d be writing about how Skype might be a great option as a tool in our industry? Honestly, not me! But it happened. Microsoft added a pretty incredible feature to Skype that changes the game as far as I’m concerned. That feature is native NDI outputs of every single member of a Skype call. Yup, you read that right. Every single person on a Skype call on your computer will have an individual NDI stream created from their camera and audio feed. You can also get a shared screen as a separate NDI stream. All of these can be captured in your favourite compositing app like TouchDesigner or OBS to prepare a really nice looking and professional virtual production without too much extra gear. In this post, I’ll walk you through the basics of getting this setup.

Install Skype

The first step is to install Skype for Desktop. If you’ve bought a computer recently, it may already have Skype installed. Depending on what version of Windows you’re running, you may also have a strange and slightly weaker version of Skype installed. So step one is make sure you grab the official and full Skype for Desktop app from Microsoft:

Once you’re installed and logged in you’ll be looking at regular Skype for Desktop:

Activate NDI in Skype

Now we have to proceed to enable the secret NDI backend of Skype. It’s not actually a secret, but it’s news to me! To do this we need to go to the Settings menu, then Calling and then Advanced. In this menu, we need to turn on Allow NDI usage. See the gif below:

We’re basically ready to go! It’s pretty impressive how seamless Microsoft has made this integration. Once that button is on, you can go ahead and start a call to test this out with.

Call on Skype

I’m going to go ahead and start the call from the machine I’m going to be capturing the Skype NDI streams on. I’ve heard a few things that mention that if you’re having trouble getting this setup, try to change the order of who’s calling whom. You’ll know everything is so far working correctly if at the top of the call you see an NDI broadcasting message like this:

Catch the NDI

Here’s where the magic happens. Once you’ve got your call setup and you’re seeing the NDI message at the top of the call, you can go into TouchDesigner (or any other NDI-capable application, like OBS) and you’ll see all the different NDI streams being created dynamically by Skype:

It’s really that easy! And what you’ll notice is that as more callers join, you’ll get more and more NDI streams appearing that start with “Skype –“. Those are all the Skype streams. You also get access to both your own local camera/microphone as well as a nice automatic Active Speaker stream, where Skype automatically switches between camera feeds based on who is talking. All of these different streams can be easily access by looking through your available NDI sources like so:

Get Our 7 Core TouchDesigner Templates, FREE

We’re making our 7 core project file templates available – for free.

These templates shed light into the most useful and sometimes obtuse features of TouchDesigner.

They’re designed to be immediately applicable for the complete TouchDesigner beginner, while also providing inspiration for the advanced user.

Screen sharing

From my limited amounts of testing, it does seem that screen sharing is supported over Skype’s NDI infrastructure, which is great. One downside is that it seems only one person’s screen can be shared and viewed through the NDI stream at a time. When I did a test with a 2 person call, the screen sharing stream wasn’t labelled with the name of the originator, which leads me to believe only one screen can be shared at a time. It’s not a deal breaker, but something to be aware of. I’d love to be proven wrong on this point, as I’d love to setup multiple screen shares coming in over Skype into my NDI capture…but I might have to keep dreaming about that!

Wrap up

As trivial as it may seem, this is a pretty huge development. Most people that I know working through these kinds of virtual production situations are stuck trying to wrangle Zoom calls or Discord calls. In those situations, you’re left trying to screen capture the active call and hoping that the person’s position on the screen doesn’t change. Neither of these allow for a really high quality production. Using Skype to host the high quality video calls and receiving clean and HD NDI streams from each of the callers allows you to quickly, easily, and reliably setup a very high quality virtual broadcast. I know we’ll be using this from now on when we have guests on our Twitch live stream, as using Zoom and trying to move the Zoom window around was a total pain. Hopefully this helps you setup some professional virtual broadcasts and makes your online work a little less painful! Enjoy!