Concurrent Stream Limiting Guide
Concurrent Stream Limiting (CSL) is one of PallyCon Multi-DRM service features that can identify and limit the number of streams being played simultaneously per user account through DRM
license renewal. The CSL feature can be used when you want to prevent a decrease in service revenue due to excessive account sharing.
DRM License Renewal is a function that enables periodic license renewal requests and responses during content playback by setting the license duration shorter than the length of the content (eg 10 minutes). This allows the DRM server to accurately determine whether the stream has finished playing and control the number of ‘simultaneous plays’.
Please refer to the scenario example below to see how CSL works through license renewal.
CSL Service Scenario
When using the CSL function, the following items can be set for each site (SiteID) subscribed to the PallyCon service.
Maximum Concurrent Streamsper end user account
- DRM license renewal cycle
The following is an example scenario when the maximum number of concurrent streams is set to ‘two’ and the license renewal cycle is set to ‘ten minutes’.
- A user starts playing DRM content on the first device. On the DRM server, the number of concurrent streams of the user ID is counted as one. And during playback, the license is renewed every 10 minutes to determine whether playback ends.
- DRM content playback is started on the second device with the same user account. The concurrent stream count on the server increases to two.
- Attempts to play DRM content on third device. DRM license issuance fails due to limit on the number of concurrent streams. A message such as ‘Cannot start a new playback due to the limit of the maximum number of simultaneous playbacks’ is displayed on the device. (implemented by DRM error handling in the customer’s service application)
- The content playback on the first device ends. As there is no more license renewal request from that client, the count decreases to one in up to ten minutes.
- After the count is decreased, the user tries playing a DRM content on the third device. Since the maximum number of concurrent streams is not exceeded, a DRM license is issued and playback begins. Server’s count is increased to two.
- With the process above, the number of concurrent streams per one user account is limited to two or less.
Differences from other methods
Content service providers have previously applied the following methods to limit excessive account sharing.
Limiting the number of devices
This method is to limit the number of devices that can be registered per user account by using the unique ID information of each client device.
Although this method has been widely used in many OTT services, it has the following problems.
Difficulty in obtaining unique ID information: In the case of web browsers such as Chrome, it is difficult to obtain a unique ID, and access to the information is becoming increasingly difficult even in mobile apps due to privacy issues.
Implementation required for device registration and de-registration: The de-registration function must be implemented for customer support when the number of registered devices is exceeded, and there is a possibility that the implementation may be hacked.
The CSL function implemented by the DRM license renewal method does not have the above problems and has the advantage of less inconvenience to users compared to the limit on the number of devices.
Implementing concurrent stream limit in application level
Instead of the DRM license renewal method, CSL can be implemented by checking the playback start and end times of content via a communication between the service application and backend server.
This method is also applied to many services along with the limit on the number of devices, but it has the following problems.
Possibility of bypassing through hacking: It is possible to bypass the concurrent stream count logic through hacking the client application.
Possibility of mismatched count: When a situation such as an abnormal termination of the client application occurs, the ‘play end’ signal to the server can be lost. So the server’s ‘concurrent stream count’ may not decrease, then the count won’t match with the actual concurrent streams.
CSL’s DRM license renewal logic cannot be bypassed by client hacking, and even in the event of abnormal termination, the server count is automatically deducted within the renewal cycle, enabling accurate control of concurrent streams.
PallyCon Console settings for CSL
In order to use the CSL function, the following processing is required in PallyCon Console according to the multi-DRM plan of the PallyCon account.
To test the CSL function during the trial period before switching to a commercial plan, set the
Concurrent Stream Limiting option to
Enable in the
DRM Settings screen of PallyCon Console.
Max Stream per User: The maximum number of concurrently playable streams per end-user account. (default 3)
Renewal Interval: Set the renewal interval of streaming license for CSL function. The shorter the interval, the more accurately the end of playback can be determined. However, shorter internal increases the number of license issuances by renewal. (default 10 minutes)
In order to use the CSL function in a commercial account, you must be subscribed to the following plan by signing up for a new commercial plan or changing a plan.
MAU (Monthly User-Based) Plan: To use the CSL feature in the MAU plan, you must select the
Enable Concurrent Stream Limitoption on the
Change Planscreen. If you choose this option, you will be charged an additional CSL fee (base $200/month) on top of the MAU base rate.
MAL (Monthly License Count-Based) Plan: If you use the MAL plan, you can use the CSL function without selecting a separate plan option or additional base fee. However, the increased MAL due to license renewal will be reflected in the invoice.
After one of the above plans is applied, you can enable and configure the CSL function on the
DRM Settings screen just like the trial account.
DRM Settingsscreen if you are using the MAL plan. And in the case of the MAU plan, you need to change the plan option. (contact our business team or Helpdesk about it)
DRM-specific client settings
The DRM license renewal function used to limit concurrent streams has different specifications and client support for each DRM. Accordingly, additional integration with the following player solutions is required for each client environment.
Widevine Support Environment
In a client environment that supports Widevine DRM (Chrome browser, Android app, etc.), you can use the CSL function through Widevine’s license renewal specification without any restrictions or additional settings on the player.
PlayReady Support Environment
In PlayReady DRM environment such as Windows Edge browser, the license renewal API is required on the player side to manually request renewal according to the license renewal cycle. Among the HTML5 players we have tested so far, Bitmovin player is the only one that provides the API. (Refer to the Bitmovin Player API)
You need to apply the code that calls the above API for each license renewal cycle set in PallyCon Console, referring to the example code linked below. For more information, please see the sample code in the GitHub repository below.HTML5 player sample - CSL related code
FairPlay Support Environment
To support FairPlay license renewal in Safari browser, only the basic HLS player built into Safari is currently supported. It is not yet supported by other HTML5 player solutions, though Bitmovin Player team is considering the feature in their future development roadmap.
In the case of the Safari built-in player, the basic integration method is similar to the Bitmovin Player integration for Edge (PlayReady) browser. Please refer to the example code linked below for more details.HTML5 player sample - CSL related code
For iOS apps developed using the latest version of PallyCon FPS iOS SDK, manual license renewal processing is implemented in the SDK library, making CSL integration relatively easy.
The renewal cycle setting in the iOS app can be done in the following two ways according to the
Response Format of the license token.
original: Since the data that the DRM server responds to is in the actual license data format, the license renewal cycle must be input in the code manually as the same value as Console setting.
json: Custom license data in JSON format is responded, and in this case, the value entered in the JSON data (the same value as the license renewal cycle set in the Console) is automatically applied with no need for manual input.
Other notes about CSL
License token setting for CSL application
As described in the service scenario item, the CSL function is applicable only to the streaming scenario. Therefore, the
persistent item of
playback_policy must be set to
false when generating a license token for the content to which the CSL function will be applied.
For tokens with CSL enabled and set to
persistent: false, the playback policy values for license validity periods such as
license_duration are ignored and the
renewal cycle value set in the Console is applied instead.
Since CSL is a feature that limits the number of simultaneous plays ‘per end user account’, a unique user ID must be set in the license token for proper operation. Please enter a unique user ID in the
user_idfield of the token data so that the DRM server can identify the end user.
CSL feature is available only in the license policy V2 or later. If you are using V1 version of license token specification, you need to update to V2 in order to use the CSL.
Cannot use CSL and key rotation in the same service
Due to limitations in the implementation of the current PallyCon DRM server, it is not possible to apply both key rotation and CSL to one service site. If you are a customer that provides both live stream and VOD content, you may consider only one of the two features below according to the importance of them.
- To prevent excessive account sharing by limiting simultaneous playback -> Use CSL function. Cannot apply key rotation to live stream.
- Enhanced security and business model for live stream are more important -> Use key rotation function. CSL is not applicable.