Greetings MediaSoup and community!
Our TrueMachine team is developing a video-enabled product, but we’ve faced some difficulties along the way. I would like to contact you for advice or a paid consultation, if possible.
We are developing a product in which it is possible to make video calls in the browser using MediaSoup technology. In this product, we can make both individual and group calls. Also, during a group call, it is possible to see all users in the form of a grid with images from their cameras, or switch to one participant and see the image from his camera on the entire screen of the player.
Here are the screenshots:
1645110318320 (177 kb) закачан 17 февраля 2022 г. Joxi,
1645110480350 (70 kb) закачан 17 февраля 2022 г. Joxi
At the current stage, we are facing with the following problem: group calls are very CPU intensive, more common on macOS devices than on Windows devices. In this regard, the quality of video communication within our product may suffer, which affects its comfortable use.
We have a number of questions on which we would like to hear your opinion:
- Is anything that affects video streams on macOS devices really different than on Windows devices, and because of this, the quality of the connection may suffer?
- What configurations and changes should be made and tested in the product in order to solve this problem?
- What indicators can affect the quality of communication and sound?
In addition, let’s clarify that when the call is just starting, the connection is generally good, it starts to deteriorate over time, approximately after 5-7 minutes.
During the tests, our team found out that the following parameters affect the quality of communication:
- Internet speed
- Distance from the server where the media server is located, i.e. ping
- Processor resources that encode and decode the video stream
In order to control the first two metrics, we use the RTT metric provided by MediaSoup. They are also solved by the requirements for a good Internet connection.
Please tell us if we there is something wrong.
However, with the parameter from point three, we, unfortunately, do not have clarity at the moment. We experimented with video codecs, changed codecs from VP8 to h264, but did not see much improvement. Now we have started the next implementation - we will determine the user’s device, and if it is with macOS, then reduce the bitrate of received streams from other users. Also, if the view mode of only one user is open, in a group lesson, then automatically turn off the flows of other users.
I would like to receive feedback from you, make a call or receive answers in correspondence, on the following questions:
- Are our reasoning correct, are we going in the right direction?
- What other indicators and metrics should you pay attention to, except for RTT, which can tell about the quality of communication?
- What other algorithms can be implemented in this kind of product?
- Are there any other metrics that we can dynamically navigate and change to improve the quality of communication?
Thank you all! Hoping to find help here!