Skip to main content

Prepare FPS Content for Axinom DRM

When you prepare your content, it must be encoded and packaged into the HLS (HTTP Live Streaming) format, which is supported by FairPlay.

The FairPlay content will include Key URI. The Key URI tells the playback system how to retrieve the decryption key for the content. Axinom DRM expects the FairPlay Key URI of the content to be represented in a UTF-8 string in the format [skd://]<Key ID as GUID string>:<Key IV as 32-character hex string>.

note

The :[Key IV] part of the Key URI format is optional. If the IV (A 16-byte initialization vector to encrypt/decrypt clear/encrypted media) is omitted here, it shall be specified in the Entitlement Message. If the IV is specified both in the Key URI and in the Entitlement Message, the value from the Entitlement Message takes precedence.

note

In the default case, the above Key URI would correspond to the URI parameter skd://72ea9ec1-abb4-40d8-b3a9-e0bd1833bd58:0123456789ABCDEF0123456789ABCDEF in the HLS playlist. It’s the playback app’s responsibility to ensure that the URI string is converted into an Key URI with the required format. Refer to the sample implementation.

note

For Axinom license services the skd:// prefix is optional, however, it is required in the related URI field value in HLS manifests. Also, when a FairPlay player utilizes the modern standard EME (as opposed to the Apple-specific WebKit-prefixed EME), then the skd:// is mandatory in both the manifest and the Key URI value.

note

Axinom expects the Key URI to be represented by a UTF-8 string. When any other encoding is used, the Key URI may fail to be parsed and an error is returned.

Examples of valid Axinom-compatible Key URIs:

  1. sdk://72ea9ec1-abb4-40d8-b3a9-e0bd1833bd58:0123456789ABCDEF0123456789ABCDEF
  2. sdk://72ea9ec1-abb4-40d8-b3a9-e0bd1833bd58 (the IV is omitted)
  3. 72ea9ec1-abb4-40d8-b3a9-e0bd1833bd58:0123456789ABCDEF0123456789ABCDEF (the skd:// prefix is omitted)
  4. 72ea9ec1-abb4-40d8-b3a9-e0bd1833bd58 (the skd:// prefix and the IV are omitted)

Key IV defined in the entitlement message​

{
"type": "entitlement_message",
"version": 2,
"license": { // (1)
"start_datetime": "2020-01-01T00:00:00+03:00",
"expiration_datetime": "2020-01-03T00:00:00+03:00",
"duration": 3600,
"allow_persistence": true,
...
},
"content_keys_source": {
"inline": [
{
"id": "11111111-0000-0000-0000-000000000000",
"iv": "HYDILKxZnPF0KizuWT0hww==" // (1)
}
]
}
}

Key IV defined in the manifest file​

#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://302f80dd-411e-4886-bca5-bb1f8018a024:77FD1889AAF4143B085548B3C0F95B9A",KEYFORMATVERSIONS="1",KEYFORMAT="com.apple.streamingkeydelivery"

Most players in general can pick this value from the manifest automatically. A sample Fairplay manifest file can be found here.