Scott Hanselman

Take Remote Worker/Educator webcam video calls to the next level with OBS, NDI Tools, and Elgato Stream Deck

March 18, 2020 Comment on this post [16] Posted in Remote Work
Sponsored By

Changing cameras dyamically with OBSOver the years I've collected a few webcams, some quality and some not. If you're interested in creating the ultimate remote worker webcam setup on a budget, I've written a blog post on the topic.

However, now that we are a remote workers - my entire company has everyone working remotely until further notice - I've found that an extra webcam or two can really be helpful if I want to point a camera at something on my desk, or get a wider view, look at a whiteboard, etc.

Of course, you can always change video inputs in any application but there's that...pause...that...hang...that moment. You have to switch into your apps Device Settings, do the dropdown, switch, wait, and then you've changed the camera.

What if you could change cameras - scenes - like you were a movie director. But, you have minimal budget. What can you do for nothing or next to nothing? A lot.

What's the goal?

With minimal setup, you can feed all your webcams, your desktop itself, and really anything you can express as a 'scene' into a software video compositor and then output them as a virtual webcam.

Then you select and use that Virtual Webcam in your remote video conferencing tool of choice! The results are amazing.

Setup

First, get OBS and NDI Tools, specifically NDI Virtual Input.

  • OBS (Open Broadcaster Software) is free and open source software for video recording and live streaming.
  • NDI Tools and NDI Virtual Input.
    • This is a software package that creates a virtual camera input.
    • NDI Plug for OBS : obs-ndi - This allows the OBS software to send its output to NDI, the virtual camera.
  • ALTERNATE:
    • You can avoid using NDI Tools (which is an extra hop) and use OBS-VirtualCam as plugin instead. It will create a Virtual Camera locally and directly send 1080p video to a Virtual Cam called OBS-VirtualCam.
  • OPTIONAL: Elgato Stream Deck and the Stream Deck Software
    • They've got 6- and 15-key decks. The have full color LCD keys and you can make the icons look however you want. Ya, it's a portable hotkey button machine, but it's amazing. Note in the upper right corner of my Stream Deck I have three OBS buttons, one for each scene and the active one lights up. I've also made buttons to change my primary monitor's resolution. More on that in a future blog post. I've also got Elgato Stream Deck buttons to change my audio inputs an outputs as well, with a how-to.
      My Elgato Stream Deck
    • Don't want to buy a physical device? Use your phone as a Stream Deck with Stream Deck Mobile
    • You could also buy Touch Portal for about $12 and use any old Android phone you have laying around as a remote control for this purpose!

Install these three things and run OBS. When you run OBS after installing the NDI plugin, you'll need to go to Tools, NDI Output Settings and select Main Output. Leave OBS running.

NDI Output Settings in OBS

Then run Virtual Input and right click on it in your tray (near the clock) and set it's output to your computer name | OBS. Mine is IRONHEART in the picture below. If you see None, you likely don't have OBS running.

Taking output from OBS and feeding it into Virtual Input

Define your Scenes. Scenes are a collection of sources.

Add and name a scene, then add a Video Capture Device for your camera. I also like to set the Resolution manually.

BRIO 1080p in OBS

I made one Fullscreen Scene per webcam, and one for my desktop that also includes my camera in PIP in the corner.

NOTE: If you're a teacher, perhaps you share just your lesson plans or browser window and yourself in video another way. You can be split screen, pip, or whatever makes you happy! Your scenes can be as complex as you'd like and include lesson plans, links, resources, and more!

PIP inside OBS

To review:

  • OBS is a compositor that feeds into
  • NDI Virtual Input
  • And Scenes can be changed dynamically (see animation at top of this post) by a Stream Deck, hotkey, or Stream Deck Mobile
  • Select "NewTek NDI Video" as your webcam in Teams or Skype or Zoom!

At this point you can change camera angles and select scenes when you're on a call! The transitions will be be instant and smooth for your viewers. This also works great for workshops and teachers teaching classes!

image

Thanks Jeff Fritz for your help with this! Do you have any OBS teams, dear reader?


Sponsor: Couchbase gives developers the power of SQL with the flexibility of JSON. Start using it today for free with technologies including Kubernetes, Java, .NET, JavaScript, Go, and Python.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Hosting By
Hosted in an Azure App Service
March 22, 2020 12:04
I've been looking on and off for something like NDI Virtual Input for a while now. Thanks for the tip!
March 22, 2020 12:56
Hi Scott - I love this setup. Knew about OBS but was looking for something like the NDI Virtual Input. Thanks so much for sharing!

That said, what's your view on this: often when I'm presenting live and showing stuff, people will expect me to "share my screen". Depending on the software I'm using (Skype/MS Teams/GotoMeeting/Slack/Discord), folks won't be able to fullscreen my camera view (or don't know how to), and so I end up presenting in my tiny square in their Brady Bunch screen.

So ideally, I'd send OBS's output to a Windows Display Adapter I can actually share as a screen. I know OBS can project its output to one of my monitors, and that works, but I don't like sacrificing one of my monitors during a presentation, plus it duplicates whatever I'm actually showing, and that gets confusing ;)

