Video Meeting Project


Project Goals

To develop an open-source video conferencing software using commodity webcams. This project is being developed as a direct replacement for ZOOM.

Status update

I'm pleased to say four of my graduate students at San Jose State University developed an open-source video streaming conference application as I have outlined betlow.

Source code

Source code for this project is located on Github at https://github.com/97pratyush/video_conf_app.

Note

The notes I've included below are legacy notes for my own implementation of a video streaming project.

Features

  • There should be a queue system in which users can connect to a waiting room. This could be especially useful in situations such as students waiting to meet with faculty during office hours. The waiting room should keep track of the following:
    • The FIFO (first-in, first-out) order in which students connect to the waiting room.
    • The amount of time each student has been waiting in the waiting room.
  • This system will feature end-to-end encrypted video and audio via SSL. Recorded video, audio, and text (chat) is stored encrypted on remote server using AES 256 bit keys.

General notes about implementation

  • There needs to be a back-end database to store user credential information. This includes login username and password to connect with the video/audio chat service.
  • There needs to be share-screen functionality to share the contents of a particular application or the background of the user’s screen. Maybe for simplicity, it can be simply the user’s desktop. That way, a user can then arbitrarily click any application and it will be visible to other users watching the streamed content.
  • All communication between users must use SSL sockets and an additrional layer of encryption using AES.
  • The application must run as a standalone application using QT.

Potentially useful libraries and open-source software to include in this project

  • FFMPEG streaming video library (need this for the server to multicast stream video to each client. https://ffmpeg.org/
  • Postgresql (relational database management system to store user credentials for logging into the video conferencing software
  • Jplayer (Jquery-based Javascript library) to stream and playback video: http://jplayer.org/
  • Jitsi at https://jitsi.org/
  • Tox at https://tox.chat/

Programming modules

  • Authenticator: This module will allow users to create an account (to stream as a host) OR view a password-protected video stream.
  • Streaming server: This module receives FFMPEG audio and video streams from a given host user then broadcasts that stream to respective users watching and listening to that host.
  • Scheduler: This module allows a user to schedule a video meeting as a host. The meeting may be enabled as multi-cast (one or more concurrent viewers of host material) or as single-cast (one viewer of host material)
  • Recorder: This module allows a user to record a video stream. Video is recorded to a remote server. This function must be enabled by the host.
  • Notifier: This module sends email notifications to respective recipients and the host of an upcoming video stream.
  • Queue: This module retains the FIFO (first-in, first-out) order that users are waiting to meet with a given host in a one-on-one video conference. This is for office meetings.
  • Annotation: This module conducts real-time captioning of audio for hearing impaired.
  • Player: This module plays prior-recordings of video streams stored on a server.
  • Encrypter: This module uses GNU Crypt to encrypt all recorded video, audio streams, and text of annotated audio (if applicable) stored on remote servers using AES 256 bit keys.
  • Decrypter: This module uses GNU Crypt to decrypt all recorded video, audio streams, and text of annotated audio (if applicable) using AES 256 bit keys.
  • Chat client: This module allows a user to send text (chat) to one or more users in the conferencing system.
  • Chat server: This module broadcasts chat message to appropriate recipients on conference system.
  • Chat recorder: This module allows one to record the transcript of a chat message.

Database Schema: Video meeting project

Note: this schema is work-in-progress and is subject to revision.