PlayReady
PlayReady in C21 Live Control
PlayReady is Microsoft's DRM. It reaches Windows, Edge (legacy), Xbox and many smart TVs and set-top boxes. In Live Control it appears as one of the three systems exposed by DrmProvider.supported_systems and one of the values a Destination's drm.systems[] array can carry.
This page covers what goes into the provider record when the upstream multi-DRM service supports PlayReady. For the end-to-end flow, see DRM workflow. For the provider catalogue and CRUD, see Providers.
Where the configuration comes from
PlayReady is licensed by Microsoft to content owners and packagers. As with Widevine, most C21 Live Control deployments do not connect to a Microsoft license server directly; they go through a multi-DRM provider (for example AXINOM or EZDRM) that runs the PlayReady license server and exposes the same SPEKE endpoint used for Widevine.
The multi-DRM vendor hands over:
- The SPEKE endpoint URL.
- The credentials expected by that provider type.
- A tenant identifier when required (
AXINOMuses one; others may not).
Registering the provider
The form is shared with Widevine and FairPlay — see Providers for the field-by-field reference (name, provider_type, speke_url, tenant_id, credentials, enabled). The same provider record can serve PlayReady, Widevine and FairPlay when the upstream vendor supports them all.
After saving, run validateDrmProvider (the Validate action). The handler updates validation_status (UNKNOWN / VALID / INVALID) and stores the timestamp in validation_date.
Attaching PlayReady to a Destination
DRM is applied to a Destination via its drm block (see Destinations):
active = true.provider_idset to the PlayReady-capable provider.systemsincludesPlayReady. The common pairing is["Widevine", "PlayReady"]on a DASH or CMAF Destination so a single manifest reaches both Chrome / Android and Windows / Edge.encryption_modeset tocenc(DASH default) orcbcs(when packaging once for DASH + HLS / CMAF).contentidset to the content identifier the upstream vendor expects.
FAQ
<ContentProtection> elements; the player picks the system it supports. Combine Widevine and PlayReady on the same Destination under encryption_mode = cenc (or cbcs if every client supports it) to reach Chrome / Android and Windows / Edge with one manifest.