How to host a live streaming with multiple participants using OBS Studio and Skype
Published Apr 08 2020 05:59 AM 86.7K Views
Microsoft

This time I won't blog about development content, but I wanted to share a solution to a problem that my team has faced in the latest days for which I wasn't able to find much documentation.

 

A little bit of context: as you know, conferences and events play a big role in AppConsult activities and it's one of the experiences that we value most of our job. Unfortunately, due to the COVID-19 situation, they're also one of the first things that have been shutdown, since mass gatherings are one of the most dangerous things to do during a pandemic. As such, we have decided to try a new way to reach developers and communities, by launching a new vlog (or a video podcast, as you prefer). In the next weeks we're going to live stream short episodes (20-30 minutes), hosted by our team and with various guests, to share our experience with many of the technologies we work with, either from the Windows and the Azure side: MSIX, WinUI, Azure Functions, .NET Core 3.0, React Native are just a few examples.

 

As such, we have started to setup an infrastructure to support this effort (based on OBS Studio and Skype), so that we could stream the episodes on Twitch, Mixer and YouTube and also record them, to make them available for anyone who can't follow them live.

 

However, our first test of the setup failed miserably. During the test call we started to see lot of issues related to echoes and "double audio" when the Skype call was hosting 3 or more people. This was a big blocker for us, because we were planning to have multiple hosts and guests in the same episode. After some tests and investigations, we finally found a solution. The goal of this post is to explain you how you can enable a live streaming with multiple Skype participants using OBS Studio.

 

Setting up the environment

When you want to have multiple remote people in the same streaming, the best combination is OBS Studio with Skype. OBS Studio is one of the most popular broadcasting applications, used by millions of streamers all around the world. I won't go through all the steps on how to setup OBS Studio. It would be out of scope for this post, I'm giving for granted that you already know the basics on how to use this streaming platform. There are tons of tutorials on Internet, including the official documentation. For the purpose of this post, it's important to know just that OBS Studio is one of the best (free) software on the market to turn your machine into a streaming studio. You can setup multiple scenes and each of them can contain different content: your webcam feed, screen sharing, videos, pictures, etc. During the streaming you can switch from one scene to another, in case you need to have different layouts based on the situation: for example, you may want to have a scene only with the camera feed; one with the camera feed and screen sharing; etc. In the end, OBS Studio can connect with the most common streaming platforms (Mixer, Twitch, YouTube, etc.) so that you can directly stream your content to a worldwide audience.

 

ObsStudio.png

 

Skype doesn't need any introduction, since it's one of the most popular communication software in the market. The biggest advantage of Skype is that it supports a technology called NDI, which allows to handle every person connected to the call as a separate feed, that you can manipulate in your favorite broadcasting tool. Did you ever wonder why, despite the rise of other platforms like Zoom, Skype is still the most widely used communication software when it comes to TV productions, like talk shows? Skype is the only free application on the market which supports NDI, which allows TV engineers to take the video feed and incorporate it in the tools they use to handle the TV broadcast. Thanks to this feature, we can achieve the same goal with OBS Studio, allowing us to incorporate the video feed of the various people connected to the call into our scenes. In the image below you can see the final goal we wanted to achieve: not just streaming a Skype call, but having a more effective and good-looking render, thanks to the awesome graphic that my brother has designed.

 

PodcastScreenshot.png

 

These are the tools you need to achieve this goal:

  • OBS Studio
  • Skype for Desktop. You can't use the version which comes built-in with Windows 10, since it doesn't include NDI support.
  • obs-ndi. This is a tool which installs the NDI runtime and the OBS plugin, which is required to add a NDI source to your scenes.

Setting up Skype

Once you have installed Skype for desktop, open it and login with your Microsoft Account. Then open the Settings (you can find them by clicking on the three dots near your profile name).

 

Settings.png

 

Move to the Calling section and choose Advanced:

 

Advanced.png

 

You will find a section called Content Creators, with the option to turn on the NDI support:

 

NdiSettings.png

 

That's it. Now you'll need to start a call with all the people that you want to include in your streaming. They won't need to install anything or turn on NDI support as well in Skype. It's important that just the machine which will be use for streaming runs Skype with NDI support enabled.

 

Setting up OBS Studio

Once the call is up & running, you can open OBS Studio. If you have installed properly the plugin (and rebooted the machine), when you click on the + sign in the Sources section you will find a new item called NDI source:

NdiSourceObsStudio.png

 

Once you have created a new source, you will see a panel to configure all the options.

 

