What is Scalable Video (Simulcast)?
OpenTok Routed sessions use congestion control feedback: the publisher bitrate is set from feedback from all active subscribers; each subscriber asks the publisher to set a bitrate that the subscriber can handle. In non-scalable video streams, this mechanism affects the experience of all subscribers in the session, as the publisher generates a common quality for all subscribers, and it needs to fit the worst subscriber capabilities case.
In a broadcast topology, congestion control presents a “race to the bottom” — a higher subscriber population increases the probability to have a subscriber in trouble, either due to network or due to device capability issues. In those cases, the publisher’s bit rate will decrease to the point of having a poor-quality video for all participants.
Scalable Video addresses the trade-off between video quality and subscriber capacity by delivering multiple layers of video with a diversity of encoded qualities directly from the publisher. The OpenTok Media Router is able to adapt quality independently for each subscriber to what's best for their respective network or processing capacity; thus, allowing the remaining subscriber pool to remain independent and unaffected by the rest of subscriber conditions.
Note that Scalable Video is a publisher property. Default platform behaviour is designed to avoid the use of Scalable Video for 1-1 (1-participant) calls. Hence, a publisher will publish in Scalable Video only if there are more than two connections in the sessions. To enable scalable video from the first connection onward, (in 1-to-many participant calls, where the first connection in the session might be the publisher), please follow the detailed instructions provided in our support article.
This won't be required if the session uses OpenTok.js 2.24.7 and above. As of 2.24.7+, JS clients will use adaptive media routing to route media client-to-client for the first two publishers without Scalable Video and automatically switch to Scalable Video once there are more than two connections.
How does Scalable Video improve performance?
We observed that the QoE benefit this feature offers improves as the number of receivers per sender increases; i.e. with special impact on large multi-party and broadcast use-cases.
The amount of improvement with Scalable Video depends a lot on the specific use case (type of devices, networks, resolutions, and number of receivers).
On the subscriber side, when using Scalable Video, the average bitrate received by endpoints is independent of the number of receivers. The quality of the stream received by each subscriber will be better adapted to their respective network and hardware capacity conditions without affecting the other subscribers. A general expected result is an overall higher average bitrate across the platform streams for large multi-party or broadcast use-cases.
What are the limitations of Scalable Video and the supported browsers or devices?
- Scalable Video is available in all Vonage Video Client SDKs -
- The OpenTok iOS SDK
- The OpenTok Android SDK
- The OpenTok Windows SDK
- The OpenTok Linux SDK
- The OpenTok macOS SDK (beta)
- OpenTok.js in Chrome, Safari, Opera (beta support in desktop versions), and Edge (beta support in Chromium-based versions)
- The feature is 100% transparent for subscribers who will keep receiving a single VP8 video stream.
- With our latest server release and client SDK 2.14 and higher, Scalable Video will be supported on all 64-bit Android devices and the latest iOS devices, starting with iPhone 6 and above.
- Scalable Video has an overhead cost in bandwidth and CPU usage on the publisher. This may be especially challenging for older generation mobile devices. This overhead makes it suboptimal for one-to-one calls. In any case, it is a key requirement for Scalable Video to have sufficient upload bandwidth available to publishers to properly operate and provide improvements.
- By default, Scalable Video is disabled for screen-sharing streams but can be enabled.
- By default, Scalable Video is enabled for camera and custom video streams but can be disabled.
For more details on this feature, check out the article here.
For more details on enabling and disabling scalable video, please refer to our documentation below.
For information about Adaptive media routing, please refer to our developer documentation below.