Thursday, April 30, 2020

Use OBS with Zoom on a Mac

We've been running weekly assemblies in the Junior School using Zoom Webinars. Attendance is high, about 500 participants per assembly. We're using Zoom Webinars since it doesn't involve any extra tech (software or hardware) and there's little training needed since the camera and audio feeds switch automatically. We just need to be careful on our scripting and intros and outros to avoid talking over one another.

The lack of switching control makes it difficult for us to control what the participants see, and all graphics or chyrons must be pre-installed on every participant's computer. We use Zoom's screen share to show videos or graphics and while it serves its purpose I wanted a bit more control over everything.

The first thing to do was to setup the OBS output as a virtual camera. Easy enough on Windows since there's a popular plugin for it, but the Mac plugin is a bit trickier. It's straightforward enough to clone it from Github and install it using Homebrew. You must install OBS first since the following script clones it and packages it with the plugin. Note that Zoom has now pushed out version 5 which may break the virtual camera detection. You may need to unsign Zoom to get it to recognize the virtualcam:
codesign --remove-signature /Applications/zoom.us.app/
We need to have OBS recognize the audio input from Zoom and mix it with input from OBSHost's microphone so an audio mixer like iShowU would work. Thankfully there are quite a few streamers on Youtube that have walked through the process they use to be pro streamers. Apple has also a support document to combine multiple audio interfaces (called an Aggregate Device).

Once you have the cloned OBS running you can start the virtual camera in OBS and use it as a camera source in your meeting software. We use Zoom and Google Meet and both work well. However, only Zoom has a "mirror camera" setting so you'll need to horizontally flip the output if you're using Google Meet.

I didn't want to drop into Terminal everytime I wanted to run OBS so I wrote a shell script that launched it. Unfortunately, you can't add scripts to the dockbar in MacOS so you can use Applescript to package it as an app:
tell application "Terminal"
  if not (exists window 1) then reopen
  do script "cd /Users/USER/obs-studio/build/rundir/RelWithDebInfo/bin/" in window 1
  do script "./obs" in window 1
end tell
Add your favourite icon file and drop it into your dock!

So now that you have full creative control in OBS you'll need to get your workflow straight. Everyone joins the Zoom Webinar as a panelist, including the OBSHost. The Webinar settings are set so the OBSHost is pinned in speaker view as the only speaker. OBSHost is using the OBS output so all attendees only see the mixed video output complete with chyrons. OBSHost has already set multiple scenes and pre-loaded video or graphic clips to cut to on the fly. OBSHost has also imported every panelist and cropped out extraneous information. OBSHost now has complete editing and mixer control!

An alternative would be to have OBSHost as the only panelist in the Zoom Webinar. This guarantees the view will only be the OBS output with no automatic switching. All panelists would need to connect to OBSHost using another meeting program, like Google Meet, because Zoom only allows participation in one meeting at a time.

Monday, April 20, 2020

The Week 3 reflection period

The BC government suspended all in-class instruction for K-12 on Tuesday, March 17. This was the second day of spring break for my school and only four days after we held a special staff pro-d. The pro-d was focussed around the COVID-19 pandemic and how it might impact our school, community and families. It was an emotionally charged day where professional and personal interests collided.

Professionally, I focussed my energy on preparing teachers for the three scenarios that could happen. There was a lot of unpredictability at that time with schools in Washington state, Ontario and many other jurisdictions already closed. We were preparing ourselves for BC to follow suit for probably three weeks leading up to March 17. This uncertainty greatly contributed to a dispersion of training and attention to a wider spectrum than I would have preferred.

The first scenario involved no suspension of instruction and schools remaining open. Note that our current suspension only involves in-class instruction and schools are still technically open. This Level 1 scenario could look like:
  • School is open, no restrictions on physical gathering or interaction
  • Few students or teachers away for prolonged absences due to self-isolation, quarantine, sickness, etc.
  • Somewhat predictable dates of returns and departures
