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 server
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 = contentNode
No 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" + "%%%" + customData
Setup 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 = contentNode
Required 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 = contentNode
Roku'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().