Acquired knowledge about Zoom/Youtube streaming setup

  This is a summary dump I sent to a colleague about a month after Readercon actually ran, where I dug back into my notes and pulled out the major points I'd learned about Zoom --> Youtube streaming.  This all applies when we use Youtube as a "custom streaming service", which gives us the chance to change all the parameters of how it works over the network -- unlike Zoom's built-in "Youtube" integration which is just awful, compromises your Youtube account security, and doesn't allow us to configure anything.

Streaming to a large-scale service is a cheap and effective way to run a few-to-many event setup in the style of a webinar, without paying through the nose for Zoom webinar licenses.  A couple of meetings whose join parameters are only known to the host and panelists, a stream, and you can have thousands of people watching.  All you need is some side-channel for questions/comments, for which Discord is one solution as long as you can convince your attendees to not be terrified of using it.  Any chat system that's accessible to everyone attending will work fine.

Date: Thu, 23 Sep 2021 09:58:22 -0500
Subject: YT streams

I'm gonna be out a good part of today and tomorrow so won't be around to go
over youtube streaming stuff, but I reviewed some of the stuff I learned
from Readercon and made some notes.  Here are some of the major points..

You're probably already through the 24-hour holddown time Google imposes on
any account that wants to stream.  If you haven't set that up, do it NOW...

Output bandwidth is tied to the generated stream-key for some reason.  You
get to fix that when you generate the new stream.  I evidently screwed this
up for something I wanted to stream at full 1080p, and it irrecoverably came
out in 720 and looked pretty awful because I was describing screenshares.

The "stream URL" is always the same, the rtmp:// link, and that's what also
plugs into that field in Zoom.  The stream *key* is what varies, and it ties
directly to a single or watch?v=VIDEO-ID viewing link.

Setting auto-start lets the stream fire itself up as soon as Zoom starts
sending with a proper streamkey -- you likely want that set, so you don't
have to get back on Youtube at go-live time and poke it manually.

Setting auto-stop will kill the stream as soon as you stop feeding it, and
turn that stream into a re-watchable replay.  You probably do *not* want that
set, because you want the stream up all day, right?  Unless you're going to
break the day up into separate chunks with different keys/URLs.  The point
is, if a host screws up and kills the stream from Zoom for some reason, not
allowing auto-stop will let it pick right back up again when the Zoom stream
re-starts with the same key.  It will hang around waiting for further data
for six hours or more, from my experiments.

A caveat with that is that the current host *has* to be logged into some Zoom
account under your umbrella to start a stream at all.  Just because it's your
meeting doesn't matter; the zoom-client creds of whoever happens to be hosting
*right now* are what's checked at that level, so Zoom either denies permission
[if someone's in on their personal account] or asks for a valid login.  You
might want to spin up an expendable sub-user under your account that you can
give someone, that doesn't compromise your main owner account.  For that you
need a secondary reachable email address, which can be anywhere.

The "DVR" setting is what allows back-seeking in an active stream.  We
disabled that for Readercon, as we wanted peoples' experience to be only
"realtime" at the time and then they could go back and watch replays later.

Normal latency is about 20 seconds; not sure about medium.  Fast latency
settings is about 2 seconds delay but that disables auto-captioning.  For all
our fiddling with that, we could never make realtime auto-AI-captioning work
either way, and simply relied on the Zoom variant.

You probably want to edit the customizations and kill the chat entirely.  Also,
set "not made for kids" which I think is the default anyways, as stuff that
a streamer says is intended for kids gets different scrutiny.  Bawdy chanties
probably don't qualify and might get you shut down...

The "scheduled time" for the stream really just doesn't matter, it's just a
target for the countdown clock.  I have a never-started stream from last month
that's still sitting around, and will remain until I either feed it from a
source or just delete it on Youtube.

I would leave the visibility set as "unlisted" until maybe later, if you decide
to make the replay public, but you probably want an editing pass over the
result before making it public.

Then, on the zoom side ... review my main writeup for more hints on how we
set up the meetings.  The stream stuff is hard to find; once you create the
meeting you have to re-click it, but on the meeting listing itself and NOT
the "edit" button, and then the stream stuff is down below.  The stream URL,
again, is the rtmp:// stuff; we left the key set to "0" to deliberately make
it invalid until the host launching the stream fixed it.  That's the "host
enters stream details" checkbox; otherwise Zoom will just try to immediately
stream using what you gave it.  The URL in that stuff is also irrelevant; it's
just what shows up in the meeting as the "watch on live streaming service"
link.  We also set that invalid, and here's why: Launching the stream invokes
the browser.  Once you get through the form, the browser tries to *switch
to the watch URL* after a timeout, thus shoving the youtube in the host's
face whether they wanted it or not.  1> You will likely be distributing the
watch-URLs through the website anyways, and 2> a host should already be
watching the output in a different window to make sure it starts properly
and is prepared to suppress its sound, etc.

I believe the view that Youtube gets is a simple "follow host view" from
whoever is currently the HOST, even if the host is hidden.  Anyone's video
that is turned off is simply not shown, so you don't get their avatars either.

I think that's it for my hastily-dug-up points; sorry if you already know all
this stuff.  It was all new to me last month.  I have to go out today and am
busy well into the weekend, but might be reachable by phone/txt if you want
to natter about anything else you run into.

_H*   210925