This tutorial was updated on May 25, 2020 to reflect the latest versions of the technologies mentioned.
As a technical content streamer, one of the most difficult tasks for me to accomplish was with having guests participate on the stream. To be clear, I don’t mean having guests participate in the chat, I mean having them on the stream with their video, audio, and sometimes screen.
Think about it. You’re streaming to Twitch or another platform using Open Broadcast Studio (OBS). You’re probably streaming your video and audio, but what happens if you need to include a guest? Do you do a Zoom meeting and screen-grab their video using OBS? If you’re capturing the guest video, how do you pipe their audio? What happens if they need to share their screen as well?
This can turn into a complicated mess.
In this tutorial we’re going to see how to have guests on your stream without a bunch of complicated hacks. We’re going to see how to use a network device interface (NDI) with Skype for easy inclusion into Open Broadcast Studio.
While capturing part of a screen and redirecting speaker output in OBS works, it is inconvenient and becomes more troublesome when you need to manage multiple guests and potentially their screens.
Instead, a company named NewTek created software that allows network devices to be treated as video sources. This is what they’re calling network device interfaces (NDI). Think IP cameras that record video, but aren’t physically connected to a computer like a web camera.
Open Broadcast Studio (OBS) can add NDI sources with minimal effort if the following is available on your computer:
Both the runtime and the extension can be downloaded for free from GitHub.
After installing both, you can load Open Broadcast Studio and you should be able to find NDI Source as a source option for your scene.
When it comes to the streaming world, the most common use-case for NDI with OBS is to transfer video from a gaming computer to a streaming computer on the network to prevent the gaming computer from having to waste CPU and GPU resources for transcoding audio and video, then uploading it.
If you wanted this functionality, you can configure OBS to be an output source.
To configure OBS as an output source, choose Tools then NDI Output Settings from the menu bar from within OBS.
Using OBS as an output for video on the network is useful, but won’t get you very far when it comes to having guests participate in your Twitch streams. This is because NDI doesn’t work too well with sources outside of the local network.
This is where Skype comes into play.
Skype is a great video chat and video conferencing tool. It offers high quality video calling and screen sharing between participants on the call, similar to solutions like Zoom and WebEx.
What’s particularly nice about Skype is that it offers NDI functionality, if enabled.
This means that the the host can treat each video on the call as a separate and localize NDI source. With each participant on the call as a separate NDI source, each can be easily added to OBS without any hacks.
Within Skype, go to Preferences, then Calling, and then Advanced.
You’re going to want to enable the Allow NDI Usage toggle. When in a call with participants, they will likely see a message within the call that you may be recording them since you’ve enabled NDI.
When a Skype call is taking place, check the NDI Source within OBS and each of the tracks should be available as options. These options will be unavailable when there is no call happening.
Some things to note:
All three are easy to fix if necessary.
When it comes to the screen sharing track, if you don’t need the audio, just disable it after adding the source. A reason you might want to disable it is if you’re adding both the video and screen of the same call participant. The audio from the same person’s video and screen may produce an echo otherwise.
If you’re using Windows 10, there’s a good chance that Skype was included with your installation. If this version of Skype was installed through the Microsoft Store, you’re using a sandboxed version of Skype that doesn’t properly make use of NDI, even if it is available. Uninstall the Skype for Windows 10 and download the official Skype package from the Skype website. The version issues should only affect Windows computers that host the call.
The feed resolution changes are annoying, but also easily fixable.
Right click on the NDI Source and choose Transform.
You’ll want to change the Bounding Box Type to Scale to Inner Bounds. After making this change you won’t have to worry about the feed changing sizes throughout your stream. You can learn more about this in the Skype FAQ.
If you’re using Streamlabs OBS rather than the original OBS, you’ll probably notice that there are no scaling to bounds options when trying to make a transformation. This doesn’t mean that the problem with resolution changes doesn’t exist in Streamlabs OBS because it definitely does. Instead, we can correct the problem by adding a filter to our NDI sources.
Right click on the NDI Source in Streamlabs OBS and choose Filters.
To prevent the NDI source from automatically changing resolution depending on bandwidth conditions, we need to define a Scaling / Aspect Ratio filter. You’ll likely want to pick an aspect ratio that best reflects the source material.
It is common for webcam sources to be 16:9 which would translate to some flavor of 1080p, 720p, etc. However, if your NDI source is from display sharing over Skype, that aspect ratio may be different.
You just saw an option for including guests in your Twitch, Mixer, or similar streams, without jumping through hoops when it comes to video and audio for your participants. Making use of the NDI functionality that Open Broadcast Studio (OBS) and Skype offers is a huge convenience for capturing video and audio feeds from remote participants.
While I haven’t tried it, Wirecast should have NDI functionality, which makes it an alternative to OBS.