Every few months, I organize a meetup in Seattle for video technology developers. We’re a collection of video nerds working for the likes of Amazon, Dolby, Facebook, Hulu, Microsoft, Twitter. We’ve been recording the presentations (using my old but trusty Canon HG10 AVCHD hard drive-based camcorder with an XLR audio interface, and more recently with a Panasonic GH5). For more information about this setup, take a look here. There are two issues:
1. The bad thing about recording video is that you to edit it, which is time-consuming, especially when presentation slides need to be cut in;
2. We’re video nerds — shouldn’t we be streaming this?
So I’ve been looking for a way to elevate on-site production quality and reduce downstream production pain. These are roughly the requirements:
- Capture and record live video from a camera (to capture the presenter).
- Capture and record the output from the computer that the presenter is using (slides, demo, web browser, etc.)
- Keep these two sources in “good enough” sync.
- Combine the two sources with basic effects like cuts, picture-in-picture, and maybe some overlays, and record this composited output for publishing to YouTube.
- Live stream the composited output for online viewing.
- Should be free or very inexpensive (I already have the video, audio and computer gear).
- Any software component should be cross-platform.
Surely this is a solved problem? Yes, it is if we ignore that 6th item in the list. I like shopping for gear as much as the next person. If going the software route, products like Telestream Wirecast could fit the bill, but it costs $500. Turnkey hardware solutions like the Epiphan Pearl Mini are available, but at $3,495, it does not meet the “free/inexpensive” criteria. A cobbled together hardware solution like the one in the diagram is an option. In this case, an HDMI video splitter takes the exact output from the presenter laptop and passes it to the projector but also to an AV mixer that can mix, switch and composite this signal with the camera input. The output from the mixer goes into a streaming device, which sends the composited signal to an Internet streaming service and also stores a local copy. I looked into some options and came up with a bill of materials that totals around $2,000. Again this doesn’t fit the “free/inexpensive” criteria.
Open Broadcaster Studio (OBS) has been around for a while and is popular with video game streamers. It is free, cross-platform, and enables source switching, basic compositing, local recording, and sending out an RTMP stream. So it satisfied many of my requirements, but I still need to get the camera and presenter laptop signals into the machine running OBS. I started to look at what video game streamers use and, not surprisingly, there are quite a few low-cost video input options available. They take an HDMI signal and make it appear as a video source over USB to a computer. I picked the $110 superbly named Cloner Alliance Flint LXT. It has a single HDMI input and a USB 3.0 output (and comes with a USB C adaptor). That’s it; no external power, no other inputs, no pass through, but fine for my purposes. Others are available with more bells and whistles. After plugging it in and connecting my GH5 to it, I saw camera video appearing in OBS.
That leaves the question of how to get video from the presenter laptop into OBS. I could use another HDMI input dongle and capture and capture the presenter laptop output as a video signal. I would also need an HDMI splitter.
I thought that there should be a software-only solution, and indeed it is possible to run OBS on the presenter laptop, have it capture the screen, and create an RTMP stream. I tried this but didn’t get it to work. Then I came across NewTek’s NDI protocol. NewTek makes the popular Tricaster products, which are turnkey, flexible and extremely configurable switchers, recording and streaming devices. They do not meet my low-cost criteria so I never even considered them. However, NewTek created a proprietary but royalty-free protocol called Network Device Interface (NDI) for audio, video, and control over IP. It is multicast under the hood and uses mDNS for simple identification of compatible sources. The good thing is that their free NDI Tools include a utility that captures the screen of a PC or Mac and sends it via NDI. There is a plug-in that enables NDI streams in OBS. Since NDI “advertises” services on the local network, it is straightforward to configure (assuming nothing is blocking mDNS or the associated ports).
With the combination of NDI, OBS, the game streaming dongle, and an Internet streaming service, it looks like I can accomplish all of my requirements for just over $100. My initial testing has been on my kitchen counter at home over Wi-Fi. Questions remain as to whether this will work well on a corporate Wi-Fi network with lots of other traffic and potentially blocked ports and protocols, or worse a rate-limited, congested and flaky network at a venue. A dedicated wired connection between the presenter laptop and the machine running OBS would be a better approach, which would require a suitable router and network cables. These would add about $60 to the cost.