Limiting Concurrent Streams per Viewer

In this topic, you will learn how to limit concurrent streams when using Brightcove's Playback Rights Management Service.

Introduction

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: Playback Rights Management Service document.

Account setup

Contact your Customer Success Manager to have your account enabled for stream concurrency.

Implementation

To implement concurrent stream limits, do the following:

  1. Create a JSON Web Tokent (JWT) with claims associated with concurrent stream limits. For details see the Creating a JSON Web Token (JWT) document.
  2. 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.

Renewal interval

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
None 1
15 minutes 8
5 minutes 24
2 minutes 60

Understanding behavior

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.

Block oldest stream
Block oldest stream

User activity:

  1. Ben, Jason and Sarah begin watching a movie.
  2. Jamie decides to also start watching, causing Ben's upcoming renewal request to be denied.
  3. Ben restarts the movie, now causing Jason's renewal request to fail.
  4. 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:

"cbeh": "BLOCK_NEW"

Here is an example:

Block new request
Block new request

User activity:

  1. Ben, Jason and Sarah begin watching a movie.
  2. Jamie tries to start watching, but her request is blocked because of the maximum limit.
  3. Jason stops watching, allowing another viewer to start watching. Jamie starts watching a movie.

PlayReady

When using PlayReady, you should expect the same general behavior as defined in the previous section. However, you need to implement a manual license renewal in your players as described in Microsoft's Concurrency Limiting document.

Safari

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.

Notes

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
  • Manual license renewal should be requested at a shorter period than the defined renewal interval.