This is a long set of instructions that I uploaded into into a Discord server for Readercon 31, a local literary convention that had taken its 2021 event virtual. The intent here was for our Zoom host volunteers to be able to practice the full scenario of launching a meeting and livestreaming it to Youtube, since starting a live stream was a new piece even for some of our experienced volunteers. Some of this is specific to the way Readercon 31 was set up, but the overall process of starting a meeting and streaming it is basically the same. The funny hooks here are twofold: The meeting in question should have most of the parameters for its custom livestreaming set up in advance, with the streaming URL that never changes correct but the streamkey set to something bogus. And the host "configure live stream during the meeting" checkbox set. The Youtube stream should be set to "auto-start", so nobody has to be logged into the Studio to kick off a given stream. Auto-stop is optional, and is discussed herein. Zoom's "built-in" Youtube streaming is a completely different animal from this, shares way too much about accounts across domains, and offers absolutely no pre-configurability. Here we're basically using Youtube as a "custom" streaming service which means *WE* get to control all the parameters. The gist of the original instructions to our operators follows. ===== Here's a way to practice the full experience of launching a meeting as we will at the real con, starting a livestream, and seeing the output. The reason we can't do this under the normal self-training "anytime meeting" scenario is that your Zoom client must be logged in as something under the Readercon account umbrella, because streaming authorization is performed at that level rather than who happens to own the meeting itself. This is also a chance to coordinate with each other over Discord, and possibly see what happens when two people sign a client into the same Zoom account and try to start or join meetings -- in a harmless context that's not going to affect a live event. This is most important for the people intending to be Zoom hosts for the livestreamed convention tracks. First, a little bit about Youtube streams. Basically, a stream key is for the input side, i.e. the feed from your Zoom meeting, and a watch URL or youtube URL is the output that the public sees. They are bound together. Live streams are configurable to either stop themselves when their data feed stops, or to hang around and wait for another input connection and more data. If no more data comes in the latter scenario, the stream exits after about six hours of idle time anyway. At that point it simply becomes a recorded video for playback, however much actual data happened to land in it. The streams for the actual con are all set up already, and we will have some means of looking up the right stream keys for the real meetings we launch. But in the meantime, in my own playing around I wound up generating several streams under my own Youtube channel, to explore the process and possibly offer a backup origination point in case something went awry with the stream setup under Readercon. With few or no issues run into as the Readercon streams were configured, my streams are now expendable and with a bit of care, we can use them as useful crash dummies. So in short, you can start a Zoom meeting, start a custom livestream, stop the stream and kill the meeting, and then do it all over again. Or the next person can. Once a stream is started, it will stick around, and each new connection resets the six-hour idle timeout. So if I start a stream at 9am and send it two minutes of meeting, and then do that again a little before 3pm, and again at 8:30 or 9pm that night ... that one stream would be valid all day, even if the video viewable in it is only a couple of minutes, and finally die around 3am the next morning. In between, Youtube displays the output side of it as "offline", just waiting for its source to come back. [*Note: If the stream itself had been set to auto-stop, then it wouldn't hang around, but wrap up as soon as a feeding Zoom ended and become not-a-stream anymore. This is, in fact, how the convention streams are configured, one per session, so as soon as they're done, their "replay" becomes watchable.] So I'm going to list my streams that are still valid and usable, and a way to log into a meeting and start them. First, the spare Zoom account is: Username Password zoommaster@avian.org Iwant2send Now, this is a little confusing. A Zoom login is just an arbitrary string that happens to match a deliverable email address. This is not compromising anything at my domain avian.org; it's actually logging into a Zoom user *under Readercon's account*. The reason is that new Zoom users are added by an "invitation" process, and it's totally doable to extend an invite to new users outside your own domain. Once the invite is answered, the user login is set up as that email address but it's still under the originating account. Now, this also happens to be the user that "owns" our self-training 2 meeting. The difference between joining it and using the hostkey to become host, vs. signing your client in as this user under Readercon, is that 1> you get to practice the whole start/stop process as host, and 2> you get to play with stream feeds. When you go to launch a stream in this practice scenario, you should start the corresponding Youtube URL *first*, to see what it looks like and check its status. As people start to use these, you will either see "live in X days" if it hasn't been started yet, or "stream is offline" if someone has and it's in that idle period. Doesn't matter, if it's still there as a stream you can fire up the "self-train 2" meeting and feed it. After you've got the Youtube up, start your Zoom client, go to "meetings" as we've been showing, and start the "Self-training 2" meeting. If you get the scary "you have been signed out" Zoom pop-ups, that means that someone else just tried to do the same thing. You should still be able to *join* the meeting, pass host back and forth, mess with starting and stopping the streams, etc. Get used to what can go wonky and what effect it really has on your client login state, the meeting in question, and most importantly what it looks like to the viewing public when you start or stop a stream, show your own video or not, etc. Coordinate over our #tech-operations Discord channel just like you would running the real convention. In this case, tell your co-techs *which* stream you're going to be working with. Don't just pick a random one, try to use them in sequence so we can keep track of which ones are running and which ones are done. With careful management, these should last for the remaining days before con as people use them. If people are careless and just pick keys willy-nilly, then they'all get started, expire six hours later, and won't be usable anymore. Think about your co-workers and how you can preserve resources for them. I will try to keep realtime track of stream status in another message, which can get edited to reflect the current status, but your best bet for a pre-check is the Youtube link. So once you have your meeting going, click "..." and pick "Live on custom streaming service". There is a pinned batch of screenshots in #tech-chat showing what the steps of this process look like. [And that gives you more motivation to figure out navigating pinned messages in Discord.] The pre- existing livestream parameters for this meeting are deliberately set up INCORRECTLY, forcing you to set the correct stream key in the popped-up browser before clicking "go live". That's all you have to change. The URL that the data gets sent to never changes, and the "watch" URL doesn't matter because the public at large is not directly in our meetings. They obtain the real one via other means. Once you do all that and the stream is valid, you'll see the "this meeting is being livestreamed" [that pops up from your Zoom client], and the browser behind it with a progress bar. Or something similar, it may be a little different on your operating system. Obviously as host you don't want to leave the meeting, so once you click "got it" on that pop-up you can actually kill the browser tab even before it finishes "loading". Because all it's going to do afterward, is try to redirect to http://no.no which obviously won't work. Doesn't matter -- at that point yout stream is running! The browser was only a quick intermediary to transmit a command to Zoom, and now it's done and you're live. [Side note: why does the Zoom client kick out to a browser, instead of transmitting the stream-start command internally? Not sure, but it's likely that it's using some kind of "fetch this URL" library call that's stupid and only knows how to hand it to the MIME-type launcher that thinks everything in the "https://" universe has to simply invoke the default browser and pass the arguments.] So now, unmute, get some video going, play with screenshares, and watch what it all looks like on your Youtube playback. Kill the stream and start it again. If someone else joins the meeting, pretend they're a panelist and do your standard checks. Then you can pass host to them and they have full control within that meeting for a while. Bring in a second device [phone?] if you have it, to mess with basic Zoom control effects. Play and learn. Once you're all bored and decide to leave, go ahead, and to help others wanting to practice, note that you did so in #tech-operations even if you don't think anyone else is actively watching it. The point is that if someone else wants to play, and your "I'm done with streamkey ...-e1mv" message came less than six hours ago, the stream they used is very likely still valid. If you still see "offline" in the corresponding youtube ID, go for that one. Here's the initial set of stream keys and youtube IDs. Again, check the Youtu.be link first to determine stream status, then start your meeting and fire up the corresponding streamkey. streamkey output/watch URL ss9g-qjph-1wk2-3w77-eb7y https://youtu.be/geka8zqWihc at36-jk9r-gpfu-dpx0-fy0x https://youtu.be/1kTlHSqR7Nw fzkf-xc32-zjea-0yzw-e1mv https://youtu.be/MZUrn5Af5sM pv02-ak6s-azkt-hqt4-as2k https://youtu.be/FrfZYuLUwzs jpvj-wnm0-96z1-yhr0-2ejv https://youtu.be/XxgKPvA5YJs bd3v-zmya-7uzp-6787-deh9 https://youtu.be/nVhGPn5HzpE k8e1-afj5-tj64-qx75-923q https://youtu.be/aqqDtJg80ts x8cv-vgde-8fe6-v7jh-5dx9 https://youtu.be/VZbJ_F0BEO4 ubr3-mx72-ywwr-s4q8-0a9b https://youtu.be/Q1lIjU-Qbr0 atb7-wm1p-9bzb-aj2r-2dch https://youtu.be/xx1itrUAhu8 If people are careless and "burn" all of these too early, I suppose more can be generated, but I'd rather not. This is a chance to coordinate our operations and try to make them last as long as possible. This can likely carry everyone's hands-on practice, especially for those signing up to work tracks 1 and 2, right into when the con starts. Crank up that collaborative work ethic and have fun! [Note that if you have your own Youtube account enabled for streaming, you can also set up your own streams and run the exact same scenario with it. If you stream already, you very well may already know all this stuff. It was very new to *me* less than a week ago.] _H* 210804