DRM now works with redundant channels and also protects Low Latency HLS (LLHLS) outputs.
Live DRM is an add-on feature, not active by default.
If you would like access to this feature, please contact your Customer Success Manager.
Granular stream-level limitations (CRT) — NextGen Live now supports rendition-level DRM configurations by resolution group (SD, HD, UHD). This enables HDCP fallback so you can apply stronger protection to higher resolutions (e.g., HD/UHD) and more permissive rules for SD.
Note:
By default, DRM is applied to outputs as follows:
The Brightcove Native SDK for Android v6.11.0 or later
Notes
The Brightcove Player utilizes different DRM playback technologies with different browsers.
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 | HLS with Widevine | EME | HLS |
| Chrome Mobile |
HLS with Widevine (iOS) HLS with Widevine (Android) |
Native EME |
HLS |
| Internet Explorer | No versions of IE are supported by Brightcove | ||
| Edge1 | HLS with Widevine | EME | HLS |
| Safari | HLS with FairPlay | Native HLS | HLS |
| Firefox | HLS with Widevine | EME | HLS |
For further assistance, please contact Brightcove Support or your Customer Success Manager.
The number of DRM license requests generated during a single playback session is different for NextGen Live content than it is for VOD. This is expected behavior and is a result of how DRM keys are assigned to your content.
VOD supports both a single DRM key and multiple DRM keys:
NextGen Live supports multiple DRM keys only. Brightcove always uses separate DRM keys per rendition or stream type (for example, AUDIO, SD, HD, and UHD); a single-key configuration is not available for Live. This is expected behavior, even when per-stream-type DRM/HDCP fallback (CRT) is not enabled on your account. Because the player and CDM encounter multiple key IDs during playback startup, they may issue a separate license request for each key. As a result, a single Live playback session can generate multiple DRM license requests.
There is no fixed number of license requests per Live playback session. The exact number can vary depending on the Live output configuration, the number of renditions and stream types, packaging, the playback environment, and the behavior of the player and CDM.
Live content — especially time-sensitive content such as sports or premium live events — has immediate value and requires a stronger security posture. Using separate keys per rendition or stream type provides better encapsulation and isolation of DRM keys: if one rendition key were compromised, the other rendition keys remain separately protected. Because Live always uses multiple keys, this higher level of protection produces more license requests than the default VOD configuration, where a single key is used across renditions.
A single viewer starts a NextGen Live event that is published with separate keys for its audio and video renditions. As the player begins playback, the CDM encounters more than one key ID and issues a license request for each one, so one viewer session can produce several DRM license requests. Because of this, the Encryption Licenses count reported in billing can exceed the number of Live stream views or playback sessions. A ratio where Encryption License usage is higher than Live stream starts or Live views is therefore expected, and does not, on its own, indicate duplicate playback sessions or a billing or reporting defect.
To enable DRM for a Brightcove Live channel, add an encryption object to the
job definition you send to the Live API.
You may list individual modes (e.g. ["widevine","fairplay","playready"])
or simply use ["all"] to enable every supported scheme.
To create a live job with DRM encryption enabled, send a
POST request to:
https://api.live.brightcove.com/v2/accounts/{account_id}/jobs
Example request body (adjust as needed):
{
"type": "event",
"name": "DRM",
"region": "us-east-1",
"input": {
"protocol": "srt",
"fixed_ingest_ip": false
},
"outputs": {
"video": [
{
"label": "hls270p",
"height": 270,
"width": 480,
"bitrate": 450000,
"codec": "h264",
"codec_options": { "level": "3", "profile": "main" },
"framerate": "30/1",
"num_b_frames": 3,
"num_reference_frames": 4,
"keyframe_rate": 0.5,
"sample_aspect_ratio": "1:1",
"decoder_buffer_size": 675000,
"max_bitrate": 540000
},
{
"label": "hls360p",
"height": 360,
"width": 640,
"bitrate": 780000,
"codec": "h264",
"codec_options": { "level": "3", "profile": "main" },
"framerate": "30/1",
"num_b_frames": 3,
"num_reference_frames": 4,
"keyframe_rate": 0.5,
"sample_aspect_ratio": "1:1",
"decoder_buffer_size": 1170000,
"max_bitrate": 936000
},
{
"label": "hls540p",
"height": 540,
"width": 960,
"bitrate": 1500000,
"codec": "h264",
"codec_options": { "level": "3.2", "profile": "main" },
"framerate": "30/1",
"num_b_frames": 3,
"num_reference_frames": 4,
"keyframe_rate": 0.5,
"sample_aspect_ratio": "1:1",
"decoder_buffer_size": 2250000,
"max_bitrate": 1800000
},
{
"label": "hls720p",
"height": 720,
"width": 1280,
"bitrate": 2400000,
"codec": "h264",
"codec_options": { "level": "4", "profile": "high" },
"framerate": "30/1",
"num_b_frames": 3,
"num_reference_frames": 4,
"keyframe_rate": 0.5,
"sample_aspect_ratio": "1:1",
"decoder_buffer_size": 3600000,
"max_bitrate": 2880000
},
{
"label": "hls1080p",
"height": 1080,
"width": 1920,
"bitrate": 4500000,
"codec": "h264",
"codec_options": { "level": "4.2", "profile": "high" },
"framerate": "30/1",
"num_b_frames": 3,
"num_reference_frames": 4,
"keyframe_rate": 0.5,
"sample_aspect_ratio": "1:1",
"decoder_buffer_size": 6750000,
"max_bitrate": 5400000
}
],
"audio": [
{
"label": "aac1",
"input_selector_name": "default",
"language_code": "eng",
"codec": "aac",
"bitrate": 128000,
"sample_rate": 48000
}
],
"rtmp": [
{
"label": "primary_rtmp",
"url": "rtmp://primary.example.com/live/stream_key_1",
"video_label": "hls1080p",
"audio_label": "aac1"
},
{
"label": "backup_rtmp",
"url": "rtmps://backup.example.com/live/stream_key_2",
"video_label": "hls720p",
"audio_label": "aac1"
}
]
},
"manifest": {
"name": "playlist",
"segment_duration_seconds": 6,
"playlist_window_seconds": 30,
"hls": {}
},
"maintenance_preferences": {
"day": "WEDNESDAY",
"start_time": "02:00"
},
"playback_rights_id": "primary",
"encryption": {
"modes": ["widevine", "fairplay", "playready"]
}
}
With Content Restriction Templates (CRT), you can enforce different DRM/HDCP requirements per rendition tier:
Default DRM CRT settings:
| Rendition Group | DRM/HDCP Setting |
|---|---|
| SD / Audio-only | HDCP_NONE |
| HD | HDCP_NONE |
| UHD | HDCP_NONE |
HDCP_V1: Provides content protection suitable for HD streams, such as 720p and 1080pHDCP_V2: Applies stronger protection standards, commonly required for UHD and premium video contentReach out to Brightcove Support for an exhaustive overview of the available features provided by Brightcove NextGen Live.