When we decided to take on Stream 150, a 150-hour live streaming challenge involving multiple PCs, multi-room setups, and a rotating cast of 10+ people, we knew the technical setup had to be pritty good. A flaky connection, bad audio, or a broken workflow could significantly affect the viewer experience.
Although we do still expect some issues to arise. We want to get as close to perfect as possible!
Here's how we engineered a streaming setup that can help inspire you to do something similar!
The heart of our setup was networking. Since we were dealing with multiple high-bitrate video feeds, we needed serious bandwidth.
Switch: We used a UniFi Pro Max 16 switch, which supports 10G, 2.5G, and 1G connections.
Stream PC (10G): Our dedicated Stream PC was hooked up via 10G for low-latency, high-quality capture. It also has a 2.5G connection that will send the stream to the various streaming platforms.
Gaming PCs (1G/2.5G): The five gameplay PCs + laptops were on 1G or 2.5G connections, ensuring no network bottlenecks.
VLANS: VLAN's were used to seperate the pcs and NDI streams on differnt networks to improve NDI performance.
This setup meant as little network congestion as possible, even with NDI, vdo.ninja, and multiple camera feeds running simultaneously.
The Stream PC acted as the central hub, responsible for mixing all incoming feeds, handling overlays, and encoding the final stream.
OBS + DistroAV NDI Plugin: Each gameplay PC sent its feed over NDI (Network Device Interface) to the Stream PC.
Audio Handling: Instead of routing everything through a single mixer, we managed audio on individual PCs and transmitted it over NDI.
This eliminated the need for tons of capture cards, cutting down on complexity and potential points of failure.
Shows the multiple PC NDI feed.
Good video is useless without clear, synchronized audio. Here's how we will handle it:
Per-PC Audio Mixing: Each PC handled its own audio in OBS and sent it over NDI.
POE Cameras with Mics: House-wide coverage meant using Power-over-Ethernet (POE) cameras with built-in mics for room-wide sound.
Real-time Monitoring: We monitored levels live to avoid sync issues or weird reverb.
We wanted a big brother-style view of everything happening.
Fixed POE Cameras: Mounted around the house for an always-on, bird's-eye view.
Handheld POVs (vdo.ninja): For action-packed moments, we used vdo.ninja to bring in mobile and handheld camera feeds over the network.
Custom Discord bot: We utilise a custom discord bot to enable handheld cams to paste their link and the bot would create a scene and add the link straight away into OBS. The code for this can be found here.
This ensured the audience never missed a single disaster! I mean, moment.
Each PC is connected via websocket to the stream PC using a custom written script that can be found here.
This script performs many funcitonalities:
A LIVE indicator to allow the host to know if their PC is the one being viewed.
Connects to both YT and Twitch chat so hosts can have chat overlayed while they play to allow for more chat interaction.
HotKeys. It has a customisable hotkey so that hosts can switch to their POV automatically without needing to contact me.
Shows Youtube and Twitch chat overlayed in Sea of Thieves.
Shows the live indicator and an early build of the chat overlay in testing.
When we are all playing games it will be hard to keep switching between each screen in the heat of combat. So we wrote a custom script called AdvancedSceneSwitcher that can be found here.
The purpose of this script is to:
Rotate at a custom time between selected scenes in OBS.
Be run on any machine / device.
Create "Groups". These groups allow ease of rotation so with a press of a button it can go from rotating PC's to rotating through mobile devices e.g. Phones.
A big part of Stream 150 was viewer interaction. We used Tangia, which allowed real-time chat-controlled actions, like:
Ability to wake people up at 3 AM with a loud alarm.
Triggering in-game challenges.
This kept the stream engaging, even during the dreaded late-night hours.
Custom Donation Challenges: Donations will trigger real-world punishments, like ice bucket challenges, blindfold gaming, and forced speedruns.
Live Alerts: Streamlabs let us fine-tune alerts, ensuring they were hilarious but not obnoxious.
While NDI handled all PC feeds, console gameplay still needed a capture card.
We will use an Elgato 4K60 Pro in the Stream PC.
Console players had dedicated audio routing to prevent audio doubling.
This made sure console gaming sessions (and inevitable rage quits) were seamlessly integrated into the stream.
To accommodate viewers who were in school or had restricted access to traditional streaming platforms, our host, Tristan, developed a custom streaming site: watch.stream150.com. Built from the ground up, this platform integrated YouTube and Twitch chats, showcased uploaded stream highlights, and hosted interactive polls for the chat, providing a centralised and engaging viewer experience.
If you are interested in the tech behind this view the repository here.
Showing watch.stream150.com
Showing watch.stream150.com with polls an active poll
Even the best setups can fail, so we had contingency plans:
NDI Failover: If a PC's NDI feed dropped, we can easily switch to another feed while we repair and troubleshoot!
Auto-Reconnect Scripts: If network hiccups happened, everything reconnected automatically.