NdiSourceSetup.png

 

The most important one is Source name, which is a dropdown that will list all the NDI sources that are detected from Skype. Each source will be prefixed with the name of your computer, followed by the (Skype) keyword. Typically, you will find the following sources:

 

  • Skype - (Local) refers to the local video feed. If you have initiated the Skype meeting from your machine, this is the one you have to use for getting your audio and video.
  • Skype - Active speaker always contains the feed of the speaker who is actively speaking. Unless you need a special configuration, you will hardly use it. The typical scenario, in fact, is to place each person included in the call in a specific area of the scene. However, it could be useful, for example, if you have a scene with a video or a screen sharing session and you want the NDI source to always display the person who is talking, since there isn't enough space to include everyone.
  • Skype - live, followed by the Skype id of the user. You will see multiple sources like this, one for each person involved in the call (except yourself).

Once you have selected the source you need, press OK. A new item will be added to the scene and, if everything goes well, you should see the video feed of the selected person. Now you can drag and drop it around and place it in the area which fits best your scene. For example, in my case, the graphic created by my brother has 3 dedicated slots for the video feeds:

 

Overlay.png

 

These are the three areas where I placed the three NDI sources.

 

Tip: sometimes you may see that, after an event (like one of the people in the call changing the camera or turning off or on the video feed), the size of the area in the scene changes. To avoid this behavior you can follow the tip provided by the Skype team:

 

  1. Right-click the NDI source, and then select Transform
  2. Select Edit Transform.
  3. Change the Bounding Box Type to Scale inner bounds.

Solving the echo problem

That's it! Now you should have in your scene the video and audio feed coming from each people connected to the Skype call. Since they are made available to OBS Studio as different sources, you are free to move them, resize them, rotate them, etc. It's a much more powerful approach than using screen sharing to share the content of the Skype application. Everything looks great. You're ready to start the show! You press the Start streaming button, you start the live show but... after a few seconds you start to receive lot of complains from your viewers! The reason is that they're going to hear a sort of echo or "double audio", like if the voice track is duplicated, but with a delay that makes it look like an echo.

 

After a bit of investigation, we found out that the reason is that Skype injects into each NDI source not just the video, but also the whole audio feed. This means that, if you have 3 people connected to the call, each of them will push to OBS studio not just their voice, but the whole audio track, including the voice of the other 2 participants. This is the cause of the echo effect: every person in the call is basically saying the same sentence two or three times but, due to the network delay, they aren't perfectly in sync.

 

The way to solve this is to make sure that OBS Studio outputs to the audio stream only a single NDI source. All the others can be turned off, since a single NDI source will contain the voice of all the people involved in the call. In order to do this, click on Edit in OBS Studio and choose Advanced Audio Properties. You will see a window like this:

 

AdvancedAudioEditor.png

 

The tool will list all the active audio sources in the scene, including your desktop audio, your microphone and each NDI source. Take a look at the Tracks column. You can use it to specify on which track you want to assign an audio source. This setting is important if you're planning to record your stream, since it will allow OBS Studio to store the various audio sources in different tracks. This way you will get more flexibility if you're planning to do some post-processing of the video. However, it's useful also in the streaming scenario. Track 1 is the one used by OBS Studio during streaming. Every audio source which is part of Track 1 will be also streamed to your viewers. As such, it's enough to uncheck the Track 1 in all the sources, except one NDI source, to solve our problem. You can see an example in the screenshot above: all the Track 1 checkboxes are turned off, except for the one related to Matteo, which is the NDI source connected to my local Skype feed.

 

That's it! Now your viewers will be able to enjoy your live stream with multiple Skype guests without any echo problem.

 

Wrapping up

If you're planning to start a live stream and to have multiple remote guests, OBS Studio and Skype are a great couple. However, as soon as you start the streaming, you will hit some audio issues, caused by the way how Skype works. In this post you have learned how to handle this situation and how to setup OBS in the proper way. Now that your scene is setup, all the settings will be stored. Don't worry if you will see empty areas instead of the NDI sources when you will reopen the application. This is expected if the Skype call isn't active, since there won't be any live feed. However, OBS Studio has stored the information about the Skype account so, as long as you reuse always the same Microsoft Accounts, you're good to go. For this reason, if you're planning to invite guests to your live streaming, I suggest you to create a dedicated Microsoft Account and to ask to your guest to connect to the call using that one. This way, you won't have to reconfigure the scene every time you invite a different guest.

 

