Conax

Using multi DRM

Next to HLS PlayReady Conax Contego offers multi-DRM as well, supporting the following:

These can be used in combination with either the Unified Packager or the Unified Origin by passing encryption key (the combination of key id and content key) and license server url (when applicable) as outlined in the various sections on PlayReady, Widevine etc.

Consult the Conax Contego manual on how to obtain the required variables from the Conax Contego API.

Adding Conax PlayReady

New in version 1.7.1.

Conax Contego provides Conax' own variant of HLS PlayReady encryption.

The webserver adds protection to the HLS audio and video streams on-the-fly with Conax PlayReady HLS.

USP provides the following options for Conax PlayReady HLS protection:

--conax.key

The 128 bits Key ID (KID) and 128 bits Content Encryption Key (CEK) are passed with the --conax.key option where KID and CEK are separated by a colon, e.g. --conax.key=KID:CEK

Both KID and CEK must be coded in hex (base16).

Note

The KID from a PlayReady License server may be formatted as a little-endian GUID. In that case you have to change the endianness as we always use a big-endian UUID representation of the KID.

--conax.key_iv

Specifies the initialization vector (64 bits).

--conax.license_server_url

A string returned by the Conax API in the format: conax:drm_id:BASE64_ENCODED_INFO

--hls.playout

Set to 'conax' to enable HLS + Conax PlayReady

The following example creates a VOD server manifest with MP4Split and will embed the key information in the server manifest.

Example for generating a server manifest with Conax PlayReady DRM:

mp4split -o conax.ism  \
  --conax.key=7C9AA2B68306466F882D75BED922CD25:27eb4cef2afa2afe8fe5d2c374cd60e \
  --conax.license_server_url="conax:drm_id:base64_encoded_info:NOTE:returned_from_Conax_API"  \
  --hls.playout=conax
video.ismv

Once you generate server manifest file, as seen in the example above, all the key information is embedded in the server manifest.

When a client requests an .m3u8 playlist the webserver module will automatically insert the proper tags and requests for the MPEG-TS fragments are encrypted on-the-fly.

An example .m3u8 playlist:

#EXTM3U
#EXT-X-VERSION:2
## Created with Unified Streaming Platform(version=1.7.2)
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:5
#EXT-X-KEY:METHOD=AES-128-CX,URI="conax:drm_id:base64_encoded_info:NOTE:returned_from_API",IV=0x97F92BAE7D8510A10000000100000000
#USP-X-TIMESTAMP-MAP:MPEGTS=900000,LOCAL=00:00:00.000
#EXTINF:4, no desc
conax-audio=65000-video=236000-1.ts