informational reference for the DRM formats and the HDCP versions supported on the Roku Platform
Sections:
Although AES-128 Encryption is also supported for HLS, Roku recommends using Adobe DRM because there is no DRM when using AES-128 Encryption.
| PlayReady | Adobe DRM | Verimatrix | AES-128 | |
|---|---|---|---|---|
| HLS | ✔️ | ✔️ | ✔️ | |
| Smooth | ✔️ | |||
| DASH | ✔️ |
Supported DRM info can be queried using ifDeviceInfo.getDRMInfo().
Required Roku channel manifest entries:
requires_aaxs_drm=1
requires_aaxs_version=1.0
Configure DRM parameters in an roAssociativeArray:
drmParams = createObject("roAssociativeArray")
drmParams.name = "AdobeAccess"
drmParams.appData = "drm-token-as-a-string" 'the DRM token (if required) that needs to be passed to the license serverSetup content metadata and set to video node:
contentNode = createObject("roSGNode", "contentNode")
contentNode.streamFormat = "hls"
contentNode.url = "wwww.myvideo.com/content.m3u8"
contentNode.drmParams = drmParams
m.video.content = contentNodeNo Roku channel manifest entries are required for PlayReady.
Configure DRM parameters in an roAssociativeArray:
drmParams = createObject("roAssociativeArray")
drmParams.encodingType = "PlayReadyLicenseAcquisitionUrl"
drmParams.encodingKey = "PlayReadyLicenseServerUrl"If your PlayReady implementation requires custom request data, encodingType and encodingKey should be formatted like the following:
drmParams = createObject("roAssociativeArray")
drmParams.encodingType = "PlayReadyLicenseAcquisitionAndChallenge"
drmParams.encodingKey = "PlayReadyLicenseServerUrl" + "%%%" + customDataSetup content metadata and set to video node:
contentNode = createObject("roSGNode", "contentNode")
contentNode.streamFormat = "smooth"
contentNode.url = "wwww.myvideo.com/content.ism"
contentNode.drmParams = drmParams
m.video.content = contentNodeRequired Roku channel manifest entries:
requires_verimatrix_drm=1
requires_verimatrix_version=1.0
Configure DRM parameters in an roAssociativeArray:
drmParams = createObject("roAssociativeArray")
drmParams.name = "Verimatrix"
drmParams.authDomain = "auth-value-from-streaming-provider"
drmParams.serializationUrl = "hostname-url-from-streaming-provider"Setup content metadata and set to video node:
contentNode = createObject("roSGNode", "contentNode")
contentNode.streamFormat = "hls"
contentNode.url = "wwww.myvideo.com/content.m3u8"
contentNode.drmParams = drmParams
m.video.content = contentNodeRoku's OS also supports HDCP for content copy protection between the Roku player's HDMI port and the connected display. However, the HDCP version depends on the Roku Model and the Display Type that it's currently set to.
| Roku 4K capable devices | All other Roku devices | |
|---|---|---|
| TEE | Yes | No |
| HDCP | 2.2 1 | 1.4 |
1 4K devices set to a Display Type with a resolution smaller than 4K will default to HDCP 1.4.
HDCP versioning can be queried using ifHdmiStatus.getHDCPVersion().