While Creating a New Channel, scroll down to the DRM section and select the desired encryptions for your channel.
After you click
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.
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:
Rendition Group | Typical DRM/HDCP Setting | Notes |
---|---|---|
SD / Audio-only | HDCP_NONE | Most permissive for broad device reach |
HD | HDCP_V1 (e.g., Widevine Modular) | Moderate protection for 720p/1080p |
UHD | HDCP_V2.2 | Often paired with stricter OPL/VMP requirements |
You can set a default, rendition-aware Content Restriction Template (CRT) for all Live DRM jobs using the
Settings API override. The setting name is crt_config
.
/accounts/{account_id}/settings/crt_config
{
"description": "crt override",
"value": {
"op": {
"config": {
"AUDIO": {
"FairPlay": {
"requireHDCP": "HDCP_NONE"
},
"PlayReady": {
"compressedDigitalAudioOPL": 100,
"playEnablers": {
"add": [
"5985ED75-291D-0A55-5CDA-F692996BAE1C"
]
},
"uncompressedDigitalAudioOPL": 100
},
"WidevineM": { "requireHDCP": "HDCP_NONE" }
},
"HD": {
"FairPlay": { "requireHDCP": "HDCP_NONE" },
"PlayReady": {
"analogVideoOPL": 200,
"uncompressedDigitalVideoOPL": 270
},
"WidevineM": {
"disableAnalogOutput": true,
"requireHDCP": "HDCP_V1"
}
},
"SD": {
"FairPlay": { "requireHDCP": "HDCP_NONE" },
"PlayReady": {
"analogVideoOPL": 150,
"uncompressedDigitalVideoOPL": 250
},
"WidevineM": { "requireHDCP": "HDCP_NONE" }
},
"UHD": {
"FairPlay": { "requireHDCP": "HDCP_V22" },
"PlayReady": {
"allowDTCP": false,
"analogVideoOPL": 300,
"minSL": 3000,
"requireHDCP": "HDCP_V22",
"uncompressedDigitalVideoOPL": 300
},
"WidevineM": {
"disableAnalogOutput": true,
"hdcpSrmRule": "CURRENT_SRM",
"minSL": 5,
"requireHDCP": "HDCP_V22",
"requireVMP": "PLATFORM_HARDWARE_VERIFIED"
}
}
}
},
"profile": {
"purchase": {}
},
"storeLicense": false,
"outputProtection": {
"digital": true,
"analogue": true,
"enforce": false
}
}
}
For examples and guidance on HDCP fallback behavior, see Fallback HDCP with Playback Restrictions.