Day 7: 24 Insights in 24 Days New Year Marathon
Remote Workflow For Production & Post
Early in 2020, as the Covid-19 pandemic began its brutal hold on the world, remote became a buzz word for many of us.
Many of us in post scrambled to build suitable setups in our houses – often taking over a spare bedroom, closet, or at least in one case that I know of – a bathroom! After months of little or no production, later in the year when productions got back to it, remote was also a big buzzword as productions tried to minimize the number of people onset.
In both production and post, companies and projects of all sizes juggled a multitude of issues to become remote. Perhaps the largest issue was ‘how do we get clients who can’t be onset or in a suite to see & hear high-quality video & audio?’
Remote streaming to clients is something I’ve been working on for years – not because I had imagined a global pandemic, but because I saw it as a way to expand my geographic reach – working with clients that I might not have the opportunity to with otherwise. So, when the pandemic hit I was largely prepared to have a real-time option for clients. But for lots of people in production and post, real-time remote streaming was a completely new challenge.
While I’ve been invested in solutions from Streambox for years, 2020 brought many new options and many of them really compelling. Companies like Blackmagic and AJA got more serious about streaming — each launching a series of products. YouTube, Vimeo, and a plethora of existing streaming services enabled more pro features and enterprising startups attacked the real-time streaming ‘problem’.
One such company in that latter group is SetStream.io.
Recently I had the pleasure to sit down with DIT, Colorist, and SetStream.io principle Thatcher Kelley and talk about the product that he and his partner Kelsey Wood have developed.
What Is SetStream.io?
As Thatcher and Kelsey put it on the SetStream homepage, SetStream.io is a Virtual Video Village. For those of you not familiar with the term – a video village refers to a viewing environment setup on or near set that production staff and clients can use to view what’s being shot. And even though a video village is on or near set, it is in fact, a remote setup.
The use of this term makes sense as Thatcher spends quite a bit of his time on set in his role as DIT.
I first heard about SetStream.io from a Lift, Gamma, Gain forum thread where Thatcher was describing the early stages of building out SetStream.io. Initially, I dismissed the product thinking it was solely geared toward production, but after talking to Thatcher (who’s very generous with his time – I sent a lot of emails!) and testing the product, it’s a fantastic tool for what I need in my color correction business – real-time streaming to clients for the purposes of supervised creative sessions and/or remote real-time review sessions.
While SetStream.io is a great fit for streaming cameras from on-set to remote clients (and recently the team added the ability to stream up to 4 cameras at the same time!), don’t let the name or the video village concept confuse you – it’s a more than capable platform for postproduction.
Before we get to the chat with Thatcher let’s take a look at the basics of a SetStream.io workflow
Signing Up & Adding Passes
SetStream.io currently works with a pass system.
What that means is you can buy a pass for X amount of minutes for Y amount of viewers. This flexibility allows one to choose the right match for their project but also, and I think this is the cool thing, you can buy passes per your need without the requirement of an ongoing subscription – although the SetStream team is planning to offer a subscription model in addition to the pass system for heavy use users.
I’ve been using the 1 and 3 Hour, 5 User passes quite a bit. For most of my work, I’m streaming for the purposes of a review session, not a traditional supervised session, and I find for spots or short-form the hour-long pass is usually sufficient. For long-form, the 3-hour pass usually works well.
Before you get time anxiety, don’t worry!
You can stack passes by adding multiple passes to your account. So for example, if you’re reviewing a feature and you’re creeping up on that 3-hour mark but only have a few min of the film left to review, you can activate a one-hour pass with the same number of viewers and keep on streaming.
I’ve found that I’m pretty consistent with how much streaming I’m doing each month so I often buy a number of passes in advance, but if you don’t want to do that, you can of course pay as you go.
There are also all-day passes available that vary on the number of viewers – I think these are a perfect fit for onset use or for those of you in post who are doing more traditional supervised sessions with an agency and have various people ‘dropping in’ throughout the day.
Of course, if there is a combo of time/users that you need specifically just drop the SetStream.io team an email, they can customize things to better fit your specific needs. Also, if you’re not quite ready to purchase a pass, there is a free trail pass that allows for one hour of streaming with up to five users.
The SetStream.io Dashboard
After getting your account and whatever passes you want to purchase all set when you log in, you’re greeted with an account dashboard. It’s on this page you can create new projects (top of the page) as well as see the passes you currently have connected to your account (bottom of the page):
When it comes to how you add projects the choice is yours – you could create them for a specific project i.e. Friday’s review session or create them based on a client (as I do) or some other metric.
Clicking on a Project URL brings you to a Dashboard specific to that project. It’s on this page you’ll do several things – I’ve numbered them here so they’re easier to identify, not to denote a required order of steps.
#1 Activate Passes – with this pull-down you can choose the pass you want to use for the project/streaming session. You can also quickly activate another one from this pull-down if you’re getting close to time with a particular pass.
#2 Viewers – On this tab, you can invite viewers to the stream. All you need to know is their email. You can also enter a message that is included in the body of the email.
#3 Monitor – Think of this tab as a confidence monitor for the stream once you’ve connected a signal and have started streaming. A nice feature is the ability to break out the video box from the browser window.
#4 Broadcast – On this tab, you can choose a UVC device (discussed below) and start streaming. If you’re using an external encoder (RTMP) or something like OBS studio you’ll likely not need to use this tab.
#5 Keys – This tab provides RTMP and WebRTC (For OBS) keys. For security, it’s vital you protect these keys! For more info on setting up the popular ATEM Mini Pro via RTMP to SetStream.io check out this support article.
#6 Number Of Cameras – A new feature of SetStream.io is the ability to connect multiple cameras/devices so you can switch between them on the stream. This option lets you choose how many sources you’ll be streaming.
#7 Text – In this area, you can send status notifications that end up on the viewer’s page when viewing the stream, as well as see any incoming comments from clients.
Connecting To SetStream.io
One thing you might be wondering is ‘how do I connect to SetStream.io’? There are two main ways of doing this:
WebRTC. The beauty of WebRTC is that it’s designed first and for most as a browser-based communication protocol. You can set up a stream via the broadcast tab using any (UVC – USB Video Class) input device recognized by your system. UVC compatible devices include the BMD ATEM Mini Pro, Web Presenter, AJA U-TAP HDMI or SDI, webcams, mirrorless/DSLR camera, etc. Some devices like a Decklink card can also ‘act like’ a UVC device. For more advanced control, there is a special WebRTC version of OBS Studio that you can find on the SetStream.io website. Using this version you’d simply grab the WebRTC via OBS stream key from the keys tab on the Project Dashboard.
RTMP with external hardware. SetStream.io also supports RTMP (Real-Time Messaging Protocol) via external encoders. Many hardware devices support RTMP via Ethernet connections including some of the hardware I mentioned before like the ATEM Mini Pro. The advantage of devices like this you can bypass a computer entirely and simply connect the device to your network to interface with various streaming platforms including SetStream.io. The downside is that RTMP generally has more latency than WebRTC. To use an RTMP device with SetStream.io you’ll just need to grab the key from the keys page of the Project Dashboard.
Note: if you are using an ATEM Mini Pro you can add SetStream.io as a service by editing the Streaming.xml that the Mini Pro uses. SetStream has already done this and you can grab an updated XML HERE – just remember to back up your original!
In general, these different options provide flexibility in how you want to build a streaming pipeline with SetStream.io, and because of that, you’re not tied to proprietary hardware or software like some other streaming platforms.
WebRTC? RTMP? Codecs?
I’ve kind of made the assumption that WebRTC and RTMP are in your vocabulary. If they are great, but if not let’s take a moment to discuss them in a bit more detail.
Both of these protocols allow for streaming to endpoints and are valuable for working with remote clients.
Let’s take a high-level look at these protocols:
WebRTC (Web Real-Time Communications) – WebRTC is an ultra low latency communication protocol. When it comes to streaming video content, on fast networks (via ethernet) you can achieve latency as low as 200-400ms! Low latency is the main advantage of WebRTC but it does require a computer to do the stream encoding (there are some stand-alone WebRTC encoders coming, but not yet available) color accuracy is generally very good with WebRTC although depending on the pipeline there may be several conversions happening.
RTMP (Real-Time Messaging Protocol) – RTMP is a slightly older protocol, but its advantages are ubiquity – it’s implemented pretty much everywhere – including standalone encoding devices. The downside of RTMP is latency. Multi-second latency is not uncommon with RTMP depending on network conditions.
So which to use? I’ve been having the most luck with WebRTC. For post workflows especially, the lower the latency the better. The downside is a computer needed to encode and pipe out the signal, but especially in post workflows, this is seldom an issue.
However, the advantage of stand-alone RTMP solutions can’t be underestimated especially onset.
When it comes to codecs you have the choice of the usual suspects. VP8 (roughly equivalent to H.264) is a good choice for WebRTC. VP9 (roughly equivalent to H.265) can offer better performance but is less compatible with browsers. Of course, H.264 and H.265 are also choices especially with RTMP devices with H.264 being (currently) more widely implemented.
The Client-Side Of SetStream.io
When it comes to viewers watching a stream, as I mentioned before, it’s as easy as the viewer clicking the link they get in the invite email and entering the provided password.
However, there are some general ‘rules’ I give clients for watching any stream:
- Disable any true tone or automatic brightness controls
- Avoid direct lighting and excessive ambient lighting i.e. windows or viewing outside
- On mobile devices setting screen brightness to about 50% is generally a good approximation for reference brightness levels
- Specifically for SetStream.io, I’ve found Chrome on both Mac/Windows to be the most stable
- iPads, iPhones, and recent Android devices are pretty darn accurate – likely way more than some random computer screen, so use them if available
While there are issues with browser color management, I can’t argue with the simplicity on the client-side of things. No firewall rules to set up, no proprietary players to download – just click a link, enter a password, and a client is watching.
A Chat With Thatcher Kelley
As I mentioned earlier, I first became aware of SetStream.io after following a few discussions on Lift, Gamma, Gain where SetStream.io principal and partner Thatcher Kelley was describing the infancy of what would become a robust real-time streaming solution.
As I’m prone to do, I reached out to Thatcher to learn more about the product and what he and his partner Kelsey Wood had planned for SetStream. After dozens of emails back and forth with me asking questions and banging on the product, I realized I should record some of this back and forth! So recently I set down with Thatcher (via Zoom of course) to talk about SetStream.io. In our talk we cover:
- Thatcher and his partner’s background
- Where did the idea for SetStream.io come from?
- What void/role does SetStream.io play for both onset and post workflows?
- Pricing scheme
- How to connect to SetStream.io
- Tech Talk: WebRTC & RTMP
- SetStream.io workflow – passes, connect, stream
One of the things that impressed me most about talking to Thatcher (and you’ll hear him say this a few times) – there isn’t anything revolutionary about what they’re doing but they just want to make it simple for the end-user and clients. It’s that ethos that I think is needed for creatives to really grab onto a streaming solution and so far I think they’re doing a great job.
I hope you enjoy the talk.
Remember, if you have anything to add to the conversation or any questions please use the comments below.