In my Almost Free Live Video Production article, I wrote about how I wanted to find a way to elevate the production quality and reduce downstream production pain for the Seattle Video Technology meetup that I coordinate with friends and colleagues. One of the main prerequisites is to keep things free or cheap, and to that end, I settled on using Open Broadcaster Studio (OBS), NewTek’s NDI protocol, and an HDMI to USB video acquisition device marketed to gamers. This article is about how to set things up and go live.
For my setup, I am using:
- Windows laptop for the presenter (“presenter laptop”) with a wired Ethernet adapter,
- MacBook Pro for production and live streaming (“streaming laptop”) with a wired Ethernet adapter,
- Wired network connection between presenter and streaming laptop,
- Router with at least 2 wired ports (I used a Netgear WNR3500Lv2, running the open source Tomato firmware, but the stock firmware is fine too).
Both the presenter and streaming laptop also have Internet access, but the idea is that the NDI protocol for screen sharing runs over the wired connection for reliability and stability. Why? You don’t know what kind of network management is in place on a corporate wired or wireless network, not to mention network contention issues. Sure enough, when I did a quick test on our corporate network, I was not able to get the NDI protocol to traverse the wired or wireless network, even though it worked fine on my home Wi-Fi.
Setup the Presenter Laptop
1. Network Setup
In my case, the presenter laptop is a Microsoft Surface laptop running Windows 10. I had it connected to a Surface Dock that provides a wired network interface. I plugged it into the router, and connected its Wi-Fi to my phone’s hotspot for Internet access. If you don’t need Internet access on the presenter laptop, you can skip the Wi-Fi part. You can see how things are configured below.
2. Install NDI Software
You need to install the NDI software from NewTek. Download and install NDI Tools for the appropriate platform (Windows or Mac). On both platforms, you will get the NDI Video Monitor and NDI Scan Converter. On Windows, you get additional tools including a useful NDI Test Pattern Generator.
The only thing you really need is the NDI Scan Converter, which streams the screen. In Windows, once you start it, you’ll find it in the system tray.
If you right click on the NDI icon, you’ll be able to adjust settings. By default, it will send the entire screen. On a multi-monitor setup, each display will be sent separately. You can also configure just a specific region of the screen to be streamed. If you need to stream system audio from the presenter laptop, you should configure the Audio Source appropriately.
With everything set up, open up something on the screen so that you have some output for the next steps.
Setup the Streaming Laptop
1. Network Setup
I plugged in a cheap USB Ethernet adaptor for the wired interface and also connected the Mac to the corporate Wi-Fi.
Note that the wired network is above the Wi-Fi network. This is a problem because the Internet (via Wi-Fi) will be unreachable, so you need to change the priority. You can do this by clicking the gear icon and choosing the Set Service Order option.
2. Install NDI Software
Just like you did on the presenter laptop, install the NDI software from NewTek. Download and install NDI Tools for the appropriate platform (Windows or Mac). I find it useful to have the NDI Video Monitor available for testing and troubleshooting.
3. Install OBS
4. Connect Video Acquisition Device
The Cloner Alliance Flint LXT video capture device connects to the USB-C port of the Mac via a USB-A to USB-C adaptor (which it comes with). The other end has an HDMI port that I connected into the Panasonic GH5 camera. Note that most cameras do not output a clean HDMI signal by default: they have overlaid information like battery, exposure, focus peaking information, etc. Most cameras allow you to turn this off through a menu setting.
5. Setup OBS
Now comes the fun part: setting up OBS and creating your production. When you open OBS for the first time, it will offer to configure itself. You can do this, but it will want you to enter your live stream information, which you might not be ready to do, so I just exited out of the auto-configuration dialog.
For this simple scenario, I created three scenes for these purposes:
- Presentation: this shows the presentation laptop full screen and has a picture-in-picture camera stream.
- Speaker: this shows the camera full screen and has a picture-in-picture of the presentation.
- Slate: this is simply a solid color background.
The idea is that during the live stream, I can switch between the different scenes as needed. OBS seems to be a fairly full-featured product, and I have only used the bare minimum of functionality, so you should explore on your own once you get things working. For instance, you could add lower thirds with speaker names.
You then need to create sources. With the NDI plugin installed, you will see NDI Source as one of the source options. This is what you’ll select to display the presenter laptop.
You probably want to give your source a meaningful name so that you don’t just have NDI Source 1, NDI Source 2, etc.
Then you need to select the specific NDI stream that you want. You can see above that I have three to choose from: Display 1, Display 2 and the Test Pattern. In my case, Display 1 has the presentation, so that’s what I chose. Also note that there is a Sync option that is set to Network by default and some other settings. I noticed that the NDI stream seemed to stall and I thought this might have something to do with the sync settings, but when I played a video on the presenter laptop instead of just the static slide, it did not stall, so it is possible that it was some sort of timeout caused by a display that doesn’t change. If you do find that the NDI source freezes, you can go into this configuration screen again, and it should come back.
You should now see the NDI stream from the presenter laptop, but it will probably be the wrong size. You can adjust this to fit using the red box, but you should also take a look at your OBS settings where you can change the canvas size and the streaming output size. I set both of mine to 1080p.
This is a good time to point out the audio mixer. Each audio source has its own control. In the screenshot, Mic/Aux refers to the microphone of the streaming laptop. Most likely you are not going to want to use this, so I muted it. When you added the NDI source, the Presenter Laptop audio was also added, but although it will stream, you won’t hear it in OBS because by default, audio monitoring is disabled so that you don’t get screeching feedback. If you click on the gear button, you can configure monitoring and other parameters. You should definitely use a pair of headphones for audio monitor and you should always be monitoring.
Now we can add another source, which will be for the camera. To do so, click the + button under sources and select Video Capture Device.
You will see a number of devices depending on what you have plugged in. One will be the internal webcam. In my case, the video acquisition interface is called Live Streaming USB Device #3.
Once you click OK, you’ll see the output from this device in a window that covers up most of the presenter laptop.
Each source stacks over others, so you want to resize and adjust the ordering if needed.
Assuming you are capturing presenter audio through camera microphone, you also need to create an audio input source.
Now you’ve set up the layout for one scene, you should setup up the layout for the other scenes. Fortunately, you can copy the sources over to other scenes, which makes it a little easier. Also, OBS remembers its previous setup, so when you start it up again, it will remember your scenes and sources.
6. Quick Streaming Setup and Test
Now that the scenes and sources are set up, we can do a quick streaming test. OBS lets you send directly to various streaming services like Facebook Live, YouTube, Twitch, but also lets you send an RTMP stream to a custom server. For this quick test, we’ll just send our stream to YouTube. Note that if your YouTube account is not set up for live streaming, it will take 24 hours for it to be provisioned.
Go to YouTube in a web browser and navigate to live streaming. You want to create a stream and copy the stream name/key. Note that by default this is obfuscated, so you will need to click the Reveal button.
Now in OBS, open Settings and go to the Stream page. Under Stream Type, make sure that Streaming Services is selected. Then choose YouTube as the Service. Paste in your stream key into the field and press OK.
Look at the bottom of the OBS window and you will see information about your stream. In particular, note the CPU utilization — as that goes up, the more likely you are to get dropped frames. You can also see the output bitrate (which in this case is probably too low). You can make changes to all of this, but for some parameters, you’ll need to stop the stream, make your changes, and restart it.
Now go back to YouTube and you should see your stream appear, although it will have some delay.
In the final article, I will walk through using Microsoft Azure Media Services for live streaming.