Happy streaming! We'll get back shortly with all the information to follow our new AppConsult podcast!

12 Comments
Iron Contributor

Great post Matteo!  Thanks for sharing!

Copper Contributor

Matteo

Terrific article.  My partner and I have conducted over 100 interviews during the past five months using OBS/Skype (see YouTube.com/CelebratingAct2). 

We have come a long way since the first episode, stubbing our toes along the way, and still not satisfied with two issues (the audio mix- why can't NDI give us synced video/audio feeds) and Edit Transform settings.  If there was a group inside or outside Microsoft that focused on getting the best out of what I consider to be the best of the online communication offerings (Skype far and away the best and easiest to use), I would love to participate and share what I've tried/learned.  I've tried them all (especially disappointing was Zoom).  Anyway, thanks again for a great article.

Art

Copper Contributor

Exactly what @Grfxart said — the NDI support is a nice thought, but the mixed-down audio and terrible (I mean AWFUL) sync problems keep Skype/NDI from being a truly good solution for this.

If Skype can give us a clean, embedded, and synced audio feed on each NDI channel, then it will be wonderful. Until then, it's a stop-gap at best, but no substitute for using a dedicated Skype or Zoom computer for each guest, with its own NDI and audio channel.

Copper Contributor

Hi, just trying to set up everything. Encountered one question: Do I have to set up all this for every call/recording/streaming again. I would love to create several scenes with everything already nicely designed but I only get the dni streams when a call is going on!? And ths IDs of the speakers change with every call....

Microsoft

Hello @ElioAdler , the trick we used in the past to handle this scenario was to create a dedicated Skype account for the guests that we invited to the show and invite them to login to the meeting using that account instead of their own one.

This way, the IDs of the people joining the meeting would have always been the same, meaning that OBS Studio could retain the configuration.

 

Of course this works only if you have a fixed set of hosts and, eventually, one guest that rotates. If you need to keep changing the speakers, I'm afraid you will have to reconfigure the NDI sources every time.

Copper Contributor

Hi @Matteo Pagani ,

 

I am using Skype and OBS to stream some F1 racing on Xbox, but everyone in the chat gets a notification that I am using NDI. I have their permission to record, but they are getting a notification on xbox popping up very few seconds which is very distracting whilst racing!

Skype.jpg

Is there anyway we can stop it happening?

 

Many thanks,

Tom

Microsoft

Hello @Tommo23 unfortunately I don't know how to help here, I don't have experience with Xbox. On Skype / Teams you get a similar notification, but it's only one-time and you can easily dismiss.

Copper Contributor

Thanks very much for the information. Much appreciated. I've tried this solution and it still presents an audio/video sync issue which is not ideal, especially for LIVE Streams. If each NDI feed can be individually packaged with its own audio and video, that would solve this issue which is being experienced.

 

Skype is simple to setup and use with Streamlabs OBS and provide great video quality and clean audio. I would like to return to utilizing Skype in my live streams once we can get each call participant individually packaged with their own audio and video over NDI.

Microsoft

Unfortunately I don't see Skype changing this implementation anytime soon. I see that also Teams, which has recently enabled NDI, is using the same implementation, so I guess it's part of the game.

I'm not 100% sure the sync issues are due to this setup. I recorded episodes of our show where everything was perfect and others were, instead, things were out of sync, without any configuration change

I've seen also live shows from Telerik or the .NET team, which weren't using OBS and Skype, facing the same issue, so I think it's a broader latency / bandwidth problem.

Copper Contributor

I'm trying to use Skype with OBS and my MacBook Pro but when I go through the normal process I can't connect to Skype through OBS.  Any ideas?

Copper Contributor

@cajun820 Download NDI tools from NDI Website. This creates e.g. test images so you can check if OBS or Skype causes the problem.

Copper Contributor

Hi Matteo, I've been very successful bringing one person into the Skype meeting and then bringing their NDI feed into OBS. However, when I bring a third person (2nd guest) into Skype, the first person's video drops out, and their video turns into the animated Skype logo. This appears to be an issue in Skype because it shows up Skype itself. I have a scene that I'm using in OBS and I use the OBS virtual camera to bring my video into Skype. That way the Skype participants can see the same scene that I'm streaming.

 

This seems to happen with iPhone users who are joining the meeting as guests. Is there a limit on the number of guests a Skype call can make? I've tried both Skype for Desktop and the Creators version of Skype. Any suggestions?

Version history
Last update:
‎Apr 08 2020 05:59 AM
Updated by: