The Problem Statement
To ensure end-to-end security in the online proctoring system, the client wanted to develop a scalable media streaming solution. This solution would establish & maintain the entire audio/video session during an online test. As part of the important strategy to integrate media server capabilities in its digital proctoring application, the client chose KritiKal Solutions as its dedicated technology partner.
Screenshots
The Solution
KritiKal Solutions employed a team of professional developers to build the scalable media server application that would keep track on all media related services. The team was proficient in cutting-edge tools & libraries like FFmpeg, VLC, OpenCV, scripting methodology like Python, cross-platform JavaScript run-time framework like Nodejs, and it was well-versed in developing an enterprise-class solution that requires a more complex level of engineering. Leveraging this expertise, we built two modules i.e. Media Server and Media Streaming Server. The Media Server is capable of providing RESTful APIs for managing streaming sessions such as to start, stop and report the status of media sessions with various clients. On the other hand, the Media Streaming Server handles the end-to-end audio/video streaming.
KritiKal’s media server system works in conjunction with other pre-existing components of the digital proctoring system i.e. Test Engine, Test Clients, and Proctor Clients.
The media server system was designed using the following components:
HA storage server: This is a cloud-based storage server used to store and retrieve media files created during media sessions. The server resides on a private network of the Cloud Service Provider and are accessible to Media Server. We used AWS API to send and receive files from this server and ensure high availability.
HA Database Server: It is again a cloud-based server used to store session and system related information. It resides on a private network of the Cloud Service Provider and are accessible to Media Server. Herein, SQL connections are used to send and receive data from this server.
Array of Media Streaming Services: These servers directly receive and transmit media over RTP streaming channels from the end clients. We used H.264 for the transmission of audio/video content. Also, these servers access the storage and database servers for storage and retrieval of media and associated data and recording of media channel events and logs.
Our team implemented video processing algorithms and exposed Web Services based API to interact with the Media Server. Media Streaming server uses the following parameters to process the video streams: H.264 codec for coding and decoding of Video Streams; MP4 format to save the media files; vlc commands to facilitate the media streams; FFmpeg for saving the stream segments. KritiKal used NGINX web server to run & control all processes (through modules and python scripts) over the media streaming server.
Media Server: This is the important part of the Media Server System which provides Web Service based interface to the Test Engine to invoke all functionality through RESTful API over nodeJS. It provides Load Balancing, Health Monitoring and Allocation of Media Streaming Servers for Upload and Download stream sessions. The media server builds the interaction with Media Streaming Server using RESTful API over nodeJS. We built an interface to configure the various parameters of the Media Server System like IP Addresses of the Media Streaming Servers, IP Address of the Storage Server, IP Address of the Database Server.
RESTful API: The Media Server provides RESTful API to access functionality provided by Media Services module. Herein, each web request invoking API is independent of each other and acts upon separately; each web-request initiate one or more workflows in Media Services; each web-request respond individually with a response code after conclusion of work-flow. e.g. create media stream involves setting up streaming resources to receive stream from an external source.
Our dynamic team of developers worked hard to exceed the client expectations by equipping the application with Reverse proxy and Load balancer tools which address the malicious attacks e.g. Distributed Denial of Service (DDoS). Also, the RSA Key based authentication and AWS firewall were used to enable stringent network security.
• Establishing audio/video connection between Test Client and Media Server
• Establishing audio/video session between Proctoring Client and Media Server
• Recording the audio/video stream for test session on the predefined location
• Video analytics and auto alarm generation if a person or test taker goes out of the frame
• Video surveillance feed of managed proctored tests to Examiners
• Storing media streams for on-demand playback & inserting bookmarks in streams for Alert/Warning events and enabling proctors to take a snapshot out of the streams in case of any skeptical activity.
Benefits Delivered
By developing a scalable media server solution, KritiKal Solutions helped the client in improving the overall performance & functionality of its digital proctoring system. This, in turn, would significantly eliminate the risks of security breaches and other interruptions caused due to such security concerns. Having provided a secure mechanism for the access and subscription of media services, the client noted a significant improvement in the sale of its digital proctoring systems.
Technology Used
- Video Analytics
- AWS API
- Node.js
- NGINX Cloud Server