Inspiration

Due to the COVID-19 pandemic, the number of students and educators involved in remote learning are at an all time high. I wanted to focus on creating solutions to problems that I have personally noticed in my remote learning experience.

What immediately came to mind were the recurring problems with sharing video in my Korean 203 (Intermediate Korean) course. During lecture, we would watch and discuss Korean films. My professor would frequently pause the video or rewind/skip ahead to ask questions, clarify something, discuss what happened, etc.

Like many students, we attended lecture through Zoom, and the natural solution to share videos live was to screen share through Zoom. However, this proved to be a problem as the output video was often laggy with very low fps and the audio was choppy and either too loud or too quiet. Of course, you could adjust your computer output volume accordingly, but when someone starts talking, that person would sound either too loud or too quiet.

I talked to some friends who are also involved in remote learning about their experiences with educators sharing videos through Zoom. Many of them had taken a STEM course where lab demonstration videos were frequently shared live during lectures. Everyone I spoke to had a similar experience as me, and was frustrated with the suboptimal learning experience.

What it does

EDUcast is a tool for educators to stream live, synchronized video to their students. It allows educators to upload videos to the cloud and retrieve them later through a video-specific link that can be shared. Any client accessing the link gets the video streamed from the server. Whenever the educator skips to a different part of the video or pauses, all of the videos streaming to other clients will be synchronized accordingly in real time. Each client accessing the stream will be able to adjust their own output volume, right on the web video player. Streaming directly from the server to individual clients results in smooth video with no fps problems, clear audio, and a more engaging learning experience.

With EDUcast, you take on a one-time latency cost when uploading the video, rather than experiencing continuous latency throughout a screen share session. The strain of streaming the video is taken on by the Node.js server, rather than the educator's device and network.

How I built it

I built the backend using Node.js and the Express framework. For the frontend, I just used the Embedded JavaScript (EJS) template engine. For bidirectional communication between clients and the server for video synchronization, I utilized websocket technology through the Socket.IO library. This is all hosted on an Azure VM instance.

Challenges I ran into

The main challenge was figuring out how to use websockets on the server and client to achieve real time communication. This was my first time using Node.js and Socket.IO, so it took a while to properly integrate the library on my Node.js server.

Accomplishments that I'm proud of

Working with new technologies to create a simple tool that can provide real value to educators.

What I learned

  • Using Node.js and Express
  • Using Socket.IO to utilize websockets
  • JavaScript, HTML, CSS

What's next for EDUcast

  • Chat system for video streams: Can be useful for discussion, asking questions, etc.
  • Allowing educators to organize their uploaded videos by courses that they teach.
  • Password protected video streams and name logging for students
  • Integrating video uploads from YouTube and other video platforms with educational content.
  • Thinking about scalability, and storing/encoding videos in a sustainable way.
  • White board feature for streams: Can be useful for pointing things out by marking up the current video frame.
  • Cleaning up messy Hackathon code.

Education Track Submission

Share this project:

Updates

Submission history