Video quality dynamically adjusts based on the strength of a user's network connectivity. This is done by the Subscriber sending feedback packets to the publisher that say "My network quality is at 'x' level. Please adjust your published video bit-rate to accommodate my current bandwidth". The faster and more stable a Subscriber's broadband connection is, the better the video quality it will request.
This mechanism works well until a certain point. If a Subscriber's bandwidth drops below a certain threshold, or if a Publisher has very little bandwidth to upload video, behavior can be unpredictable. Video may be choppy, audio may have artifacts, and the connection could be dropped.
We recommend a minimum dedicated 350kb/s down per downloaded stream, as well as 350kb/s up per uploaded stream to maintain a stable video connection.
For various resolutions and quality combinations, the bandwidth requirements are outlined below.
- Excellent - None or imperceptible impairments in media
- Acceptable - Some impairments in media, leading to some momentary disruptions
Audio + Video Streams
For the given qualities and resolutions, all the following conditions must met.
|Quality||Video Resolution @ FPS||Video kbps||Packet Loss|
|Excellent||1280x720 @ 30||> 1000||< 0.5%|
|Excellent||640x480 @ 30||> 600||< 0.5%|
|Excellent||352x288 @ 30||> 300||< 0.5%|
|Excellent||320x240 @ 30||>300||< 0.5%|
|Acceptable||1280x720 @ 30||> 350||< 3%|
|Acceptable||640x480 @ 30||> 250||< 3%|
|Acceptable||352x288 @ 30||> 150||< 3%|
|Acceptable||320x240 @ 30||> 150||< 3%|
Note that the default publish settings for video are 640x480 pixels @ 30 fps in OpenTok.js and the OpenTok iOS SDK. The default is 352x288 @ 30 fps in the OpenTok Android SDK.
For the given qualities, the following conditions must met.
|Quality||Audio kbps||Packet Loss|
|Excellent||> 30||< 0.5%|
|Acceptable||> 25||< 5%|