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.
Audio-only Streams
For the given qualities, the following conditions must met.
Quality | Audio kbps | Packet Loss |
Excellent | > 30 | < 0.5% |
Acceptable | > 25 | < 5% |