On This Page

Configuring the Brightcove Player for DRM

Product(s)

Video Cloud

Brightcove Player

Role(s)

Player Developer

Task(s)

Protect Videos

Topic(s)

DRM

In this topic, you will learn how Brightcove Player implements digital rights management (DRM). The document first shows how to implement the DRM plugin, then is followed by details of the plugin and how it is implemented.

Brightcove is embracing the following technologies to deliver DRM protected content to the widest possible variety of browsers and devices:

MPEG-DASH with Native/EME supported CENC DRMs

HLS with FairPlay

To use DRM with Brightcove Player you must:

Produce DRM enabled content

Enable Brightcove Player to use the DRM plugin

In some cases, configure the DRM plugin to use your license server

Notes:

DRM must be enabled by your account manager.

It is recommended to use the Brightcove player version 6.18.1+.

Dynamic Delivery and the Brightcove Player support DRM audio-only content - use videojs-drm 4

Note: the DRM plugin will not function correctly if you have both DRM and HLSe enabled for your account. There is no need to have both, as HLSe is redundant if you have DRM. If you see issues in playback of DRM-protected videos, contact Brightcove Support and have HLSe disabled if it is enabled.

Terminology

Review these key terms used in this document.

Term

Definition

DRM

From Wikipedia: Digital rights management (DRM) is a class of copy protection technologies that are used by hardware and software manufacturers, publishers, copyright holders, and individuals with the intent to control the use of digital content and devices after sale.

MPEG-DASH

From Wikipedia: Dynamic Adaptive Streaming over HTTP (DASH), also known as MPEG-DASH, is an adaptive bitrate streaming technique that enables high quality streaming of media content over the Internet delivered from conventional HTTP web servers. Similar to Apple's HTTP Live Streaming (HLS) solution, MPEG-DASH works by breaking the content into a sequence of small HTTP-based file segments, each segment containing a short interval of playback time of a content that is potentially many hours in duration, such as a movie or the live broadcast of a sports event.

CENC

From the ISO standard: The 'CENC' Common Encryption Scheme specifies standard encryption and key mapping methods that can be utilized by one or more digital rights and key management systems (DRM systems) to enable decryption of the same file using different DRM systems.

Encrypted Media Extensions (EME)

From Wikipedia: EME is a W3C draft specification for providing a communication channel between web browsers and digital rights management (DRM) agent software. This allows the use of HTML5 video to play back DRM-wrapped content without the need for third-party media plugins, like Microsoft Silverlight.

Implement using Players module

To implement the DRM Plugin in Studio, and enable DRM based on your account setup, follow these steps:

Open the PLAYERS module and either create a new player or locate the player to which you wish to add DRM functionality.

Click the link for the player to open the player's properties.

Click Playback in the left navigation menu.

Next, check the Enable DRM checkbox.

To publish the player, click Publish & Embed > Publish Changes.

To close the open dialog, click Close.

DRM plugin architecture

The DRM plugin (videojs-drm) is a wrapper around two plugins:

videojs-silverlight

videojs-contrib-eme

The videojs-drm plugin version 5 uses the player's built-in DASH playback capabilities. This utilizes VHS, which is the next and renamed version of the built-in videojs-contrib-hls plugin.

As of player 6.26.0 the player supports DASH multi-period. For earlier versions of the player, the Shaka player is required for DASH multi-period.

If you want to use the Shaka Player for DASH playback, like it did in version 4, you can include the following script along with videojs-drm version 5 script:

Playback technologies used

Brightcove Player utilizes different DRM playback technologies with different browsers. The following details the DRM technologies used with Brightcove Player:

FairPlay: Apple's DRM system

PlayReady: Microsoft's DRM system

Widevine: Google's DRM system

The following table details the relationship between the browser (latest version), format and playback technology used in Brightcove Player:

Browser

Format

Playback Technology

Rendition Type Used
to Deliver DRM Content

Chrome Desktop

DASH with Widevine

Native/EME

MPEG-DASH

Chrome Mobile1

DASH with Widevine

Native/EME

MPEG-DASH

Internet Explorer2

DASH with PlayReady

Silverlight

MPEG-DASH

Edge

DASH with PlayReady

Native/EME

