Monitoring Attendee's Upload Speed
See original GitHub issueHi guys,
We’re currently working on a proctoring Electron app that will allow students of different academic institutions to take different exams while being recorded inside a Chime meeting. These meetings will consist of a single attendee (the student) who will get recorded (webcam + screenshare) using a media capture pipeline and then the institutions’ instructors will review such recordings.
To ensure that the instructors are able to properly review the exam sessions recordings, we need to make sure that the student has enough upload bandwidth to produce a good quality video recording. To implement this, we want to monitor the student’s uplink speed and be able to identify whenever it falls below a threshold value. This would be the cue for the app to let the students know that they are experimenting with network issues.
I’ve been going through your Quality, Bandwidth, and Connectivity SDK documentation and noticed that it’s possible for us to subscribe to the metricsDidReceive
event and obtain stats metrics by calling the getObservableMetrics
function included in the ClientMetricsReport
object. From here, we’re reading the videoUpstreamBitrate
property to ensure that the upload speed is good enough to produce a decent recording.
After running some test meetings where I throttled the app’s available upload bandwidth, I noticed that the videoUpstreamBitrate
started to fall down to some pretty low values even below 1 Mbps
. This resulted in recordings that looked pretty pixelated. After removing the app’s upload limit, the videoUpstreamBitRate
went up resulting in smoother recordings.
With this in mind, I would like to ask you if you think this would be a solid approach to go with in order to let the students know whenever they are experiencing network issues that won’t allow the media capture pipeline to produce a decent quality recording.
I also noticed there are other events as well in that documentation (connectionDidSuggestStopVideo, connectionDidBecomePoor, etc…), but I don’t think those would work well in our scenario where there’s only one single attendee in the meeting that needs to always send both audio and video data to the Chime server.
Do you think that the videoUpstreamBitrate
would be enough to determine whenever the student’s network status has become insufficient to produce a good quality meeting recording? Or are there any other events or tools in the SDK, that I haven’t gone through, that would help us get a better reading of the student’s upload speed and how it will affect the quality of the resulting recording?
Chime SDK Version 2.30.0
Thanks in advance!
Issue Analytics
- State:
- Created a year ago
- Comments:6 (4 by maintainers)
Top GitHub Comments
Close the issue for now. Feel free to reopen if you have additional questions.
Yes that is still the case, you can use https://aws.github.io/amazon-chime-sdk-js/interfaces/audiovideocontroller.html#setvideomaxbandwidthkbps to set the bitrate desired.