This scenario could lead to either greater suspension orders or relaxation. I suggested that if Level 1 were to come into effect that we should treat it as a precautionary exercise in training and practice since the global effect of COVID-19 was increasingly negative. So the educational priority would be:
With unpredictable absences how do teachers keep on top of tracking and monitoring, and avoiding repeating missed instruction, and support returning students?
To address this, we would focus on increasing our digital presence on our learning management systems, specifically Seesaw and Google Classroom. We use Blackbaud K-12 as our SIS and while it does have LMS features, the Junior School sees much more viability out of Seesaw and GClassroom due our constituent's ages.

The Level 2 scenario was the one I did not want to see happen because it would involve a trickier uptake period:
  • School is open, some restrictions on physical gathering or interaction
  • Increased absences
  • Many students or teachers away for prolonged absences due to self-isolation, quarantine, sickness, etc.
  • Unpredictable or variable returns and departures
Keep in mind that these scenarios would have bearing on teachers as well as our student families. So teachers that see perhaps half of their class staying at home due to sickness or purposeful distancing would probably be experiencing that in their personal life as well. This would make training and consistency very difficult for myself and administration. The educational priority would look like:
Ensuring continuity of learning with larger numbers of active, but physically away, students
Continuity would come from a consistent distribution of learning materials. The simplest solution would be to record in-class instruction and provide it online for at-home students. This could be a camera recording the entirety of the lesson, or a screen recording of instructional slides and audio, or posting of learning materials. In any of these processes teachers would need to feel comfortable recording their teaching in some format. They would be creating mixed-learning environments where virtual and physical students are together simultaneously.

Level 3 was the most severe closure scenario and the one that we find ourselves in now:
  • School is closed, restrictions on physical gathering or interaction (ie no off-site campus alternative)
  • No physical attendance
  • 100% distance learning
For my role, the educational priority was to support teachers in a transition to a fully virtual environment and establish processes to maintain community well-being. It's this last portion that proved to be the trickiest since we would have to remain flexible in the first few days to make adjustments. All stakeholders would be understandably stressed and anxious and we didn't want to make drastic changes in response to knee-jerk reactions. Communication was the key and making as many decisions as transparent as possible.

The education technology side remained steadily consistent. We focussed on delivering fully digital lessons using technology tools that were already in use or extremely simple for our community to use. I created a minisite that listed all the technology tools along with a length embedded GDoc of step-by-step tutorials. This minisite was key since it was our main point of information and made our tools and strategy clear for any teachers to see.



For online meetings I made all teachers use Google Meet for their first student contacts. The reasoning was two-fold: GSuite was embedded in our environment and would be instantly familiar, and our alternative of Zoom was facing severe privacy and security concerns. I did not want to address Zoom issues this early in our transition except to say that Zoom "satisfied our school's and the BC Ministry of Education's data privacy and security policies." The Ministry vetting came via Minister Fleming where he announced licenses had been acquired for all public and independent schools in BC, a shocking proclamation so early in the closures.

Our LMS use was dependent on age: Junior Kindergarten to Grade 4 would use Seesaw and Grades 5-7 would use Google Classroom. This was consistent with the rest of the school year but further illustrated the divide in adoption for Seesaw. This year was supposed to be the first year of mandatory use of Seesaw in Grades 5-7, however to accomplish that with the transition to distance learning would not work. It would simply be too much for teachers and families to pivot to something they hardly used. GClassroom also provided the necessary GSuite integration and communication tools we needed for intermediate grades.

I also knew that teachers would rely heavily on video instruction. It would be too difficult and time-consuming to create PDFs or GSlides for everything. In addition, pastoral care would be critical since students would want to see their teacher. To serve this I emphasized selfie videos and screen recording. More recently, we added interactive whiteboard and document camera recordings. I greatly enjoy Loom but Screencastify has also been offered as an alternative.

The Week 3 period was suggested by schools in Asia that had been closed for many more weeks as a reflection period. By this point, we would have worked out most issues and our community would have settled into a predictably pattern. So far that remains true but with (likely) many more weeks to go I am hoping we are able to hold the front, both physically and mentally.