A note on streaming lectures

08 Jul '20

So it’s been a rough year. After starting the semester in February with half my class of 400 stuck at home in China, we ended up fully-online in March and managed to get the class over the finish line in June—phew! In the few short weeks (days?) before starting all over again at the end of July, I’ll just set down a bit of info for how my online teaching setup works.

This post is about my approach to lectures, and I’ll have another about tutorials/labs soon.

Lecture Setup

Recorded lectures are hard; there’s always the temptation to do more takes, and video editing is really time consuming. I know that I’m a better performer just delivering lectures live and accepting a few small mistakes, so I chose to focus on streaming engaging and entertaining lectures synchronously, tracking with the normal class timetable. This gives my students opportunities to have live (or almost live) Q&A during lectures and provides a bit more structure in their week.

Here’s the key parts for my streaming setup:

  • OBS studio - for video and screen capture, chroma keying, scenes, and streaming to…
  • restream.io - to send the stream to multiple endpoints; I send to YouTube, Twitch, and…
  • Microsoft Stream - to provide an “official” way for ANU students to watch the lectures, and to integrate with…
  • Microsoft Teams gives the students an “official” chat platform and a first port of call for interaction with me and my tutors. You can add a Microsoft Stream channel as a tab within a Team so that the latest lecture is just a click away for the students.

Here’s what this all looks like:

A diagram of my streaming setup from OBS to restream to multiple platforms with feedback through Teams

And here’s a short video about how it works:

Some more details…

Here’s a few more details about each part of the system.

OBS Scene Switching

I’ve set up a couple of “scenes” within OBS; e.g., one with me superimposed on the right, one on the left, one where I fill the screen for an intro. I also have some “static” scenes for starting and finishing lectures so that I can start streaming before I actually start talking.

There’s lots of ways to switch scenes in OBS (e.g., key combinations, or extra keyboard controllers) but I’ve found using my iPad and OBS websocket is most convenient.


Teams has ended up being the centre of our synchronous online teaching. It’s great to get chat with students and to see their “real names” (not screen names), and it’s neat that you can integrate a Microsoft Stream channel.

As it turns out, students like watching lectures on a screen (most of them have been doing so for some time), and they also like asking questions through chat rather than a microphone. The students ask me questions through Teams chat and I can either answer them in real time, or sometimes the other students jump in and find an answer themselves. The only trick here is to remember that the stream takes a while to get to the students (e.g., 15-60 seconds depending on settings and platform), so you have to pause during lectures sometimes so the chat can catch up.

Streaming to multiple endpoints

It’s hard to get students to watch lectures synchronously, so I thought I’d try going to where the students live for their normal online content: YouTube and Twitch. Twitch in particular is a really fun platform with lots of inspirational live content (e.g., Jonong and Lara6683).

Some students tell me they enjoy seeing classes come up in their feed and a few did tend to jump into the Twitch chat. After a few lectures we came up with a good system: “Twitch chat for memes, Teams chat for serious questions”, just so that I didn’t have to monitor all chat channels simultaneously.

Restream makes streaming to multiple platforms very easy. OBS has a preset included for streaming to Restream, and then Restream takes care of connecting to all the other platforms. Restream also automatically creates new live events on YouTube, Twitch, and many other platforms, can update titles and descriptions automatically. It can even collate the chat across multiple platforms.

Microsoft Stream

Stream is a slightly wacky corner of Office365 which pretty much does what it says on the tin: host live streamed and pre-recorded video events.

Unfortunately, and unlike YouTube and Twitch, Stream doesn’t integrate with Restream.io, so each live event has to be set up manually, creating a new RTMP address to stream to which needs to be copied into restream before each lecture.

There’s a bit of info in Stream’s docs about connecting directly to OBS, which also applies to working with Restream.

I’ve found Stream works perfectly well with 1080p30 streams.

I’ve found it helpful to add Microsoft Stream as a “tab” within the Microsoft Team for my class so that each lecture has an associated chat stream in Teams.

But what about Echo360?

Echo360 is the automated lecture recording system installed at the ANU. It works well for zero-hassle recordings in lecture halls and has many interactive learning features that can be used online.

Even though Echo360 provides streaming, I don’t use it because you can’t stream to it from OBS studio (they only support their own streaming tool, which, among other issues, doesn’t work on Linux).

If Echo360 ever want to make RTMP endpoints available to users then I would love to include it in my system, but at the moment, I’m stuck uploading the streamed videos after each lecture (😐).