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>
.
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.
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.
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.
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:
sdk://72ea9ec1-abb4-40d8-b3a9-e0bd1833bd58:0123456789ABCDEF0123456789ABCDEF
sdk://72ea9ec1-abb4-40d8-b3a9-e0bd1833bd58
(the IV is omitted)72ea9ec1-abb4-40d8-b3a9-e0bd1833bd58:0123456789ABCDEF0123456789ABCDEF
(theskd://
prefix is omitted)72ea9ec1-abb4-40d8-b3a9-e0bd1833bd58
(theskd://
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.