MPEG-DASH

Safari

HLS with FairPlay

Native HLS

HLS

Firefox

DASH with Widevine

Native/EME

MPEG-DASH

1DRM playback using Chrome Mobile on iOS is not supported.

2IE11 on Windows 10 and 8.1, and IE11 on Win8 Metro, use Native/EME. All other IE versions and configurations use the Silverlight plugin.

Produce DRM content

There are two steps you must perform to create DRM enabled content:

Contact your account manager to have your account(s) DRM-enabled. You can then configure your account with the proper licensing keys and ingest profiles to enable the creation of DRM protected content.

Produce DRM protected content. You can choose to either upload new content or re-encode existing content as DRM. This is done by selecting the Ingest Profile that produces your desired encryption technology.

In a JavaScript block in the page, call and configure the EME plugin with FairPlay credential information by providing getCertificate, getContentId and getLicense functions to the EME plugin. These functions are specific to your own FairPlay license server implementation, and may be passed directly to the EME plugin before a src is set:

Note that the FairPlay information can also be passed as part of each src object. The emeOptions are provided as a parameter to all functions. They are a reference to plugin options merged with (overwritten by) the source options of the current source. It is available to make it easier to access options so that you don't have to maintain them yourself.

The following is an example implementation, passing the options in as src options, retrieving the content ID from the hostname, fixed license and certificate URIs, and a license URI that requires a POST with a body of the key message:

Supporting other DRM providers

The plugin has implemented a path that allows customers to implement support for other DRM providers. This is mostly useful for Fairplay, as Fairplay requires custom logic necessary to get license information. Adding a vendor.name to keySystems on a given source will attempt to utilize this logic, and include the necessary certificate and license information. An example for Azure follows:

Known issues

The Default (Auto Display) caption setting in the Media module's TEXT TRACK section is not supported when used in conjunction with DRM and in-manifest captions. In-manifest captions are used with the Brightcove products Dynamic Delivery and SSAI, for example. A workaround for this issue is to use the <track> tag with the Advanced Brightcove Player implementation. This is detailed in the Adding Captions to Videos Programmatically document. Note you must use the default attribute with the <track> tag.

DRM assets and Chrome: When using the Standard (iframe) player implementation with the DRM plugin, allow="encrypted-media" is required to be able to play DRM assets in Chrome.

Special event for Silverlight/IE11: In most cases if you wish to programmatically interact with the player you would wait for either the ready or loadedmetadata event to be dispatched. However, if you wish to programmatically interact with the player when using the Silverlight tech in IE11, AND playing DRM content, you should wait for the canplay event.

On iOS, only Safari provides the necessary DRM browser APIs (EME), WebViews do not currently have EME support. Therefore Fairplay DRM will only work on Safari.

Changelog

25 Oct 2018

As of player 6.26.0 the player supports DASH multi-period. For ealier versions of the player, the Shaka player is required for DASH multi-period.

24 Oct 2018

v5.4.2

Don't set up EME early if no init data in manifest

24 Oct 2018

v5.4.1

Exposed API to immediately set up EME

20 Sep 2018

v5.4.0

Trigger DRM key status changes on player tech

23 Aug 2018

v5.3.1

Added field for automatic initialization from registry

30 Mar 2018

v5.3.0

Support in-manifest DRM init data

20 Feb 2018

v5.2.2

Add certificate for BC Widevine sources when using VHS

20 Feb 2018

v5.2.1

Support key rotation

Use HTTPS links for Silverlight installer

17 Jan 2018

v5.2.0

Add Castlabs third-party integration

3 Jan 2018

v5.1.0

Add custom third-party vendor logic to keySystems

15 Dec 2017

v5.0.0

Support DRM DASH playback with VHS

14 Nov 2017

v4.5.0

Preload Widevine server certificate

Added preload none support

8 Nov 2017

v4.4.1

Fixed issue where loadstart would not fire when using Silverlight

6 Sep 2017

v4.4.0

Parse ms:laurl and mspr:pro from manifest

Fixed issue where text tracks would not be removed on source change

3 Aug 2017

v4.3.5

Fixed minification process

31 Jul 2017

v4.3.4

Fixed duration rounding in Silverlight when using the dashPreprocessing option