Upgrading my Dual-PC Streaming Setup for my Triple PC/Mac Recording/Streaming Needs
A while ago, I wrote a post about how I created a dual PC streaming setup. That post has remained surprisingly popular, more than two years later. Given that my setup has changed a lot in the past two years, I thought I'd do a quick update. (Been wanting to do this for a while, but there are so many details I kept pushing it off). (Note: Some of the information in the previous post, and in the post on using an SLR as a webcam, I won't repeat here in detail. Since the webcam article, I've started using a Nikon Z5 instead of the Canon – traded it in – because of quality and power issues with the Canon).
Since the first article, I needed to start recording and streaming content for class due to COVID, so I moved my dual-PC gaming/streaming setup into my office. Since I teach classes on VR and 3D graphics, and my students use both Macs and PCs, I really wanted to be able to share content from both setups. My current setup allows me to stream the screen of my iMac and my gaming/VR PC at the same time, with the camera video from my Nikon.
I also really wanted to take advantage of NVIDIA Broadcast to remove background noise from my mic. While most conferencing software is starting to include background noise removal, none of it compares to Broadcast; we have 4 dogs, and my office is at the front of the house so I often have multiple dogs barking at passerby just outside (or in) my office, and it completely removes it from my audio stream. It's amazing.
I also wanted to use my personal camera on both my Mac and my streaming PC, so I ran the HDMI output through a splitter and into both machines.
Current Setup Details
Please keep in mind that this setup evolved over many years, and some of the equipment (like using my personal Nikon Z5 being used as a webcam, and the Shure SM7B) are a bit over-the-top if you were starting from scratch. I also have some gear that I bought "for fun" while experimenting with the gaming setup.
Let's go through the parts of the setup. I'll summarize the basic components and then talk about the two critical parts: the audio setup, and the keyboard/mouse setup.
There are two Elgato Key Lights for providing fill lighting when needed, and to make sure the green screen behind me is evenly illuminated when recording with it. The ring light is an Elgato Ring Light. I decided to use lights from the same manufacturer, since Elgato's software gives me a nice control panel on both the mac and my PCs, and I can control them with the Streamdecks (see below).
As discussed in my previous post on using an SLR as a webcam, and now discussed in many articles on the web (as people struggled to get better webcam views of themselves during COVID), I use a high-end camera as a webcam. I want both the image quality, but also the depth-of-field I get from a fast prime lens (in this case, an f/1.8 one). The camera runs into a cheap HDMI splitter, and out to the iMac and the Streaming PC.
My main computer is an iMac, with a 2nd 4k monitor. I've got a Belkin Thunderbolt 3 Dock Core velcroed to the back of it, which drives the 4K monitor over Displayport, and sends out a 4K mirror of my main display over HDMI to the streaming PC. I also have an Elgato Cam Link 4k to receive the video from the Nikon (through the HDMI splitter). I'll discuss the audio setup below.
I use this PC for gaming and VR, as well as for when I need to test code on Windows (such as when I'm creating an assignment in my VR or 3D Graphics classes). It has a 2k 165hz display, which is mirrored to an HDMI output to send to the streaming PC (the original streaming setup article describes how to make this work with the NVIDIA control panel). I'll discuss the audio setup below.
In addition to sharing a keyboard and mouse with the other computers, I have a dedicated mechanical keyboard on Logitech Pro Wireless mouse on it for gaming. I've gone through a variety of keyboards and mice over the past years, and I really love this wireless mouse; fast, feels good, and robust (I've broken a lot of mice over the years, this one seems to hold up well). I'd been using a Dygma Raise keyboard when I was playing Overwatch, but since I stopped and am mostly using the computer for teaching, I've switched back to a normal mechanical keyboard.
The streaming PC has three main purposes: removing noise from the mic using NVIDIA Broadcast, sending the cleaned-up audio to the other two computers using VoiceMeter, and streaming/recording with OBS. I'll discuss the audio in more detail below.
For streaming, the computer has 3 PCI capture cards: two Elgato HD60 Pros (for the Gaming/VR PC display, and Nikon camera video), and one Elgato 4K60 Pro (for the iMac display). The HD60 Pro will capture 1080p at 60Hz, which is sufficient for the video camera and Gaming/VR PC. The 4K60 will capture 4K at 60Hz, which is ideal for the Mac since that's where I will do coding or other work requiring higher resolution capture. OBS is set up to let me switch between mac, pc, and the streaming PC, along with some scenes for "Starting Soon", "Be right back", and "Just Chatting".
In addition to streaming to Twitch, etc., OBS allows you to show the "projector" (the rendered stream view) in a window (or fullscreen). By showing it in a window, I can log onto Teams or Zoom or whatever, and screen share that window into a video call. I've found this quite useful for teaching, as I can seamlessly switch between different inputs with minimal fuss. I will also sometimes hook up a 4th capture device (e.g., another Cam Link 4K) so that I can share on an iPad for writing on slides.
To use NVIDIA Broadcast, and to process all of these streams, requires a reasonably powerful graphics card; Broadcast itself requires an RTX graphics card. The CPU requirements aren't high, so my old 6th-gen i7-6700 is fine, but the GPU is an RTX 2080, making this a non-trivial investment.
An "elephant in the room" of having 3 computers is the incredible awkwardness of having 3 keyboards and mice. I've tried using software solutions for sharing the keyboard and mouse (such as Barrier), but I've never found them to work well enough. There is sometimes lab, and the computers have to be fully running for them to work; plus, on windows, they do not work when an authorization dialog pops up.
Recently, I discovered Logitech's Flow software. For those who don't use them, most wireless Logitech keyboards and mice use a combination of Bluetooth and small wireless receivers. It turns out most of them can simultaneously connect to 3 devices, and you can manually switch between them (via a small button on the back or front). Flow automates the process; when you slide your mouse to the edge of a screen (appropriately configured), it switches the connection on the mouse and keyboard to that computer. This solves a major issue with solutions like Barrier: when the device is connected to a machine, it's really connected, so there is no network lag, and the mouse and keyboard fully work. There are some issues (it doesn't switch as fast as I'd like sometimes, and it only works with a specific set of keyboards and mice right now), but overall I'm really happy with it. I can slide the mouse between all 4 monitors and the keyboard follows.
I ended up with an MX Anywhere 3 mouse and a Logitech Ergo K860 keyboard; it's the only ergo keyboard that works with Flow, and while it is not as nice as my Dygma, it's ok. I still have a keyboard and mouse directly connected to the Gaming/VR PC, and since Logitech uses an entirely different wireless scheme for the Pro mice, there's no interference or issues.
Audio (and Controls) Setup
By far the most complicated part of this setup is the audio. In particular, I had two hard requirements:
- Using a single microphone, piped through NVIDIA Broadcast, for all 3 computers.
- Using a single set of headphones to hear the audio from all 3 computers.
Getting this working was trickier than expected. Here's a photo of the audio setup in more detail.
The small StreamDeck is connected to the mac, and I use it to control the key and ring lights (as well as change the patterns on the various wireless LED and Nanoleaf lights in the office). (It's not strictly needed, but I had it before bought the larger StreamDeck).
The center StreamDeck and GoXLR are hooked up to the Streaming PC. Audio from the iMac comes in through an optical digital audio cable, via a Behringer USB audio box on the mac that has digital out. This shows up as "GoXLR Game Audio" on the PC. Audio from the PC comes in via a 3.5mm audio cable connecting the line-out on the PC to line-in on the GoXLR (which shows up as "GL XLR Line In" on the PC, unsurprisingly).
I have an XLR Shure SM7B on a boom stand that I run through a Cloudlifter to raises its levels a bit. The Shure is designed to be right in front of your face, which is great for musicians and DJs, and a common setup for professional streamers, but as an academic, I don't like having the mic on-screen. The Cloudlifter raises the levels enough that I can be about 1-2' away from the mic and it still sounds great.
The mic shows up as "GoXLR Chat Mic" on the PC. I use that as input for NVIDIA Broadcast's noise removal, and send the NVIDIA Broadcast output to Hardware Input 1 in VoiceMeter (as well as to mic in on the PC, and as an audio input on OBS). VoiceMeter is configured to stream the audio to my Mac and Gaming/VR PC.
While VoiceMeter is primarily PC software, the VBAN network audio can be connected to a variety of other devices (Macs, iOS, Android) via apps in the various app stores. I'm using VBan Receptor on the Mac, which can send the audio stream to any output device. There is surprisingly little latency on the audio stream.
To use the stream as a Mic, I use Rogue Amoeba's Loopback software on the Mac to create a virtual loopback cable, allowing VBan Receptor to send audio to my virtual "VBan Mic" device, which in turn shows up as an audio input to the rest of the mac. This lets me use it as input to any audio app, including Zoom or Teams, on the Mac. (I also use RA's SoundSource application to give fine-grained audio control to my Mac, and highly recommend both pieces of software.)
On the Gaming/VR PC, I run VoiceMeter to receive the audio from the mic, and route it to the mic input (as discussed in the previous article).
The GoXLR has four hardware sliders; I have 3 connected to the levels for the Mac and 2 PCs, and one to the headphone levels, allowing me to easily adjust (or mute) the level of each device. The GoXLR has three outputs: headphones, line-out, and a virtual "GoXLR: Broadcast Stream" device. On the PC, I set up OBS to broadcast that stream as the audio, so it has the combination of all 3 devices. The headphones also are configured to play all 3 computer audio streams.
Finally, a few days ago I connected the line-out to an Avantree Orbit bluetooth transmitter. This allows me to use Bluetooth headsets with my setup, for times (like video chats) where I don't want big, bulky headsets. The Orbit can pair with a number of Bluetooth devices and has a simple interface for connecting/disconnecting them. This is a recent addition, and I'm looking forward to using it this week.
While reasonably complicated, the setup works very well much of the time. It's hard to get less complicated and still meet the goals of "one mic, one set of headphones", especially while also running the audio through NVIDIA Broadcast, and having simple control of levels on the headphones. Cheaper audio output solutions, such as running 3.5mm audio cables from each device through a cheap mixer, produce pretty bad audio (with static and noise) and give very limited control. For sharing the mic, it's also hard to do it with a good mic and a simpler/cheaper setup. You get into professional mixing boards pretty fast, and they are pricey.
Conclusion and Discussion
The biggest drawbacks are cost and that I need to have the streaming PC on whenever I want to use the mic on my mac (for, say, a video chat); there have been times where a call was about to start and I realized I hadn't booted the PC. These machines also generate a fair bit of heat and consume a fair amount of power; the iMac is actually pretty low power, usually using ~120W or so, but modern PC's with high-end graphics cards consume more than double or triple that amount (thus, the heat).
The components listed above are things I've acquired over the past 2-3 years, and some expensive, although cheaper alternatives (especially for the camera and mic) will provide a great experience. Sony's new vlogger cameras are less expensive and quite nice; I've used the ZV-1, and the upcoming ZV-E10 looks really interesting.