I'd love to hear what you think, thanks Scott.
JP
March 22, 2020 14:55
I have a similar question to JP.

I need to display:
1. PowerPoint in presentation mode
2. View my speaker notes
3. View my audience

I just ordered another monitor assuming need a three screens to get this to work.
March 22, 2020 20:10
Great article! I was looking for something like this.
In Microsoft Teams the image is flipped horizontally and based on the last screenshot you had that problem as well.

Any suggestions on how to solve that?
March 22, 2020 21:07
Good news/bad news: I was able to install everything, setup the sources and scenes and it worked really well as far as the scenes went ... then I installed libNDI_for_Mac.pkg because I couldn't see NDI Output Settings under Tools in OBS and now OBS won't open: https://obsproject.com/forum/threads/obs-and-newtek-ndi-video-monitor-wont-open-after-libndi_for_mac-pkg-install.117016/#post-440976
March 22, 2020 23:06
This is exactly what I was looking for but I think I'm missing something obvious. I have this all installed, and in OBS I can see my face in the scene. I have the virtual NDI camera selected in my video conference app (Bluejeans) but all I get is a black screen.

Is there some trick to getting the video started up? Or should it just be working automatically?
March 22, 2020 23:11
Hi Scott,

This blog was something I've looking for for quiet some thing, but I had no idea how to google for it. I owe you bigtime!
Our university college uses Panopto to record lectures, and guess what, I can feed my NTI virtual camera into that software as well: awesome :)

For those interested, here's how: https://support.panopto.com/s/article/NDI-Support
March 23, 2020 1:43
Jimmy, for each scene you can select Edit | Transform | Flip Horizontal. I had the same problem in Google Hangouts. Thanks Scott, very useful!
March 23, 2020 8:12
This post solves a problem I've been trying to for years. I've always wanted to use my Twitch/YouTube production hardware for meetings, but didn't know how.

Now I do.

Keep on keepin' on Scott! 😊
March 23, 2020 10:24
OBS is great. I use it as screen capturing software where I can define with which quality setting the videos are recored.
For a weekly debugging show I have used MS LiveMeeting, Synplicity, Lync and now MS Teams in the last 6 years. But I never record the show in any of the tools. The clouds are great but I prefer to have control over the recording quality and frame rate. When I want to show e.g. hickups in some video playback due to performance issues the "normal" recording options do not cut it. I always record my desktop with OBS, do the show, transcode it with ffmpeg to mp4 with a decent constant bitrate and send the link to a network share along with the ppt to the interested people. Regardless which tool we will be using in 2 years my share stays and I can relocate everything with a simple file copy.

I consistently get feedback that people tend to look at the offline version because they have higher resolution and are able to read everything on my screen. They can follow the content without frame hangs due to quality issues with the local network in India or wherever they are watching. I also set the desktop resolution of my recording monitor to 1024x1080 because not all people watching have wide screens with 1980x1024 which can make it hard to follow if you need to scroll around or zoom into in the recording. On the plus side I barely need any zoom tool because the resolution forces me to arrange things in a readable way.
March 23, 2020 22:53
I love using the Stream Deck for step debugging in Visual Studio and VS Code (so I don't have to remember if "Step Into" is configured as F8 or F11). Another developer has kindly written the plugins to allow the Stream Deck to send raw commands directly to the respective IDE, and I've rendered a number of PNG button images to go with those commands.
March 25, 2020 6:21
Scott - If you don't need the direct multi-camera control, I really like OBS Virtual Cam (https://obsproject.com/forum/resources/obs-virtualcam.539/) as a away of making the OBS output available to tools like MSFT Teams.

Question: Have you been able to route desktop sound in to teams while using OBS?

Thanks Scott - keep making life fun and more awesome for us all!
March 26, 2020 14:03
I was doing a project and couldn't find a solution for my NDI Virtual problem Thank you very much for this tip.
March 29, 2020 14:32
I post here a direct link to the NDI Tools for those like me that encouter an error on their website: Sorry, a browser extension you are using is preventing the form from displaying.

NDI Tools direct download link
April 01, 2020 3:11
Thanks for the article, I used to use Video Toaster and SpeedEDIT by NewTEK back in the day!

Can anyone actually verify this works with Skype? I can't seem to get it work and am looking for a virtual camera solution that works with Skype. Neither OBS VirtualCam or NDI Virtual Input seem to work with Skype.

VirtualCam works with GoToMeeting. NDI appears in the camera list of GoToMeeting but doesn't actually load.

Neither of them show up in the list of webcams available in Skype, unfortunately.

April 01, 2020 17:56
in your post on the 17 of march Remote work - using mobile phone as a webcam. Will this work in MS Teams?

Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.