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