At the first stage of the project, our specialists were working on Proof of Concept. We needed to specify the optimal technological stack and define how the program is going to work.
In the user interface, our team placed 16 windows: one for the Teacher and 15 for Students. Then we launched the program trying to achieve the stable working of all video streams.
The concept of the app was the following:
- before a lesson, a teacher uploads the audio to the app;
- a student books a lesson and pays for it;
- when it’s time, a student opens the app or enters the website via a mobile device, authorizes in, and receives the prepared audio;
- the system estimates the speed of the data transmission channel and tracks when the student joins a lesson.
After choosing the tech stack and testing the PoC, we divided each lesson into stages: Warm-up, Explanation, Practice, Monitoring, and Summary. Each of them has its own set of features.
One of the most difficult stages of the lesson is Practice when students begin to dance simultaneously. At this stage, our team needed to achieve the perfect synchronization of 15 video streams.
The synchronization issue arose since each user had a different connection speed, location, and Internet provider. Therefore, our experts have deployed the Wowza media server, which collected all the video streams. Then we placed the media server and the application website on Amazon, which reduced the overload for users’ devices.
Synchronization was achieved through FFmpeg – a tool that allows you to manipulate the transfer of audio and video streams flexibly and conveniently. To display video streams without using third-party systems, we decided to use WebRTC technology. It was a perfectly suited solution for secure video streaming via a browser.
Our specialists provided data transfer between users and the service over an encrypted channel (SSL/TLS).
The dev team followed an iterative approach. Our specialists performed tasks in parallel with the continuous analysis of the results and adjustments to the previous stages of work.
Throughout the project, the IntexSoft team worked closely with the client, since he was an expert in the field of the dance industry. The work was performed in a continuous testing mode, where the client took an active part. During the cooperation process, the developers were demonstrating the work done and discussing plans for further development of the service.