Review: Stroom Live
I've spent the last few weeks using a system from a small Canadian startup called Stroom, and I can assure you that I did live stream in 4K… from a cell phone.
Testing
Before the Stroom demo kit arrived at my house, I had a local church lined up to test the system. One Life Church is a multi-campus church that streams various parts of their main campus service to the satellite campuses. Their newest location in West Knoxville was planning a baptism service on May 6 and wanted to live stream it to their other locations.
Since the kit arrived May 1, this didn’t allow me much time to test before jumping in with both feet to a real-world use. Fortunately, Stroom’s dashboard makes it incredibly quick and simple to get up and streaming with minimal futzing.
I first powered up the included Google Pixel and launched the Stroom app (Figure 3, below). The app is almost incidental to making the system work since any parameters that are editable in the app (bit rate, resolution, audio sample rate, etc.) can also be made in the dashboard. I used the app to get started with the initial settings, but during testing and troubleshooting ended up using the app and web dashboard interchangeably to change settings on the fly.
Figure 3. The Stroom app
At first, I chose AVC as the encoder in the app since I was planning to stream to YouTube, which doesn’t yet support HEVC for live streaming. Later, I learned from Nicolas that either codec can be chosen for the stream. “This is one of the highlight(s) of our cloud platform: allowing users to use HEVC with YouTube/Facebook,” says Bernier. “Our platform will transcode to AVC.”
This means you can select whichever encoder makes the most sense for your stream and let Stroom do the heavy lifting on the back end. And while we’re discussing that back end, I’ll also point out that Stroom uses AWS for their transcoding, resulting in a very reliable service.
At the top right of the app interface (shown in Figure 3) there are two icons that represent USB signal and internet connectivity. A yellow icon means there is no connection. Green means everything is working properly. It’s a simple solution that makes it easy to judge whether you’re ready to go or not. At the bottom of the screen there is a start acquisition button that begins sending data to the Stroom service. I first tried the 3840x2160 UHD resolution and a 5,000 Kbps bit rate. Since I was on a mediocre LTE connection at the time, I wasn’t able to maintain the 30 fps rate that I selected. Once I knocked the resolution down to 1080p and 3,000 Kbps, the stream was immediately sorted out and smooth.
After nailing down the settings for my stream, I connected Stroom to my YouTube account by pulling the stream key from my channel. I copied and pasted the numbers into Stroom’s dashboard, added it, and immediately had it feeding to the live page on YouTube. If you’re accustomed to streaming to the big, public platforms like Facebook and YouTube, you’re no doubt also acquainted with lengthy delays between real time and delivery to viewers. While I didn’t notice a significant difference when using Stroom on YouTube, I did notice that Stroom’s dashboard preview is extremely close to real time. It wasn’t uncommon to see a half-second or less delay along with very smooth playback.
While Skyping with Bernier in Vancouver, I went through two troubleshooting and testing sessions before Sunday. We had most of the kinks worked out, but the 4k streaming continued to struggle. Nicolas thought it was related to the Inogeni converter, so he overnighted me his Epiphan Av.io converter to try. The theory was that the Inogeni was overheating due to a firmware issue. However, after attempting to use Av.io in its place, we reverted back to the Inogeni. The Av.io had issues with power consumption due to an in-built fan, and the power supplied by the USB source could barely keep up with the load. After a few more checks, I loaded up gear for Sunday morning’s stream.
Real-World Test
I arrived at the church about two hours before the service started to give us plenty of time to work out any last-minute bugs. Bernuer was on standby in Canada via Google Hangouts in case I ran into trouble. The church opted to keep the stream at 1080p since they weren’t confident there would enough bandwidth on our end to upload or on the other campuses’ ends to receive. This time, I chose a 1080p60 stream initially set to 5,000 Kbps (Figure 4, below). One concern I had going in was the fact that this new church campus does not yet have landline internet and is relying on Verizon Jetpacks. They currently get by with just one each Sunday since it’s used for only a few of their AV computers and not open to the general congregation. This proved to be fine until they started streaming their main campus’ sermon to one of those computers. Once that started coming down the pipe, our bandwidth suffered to the point of losing the stream entirely.
Figure 4. Streaming from the church at 1080p
We scrambled to get it back up and running at a lower bitrate, but it still wasn’t enough. Fortunately, one of the AV techs was able to turn on his iPhone’s hotspot feature for me exclusively. Once I connected to that, it was smooth sailing for the duration of the stream. One of the great features I noticed with Stroom was the ability to change parameters on the fly without stopping the stream. While Stroom doesn’t handle automatic variable bit rates, it’s irrelevant when sending a stream to a service like YouTube since it automatically adapts based on the end user’s connection. Stroom’s goal is to send the highest quality stream to whatever service is sending the final stream to viewers.