With concurrent stream limits, you define the number of video streams that a specific user can watch at any given time. Limiting concurrent streams per user discourages viewers from sharing their credentials with friends who don’t have accounts.
When the maximum number of concurrent streams is reached, and the viewer, or someone with their account credentials, tries to open an additional stream, either the oldest session is stopped or the newest request is blocked. You control this behavior.
This feature hooks into the DRM workflow so it is secure and can be used with minimal integration.
If you are new to this feature, see the Overview: Brightcove Playback Restrictions document.
Contact your account manager to have your account enabled for stream concurrency.
For this feature, the content needs to be encrypted DRM. To implement, follow these steps:
Determine the claims values:
climitclaim indicates how many watchers or streams can play at the same time.
cbehclaim defines how to block the concurrency. When the stream limit is reached, you can either block a new viewer (meaning a different IP address and device) or block a new stream request (session).
BLOCK_NEW_USER- Block new viewers
BLOCK_NEW- Block new streams
- Create a JSON Web Tokent (JWT) with claims associated with your desired concurrent stream limits. For details see the Creating a JSON Web Token (JWT) document.
- Configure your player to use playback restrictions and pass the JSON Web Token (JWT) when retrieving your video content. For details, see the Configure your player section of the Implementing Playback Rights Management Service document.
To ensure that concurrent stream limit is enforced, a DRM license renewal request is sent during playback based on a defined renewal interval. At setup time, you are required to define this renewal interval.
Mid-stream playback authorization requests need to specify a concurrency limit in the JWT token along with a public key id.
Today each renewal request counts as an additional license that would go towards the number of your purchased licenses. This should be taken into account when you are deciding on an interval.
|Renewal interval||Licenses served per stream for 2 hour content|
With this feature, you can choose the behavior for blocking streams.
Block oldest stream
Brightcove supports limiting playback streams for DRM-protected content. When a new renewal request is processed, the oldest session is stopped. This allows new user requests to be given access, while blocking the oldest requests which may no longer be valid, displaying a message about network or device failure.
This is the default behavior.
- Ben, Jason and Sarah begin watching a movie.
- Jamie decides to also start watching, causing Ben's upcoming renewal request to be denied.
- Ben restarts the movie, now causing Jason's renewal request to fail.
- Jason starts watching another movie some time later, causing Sarah's movie to stop.
Block new request
Alternatively, you can block any new license request when the maximum number of concurrent streams is reached. This allows all of the current users to keep watching, while displaying a message to any new user requests.
To enable this behavior, you need to set the
cbeh claim in your JSON Web Token (JWT) as follows:
Here is an example:
- Ben, Jason and Sarah begin watching a movie.
- Jamie tries to start watching, but her request is blocked because of the maximum limit.
- Jason stops watching, allowing another viewer to start watching. Jamie starts watching a movie.
PlayReady does not support mid-stream license checks.
Current Brightcove Player
If you are using Brightcove Player v6.48.x or newer, than the player sets the preferred order for Edge browsers to use Widevine instead of PlayReady. So, PlayReady should not be an issue.
You can find the fix for EPA DRM source selection in Chromium Edge browsers in the Brightcove Player Release Notes.
Older versions of Brightcove Player use the Chromium Edge browser default of PlayReady first. In this case, you have to perform the mid-stream license checks manually.
To implement a manual license renewal in your players, see Microsoft's Concurrency Limiting document.
Concurrency limit is supported in the Safari browser, but renewal requests will not be sent. This means that new sessions/streams will be blocked for longer time periods than with other browsers.
The following notes apply to this feature:
Manual license renewal request should be implemented in the following cases:
- Concurrency limit in non-Brightcove players, except when protected by Widevine
- Concurrency limit for PlayReady in all devices, except when using Brightcove Player v6.48.x or newer
- Manual license renewal should be requested at a shorter period than the defined renewal interval.