A Facilitator’s Guide to Streaming like a Twitch Superstar

Voltage Control is a fully distributed team, so we’re no strangers to working from home. But what is new for us is 100% virtual workshops. I’ve had to lean heavily into researching and experimenting with new techniques to deliver the magical experiences expected from us. I’ve spent countless hours on my workstation and video setup. And to be honest, it’s been a nerd’s heaven. It’s still a work in progress and I plan to write up instructions on how to build it out once I’ve got it totally dialed in, but I think I’m getting close. Check it out:

The quest started with experimenting with ways to improve audio and video. I needed extra screen real estate to lay out all the screens in a way that I could see and manage all the channels (Slides, Zoom AV channel, Breakouts, Chat, Mural, & Team Backchannel). After making good progress on my display setup, I purchased an IPEVO 4k document camera to share sketches and drawing in real-time.  

This little camera was perfect! And did the trick. However, I was really unhappy with having to toggle between the cameras. There is a hotkey in Zoom to toggle between camera sources, but that’s not ideal when you have more than two cameras and want control over which camera you’ll jump to next. Also, using the Zoom toggle means I have to toggle through all my video feeds that I don’t really want people to see. It turns out that I was really looking for picture-in-picture so that you can see me and my document camera at the same time. 

I tried various solutions, including ManyCam, CamTwist, and OBS. ManyCam and CamTwist certainly worked but I found them to peg my CPU at times and lock up. They were also limited in various ways. I have to be honest; when I first installed OBS, I ran for the hills. OBS is what you might imagine from a popular open-source project. It is extremely powerful and versatile and has a steep learning curve. The first-time user experience is quite confusing and hard to understand what you’re even looking at. Also, there’s no out-of-the-box integration with Zoom, so I knew I’d be compiling from source code.

After many failed attempts with ManyCam (which I paid for) and CamTwist (which looks like it was made 20 years ago) I was ready to throw in the towel. Then my pal Adam Schwem attended a recent Voltage Control Facilitators Happy Hour–which are totally awesome and you some come! We were doing a round of appreciative interviews and luckily I got to pair up with Adam. While chatting, I noticed that he had a spectrogram in the upper right-hand corner of his video. I asked him, “Hey, what’s your video feed?” Adam was excited that I noticed (he’s also a nerd). “Dude, I’m using OBS”. We quickly scheduled an OBS playdate and the rest is history. Adam, thanks for the inspiration!

OBS is a go-to tool for Twitch broadcasters and it’s amazing what you can do. In fact, I highly recommend that you spend some time watching Twitch or Youtube tutorials on what people are doing with OSB.  It’s like having a TV production studio on your desktop. In fact, many TV studios use OBS! Most gamers and broadcast houses that use OBS use it on Windows, which poses a challenge. Either buy a spare windows machine or figure out how to make things work on a Mac. When running an extra machine, you would connect a video capture card to your Mac. These capture devices take an HDMI in from the Windows machine and then the Mac connects via USB. So the Windows machine appears as a webcam on the Mac. 

I’m a fan of keeping my system small and reducing wires, so I opted to configure everything on the Mac. Unfortunately, that is not as easily supported. Luckily Adam exposed me to the great work that John Boiles has been doing over the last month to allow OBS to connect to common business meeting software with a virtual camera driver he’s gone out of his way to develop. While still in development, today this solution requires compiling the OBS core, a virtual webcam plugin, and configuring Zoom to allow unsigned webcam devices (you’ll need to do that even if you still want to use SnapCam!) If you are interested in setting this up yourself, you can follow the steps below. 

**UPDATE** You no longer need to mess with the command line! John has packaged up the plugin and it’s compatible with the latest version of OBS. You can follow the steps below:

  1. Download and install the latest version of obs
  2. If you have previously compiled and installed the virtual webcam, you’ll need to uninstall the previous version:
    sudo rm -rf /Library/CoreMediaIO/Plug-Ins/DAL/obs-mac-virtualcam.plugin
    sudo rm -rf /Library/Application\ Support/obs-studio/plugins/obs-mac-virtualcam
  3. Download and install the virtual web cam
  4. If you plan to use zoom, you’ll still need to use the command line.
  5. You may also need to reboot a few times before zoom will see the OBS Virtual Webcam.

Fixing Zoom

**WARNING** Homebrew required. If you don’t have homebrew and don’t know what it is, watch this tutorial on homebrew and Terminal.

1)  Install xml2

brew install xml2

2)  Update Zoom entitlements

APPLICATION=/Applications/zoom.us.app && codesign -d --entitlements :- $APPLICATION | { xml2; echo "/plist/dict/key=com.apple.security.cs.disable-library-validation"; echo "/plist/dict/true"; } | 2xml > entitlements.xml && sudo codesign --sign - $APPLICATION --force --preserve-metadata=identifier,resource-rules,flags --entitlements=entitlements.xml && rm entitlements.xml

Running OBS

Whew! Now let the fun begin. Here are a few things you’ll need to know:

  1. OBS must be running with the Virtual Camera running when you start Zoom.
  2. From OBS click Tools / Start Virtual Camera
  3. Restart Zoom if needed
  4. You’ll see OBS Virtual Camera in Zoom where your webcams are listed

There are lots of cool things you can do, but for starters, I recommend adding a couple of scenes and a couple of sources. Your webcam will show up under Video Capture sources. Just add one, give it a name, and then you should see your camera. Display capture is useful to “share your screen” through your video feed. Image sources are handy for sharing GIFs and screenshots. 

Think of scenes as “layouts”. Once you’ve added a few sources you can move them around into a layout that serves your purposes. For example, one scene could have 2 cameras side-by-side and the other scene could just be one camera. When you click on the scene name it will put that scene into the preview window. Then if you click one of the buttons (Transition, Cut, Fade, etc) it will move that preview into the program window. The program window displays the live output and you will see the output on the virtual camera.

Once you get to this point, there are still learning curves for effects and visual trickery, but you’ll have the basics. It’s all just fun from there. I hope you enjoy yourself as much as I did.