Live streaming my high school graduation
A few days ago, I finally graduated high school.
But that's not the point of this post. Graduation is usually at a big concert venue, but due to the pandemic, it had to be done "drive-thru style" in the bus loop of my high school. This meant that extended family and friends wouldn't be able to attend. I offered to volunteer and live stream the graduation, and the school administration happily agreed.
I had never live streamed an event like this, so learning where to start and how to overcome logistical challenges was an interesting quarantine task.
Streaming software
The first thing I had to figure out was what software to use to actually stream. Whatever software I used had to do these things:
- switch between at least two cameras
- stream for hours at a time (the event would be 5.5 hours)
- show overlays
I found Switcher Studio, an app for iOS, which supported multiple cameras but they had to be either iPhones or iPads. I ended up going with OBS, the standard open-source software for streaming on desktop. I found an app called OBS Camera that let me plug my iPhone in via USB and get a low latency camera input in OBS.
Getting power
Choosing where to put the computer that would run OBS was difficult. I needed power. I could put it on the side of the stage, but getting a wired connection to the camera facing the stage would be impossible because the cable couldn't go in the road. Putting the computer on the sidewalk across from the stage was preferable, but there were no power outlets on that side of the road.
The school ended up parking an empty van on the side of the road across from the stage, leaving the engine running all-day and hooking an extension cable into the car battery. Not the best solution, but it worked and was reliable.
Internet connection
The school building was too far away to get a wired Ethernet connection, so it had to be wireless. The school gave me a Verizon hotspot to try, but Verizon service was unreliable in that location. The T-Mobile service on my phone gave around 4 Mb/s in upload speed, which was good. I tested both a few days before in the spot I would setup at.
Finishing touches
I bought a few extra long USB extensions cables. I got my sister and some of our friends to help out, so one of them would hold an iPhone on a monopod. The iPhone would be plugged into a PC on the long USB extension cable. They would run into the road once the car parked. The graduate would get out of the car, cross the stage, and the camera would follow them across. Once they exited, the cameraperson would get out of the way of the car, and repeat.
Another camera would be zip-tied to a flagpole to get a wide overhead shot of the entire stage.
I also wrote a script to scrape the school website, download each student's senior picture, and generate a transparent overlay of each student and their name. This overlay would be shown on the stream as they crossed the stage. Because everyone had to wear a mask and their cap, I thought showing a picture with no mask would be a nice touch.
The day of
I started setting everything up 1.5 hours before the graduation started. The network speed on my T-Mobile hotspot was <0.1 Mb/s, an external mic I was hoping to use wasn't recognized by my PC, and only one camera was working at a time in OBS. Time flew as I was trying to fix all of this, and graduation was about to start.
I got the mobile hotspot to work just in time. Putting it on the second-to-last rung on a ladder was the solution (but not the top rung). I started the stream with just one super-zoomed-out camera. During the course of the day, the service would randomly drop, but moving my phone to a new spot or height usually fixed the problem.
I thought each student would be called up in alphabetical order, but because the cars arrived in jumbled order, this was not the case. At first I was squinting across the road to see who was about to be called next, and searching through a folder to find their overlay. Eventually, one of my friends helping stood next to the announcer and told me through phone call who was about be called next. This helped a lot.
During a break, I got the second camera working and fixed the angle and zoom of the original one. During the course of the 5.5 hour event, the production value really shot up as stuff started to click into place.
I was one of the last students to graduate, and my dad took over the OBS streaming when I left. To say the least, he had some trouble but made it work.
Things I would do differently
- Use a wired internet connection
- Get everything set up 3+ hours before to make sure there are no problems
Over 3,000 people watched live, and the average watch time was around 8 minutes. The recorded version is live on YouTube for many more to watch after the fact.
Since the coronavirus isn't really going anywhere, it's a possibility that graduations next year will still have limited attendance. If so, I'm aiming to reach out to surrounding school districts and offer to do paid work live streaming their graduations, using the work I did at my school as an example.