CPIX API Guide
Overview
The CPIX API is an API implemented in accordance with the Content Protection Information Exchange Format (CPIX) Standard Guide as defined by the DASH Industry Forum. It defines specifications that link the keys required to apply multi-DRM in the process of packaging media contents. With this API, PallyCon Multi DRM can be easily linked with encoder/transcoder solution supporting CPIX based key exchange.
CPIX API Types
PallyCon Multi DRM can be integrated with the following types of CPIX API depending on the implementation subject of API.
-
PallyCon CPIX API
: The CPIX API implemented by PallyCon, allowing encoder/transcoder solution vendors to work with PallyCon Multi DRM with the corresponding API.Flussonic Media Server
is integrated usingPallyCon CPIX API
. -
SPEKE API
: The CPIX API implemented by AWS Elemental, which is pre-integrated with PallyCon to easily apply PallyCon Multi DRM to MediaPackage or MediaConvert products of AWS Elemental Media Service. For more information about SPEKE API integration, please refer to the guide. -
ATEME NEA-DVR CPIX API
: The CPIX API implemented by Anevia(now ATEME). It can be applied to NEA-DVR solution for PallyCon Multi DRM integration.
PallyCon CPIX API
This API is implemented by PallyCon according to the CPIX implementation guide of DASH-IF.
Please refer to the following guide for details of CPIX specification. https://dashif.org/docs/CPIX2.1/HTML/Index.html
Supported Features
PallyCon CPIX API supports the following content types and functions.
PlayReady | Widevine | FairPlay | AES-128 | |
---|---|---|---|---|
DASH | (key rotation supported) | (key rotation supported) | ||
HLS | (key rotation supported) | (NCG DRM supported) |
KMS URL Specification
PallyCon CPIX API provides the following KMS URL specifications. The enc-token
at the end of the URL is an API authentication token that is generated when you sign up PallyCon service, and can be found on the PallyCon Console site.
KMS URL V1 - https://kms.pallycon.com/v1/cpix/pallycon/getKey/{enc-token}
KMS URL V2 - https://kms.pallycon.com/v2/cpix/pallycon/getKey/{enc-token}
Encoder/transcoder solution calls the above URL to get the key needed for DRM encryption. Add the CPIX data as shown in the following example to the body part of the request data, and call it by
POST
method.
KMS Specification V2 and Multi-key Packaging
Request/response data for multi-key packaging has been added to the V2 specification. Multi-key packaging encrypts video tracks by resolution with different keys, and is required for setting the security level for each resolution by Hollywood Studio requirement.
For multi-key packaging, the following items should be added to the corresponding XML request data.
If you want to package with single key, you may remove the below items from the example request XML.
IntendedTrackType
Sets the track type (SD, HD, etc) to be encrypted with the kid in cpix:ContentKeyUsageRule
tag.
The values that can be entered and the default resolution are as follows.
- AUDIO: for audio track
- SD: 576p or less
- HD: 720p ~ 1080p
- UHD1: 4K
- UHD2: 8K
VideoFilter
You can set the min/max pixels of the video track using VideoFilter
tag and minPixels
/ maxPixels
parameters.
Content ID Specification
When packaging content with PallyCon CPIX API, you must enter a unique content ID(CID) managed by the CMS of the content service. The CID is registered with PallyCon license server and used to request and issue DRM licenses on content playback.
Enter the content ID (max 200 alphanumeric characters) in the cpix:CPIX
tag of the request body(XML) for each content type as below.
<cpix:CPIX id="your-content-id"
Example for DASH VOD content
Request body
<?xml version="1.0" encoding="UTF-8"?>
<cpix:CPIX id="your-content-id" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
<cpix:ContentKeyList>
<cpix:ContentKey kid="681e5b39-49f2-4dfa-b744-86573c22e6fb"></cpix:ContentKey>
</cpix:ContentKeyList>
<cpix:DRMSystemList>
<!-- Common encryption / MSS (Playready) -->
<cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="9a04f079-9840-4286-ab92-e65be0885f95" />
<!-- Common encryption (Widevine)-->
<cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" />
</cpix:DRMSystemList>
</cpix:CPIX>
<cpix:CPIX id=""
: Enter a unique ID for the content to be packaged. In the case of single-key packaging, only this part in the above example needs to be modified.kid
: Used to identify the key to be issued for each track during multi-key packaging. You can enter any value for single key packaging, because the kid value in request data is not used.systemId
: Enter a unique uuid value specified for each DRM. (case insensitive)
Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:speke="urn:aws:amazon:com:speke" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" >
<cpix:ContentKeyList>
<cpix:ContentKey explicitIV="MDEyMzQ1Njc4OWFiY2RlZg==" kid="12ea753c-23e7-bc02-4474-b2b976c43beb">
<cpix:Data>
<pskc:Secret>
<pskc:PlainValue>SzC1qc1cEpyFU6t/lL7Byw==</pskc:PlainValue>
</pskc:Secret>
</cpix:Data>
</cpix:ContentKey>
</cpix:ContentKeyList>
<cpix:DRMSystemList>
<!-- Common encryption / MSS (Playready) -->
<cpix:DRMSystem kid="12ea753c-23e7-bc02-4474-b2b976c43beb" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
<cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- Added to V2 -->
<cpix:PSSH>AAACwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAqKiAgAAAQABAJgCPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBQAEgAWABxAEUAdQBjAGoAQQByAHgARQBkAEwASwA1AGQAcwBRADcANgB3AD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AC8ARgA3AEIAMQBmAEgAMgBlADAAYwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHQAZQBzAHQAdABvAGsAeQBvAC4AcABhAGwAbAB5AGMAbwBuAC4AYwBvAG0ALwByAGkALwBwAGwAYQB5AHIAZQBhAGQAeQAvAGwAaQBjAGUAbgBzAGUATQBhAG4AYQBnAGUAcgAuAGQAbwA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</cpix:PSSH>
</cpix:DRMSystem>
<!-- Common encryption (Widevine)-->
<cpix:DRMSystem kid="12ea753c-23e7-bc02-4474-b2b976c43beb" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
<cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- Added to V2 -->
<cpix:PSSH>AAAAVXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADUIARIQEup1PCPnvAJEdLK5dsQ76xoMaW5rYWVudHdvcmtzIg1jcGl4LXRlc3QtY2lkKgJIRA==</cpix:PSSH>
</cpix:DRMSystem>
</cpix:DRMSystemList>
</cpix:CPIX>
<cpix:CPIX id=""
: The CID value entered in the request data is returned.<cpix:ContentKey>
: The key(<pskc:PlainValue>
) and IV(explicitIV
) to be used for content encryption, and thekid
value for the key are returned. The value of `kid' is newly generated by KMS, independent of the value entered in the request data. The key and IV are returned in Base64 encoded form.<cpix:DRMSystem>
: PSSH data for each DRM(PlayReady and Widevine) is returned. The<cpix:PSSH>
tag shows the default PSSH value, and the<cpix:ContentProtectionData>
tag shows the PSSH data with the header part removed.
Example for HLS VOD content
Request body
<?xml version="1.0" encoding="UTF-8"?>
<cpix:CPIX id="your-content-id" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
<cpix:ContentKeyList>
<cpix:ContentKey kid="681e5b39-49f2-4dfa-b744-86573c22e6fb"></cpix:ContentKey>
</cpix:ContentKeyList>
<cpix:DRMSystemList>
<!-- HLS SAMPLE-AES (FairPlay) -->
<cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" />
</cpix:DRMSystemList>
</cpix:CPIX>
<cpix:CPIX id=""
: Enter a unique ID for the content to be packaged. In the case of single-key packaging, only this part in the above example needs to be modified.kid
: Used to identify the key to be issued for each track during multi-key packaging. You can enter any value for single key packaging, because the kid value in request data is not used.systemId
: Enter a unique uuid value specified for FairPlay DRM. (case insensitive)
Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:speke="urn:aws:amazon:com:speke" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" >
<cpix:ContentKeyList>
<cpix:ContentKey explicitIV="MDEyMzQ1Njc4OWFiY2RlZg==" kid="12ea753c-23e7-bc02-4474-b2b976c43beb">
<cpix:Data>
<pskc:Secret>
<pskc:PlainValue>ODQ4REQwMTM5OURGNDczQQ==</pskc:PlainValue>
</pskc:Secret>
</cpix:Data>
</cpix:ContentKey>
</cpix:ContentKeyList>
<cpix:DRMSystemList>
<!-- HLS SAMPLE-AES (FairPlay) -->
<cpix:DRMSystem kid="12ea753c-23e7-bc02-4474-b2b976c43beb" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
<cpix:HLSSignalingData>I0VYVC1YLUtFWTpN...DA1</cpix:HLSSignalingData><!-- Added to V2 -->
<cpix:HLSSignalingData playlist="master">I0VYVC1YLVNFU...DU=</cpix:HLSSignalingData><!-- Added to V2 -->
<cpix:URIExtXKey>c2tkOi8vRXVwMVBDUG52QUpFZExLNWRzUTc2dz09</cpix:URIExtXKey>
</cpix:DRMSystem>
</cpix:DRMSystemList>
</cpix:CPIX>
<cpix:CPIX id=""
: The CID value entered in the request data is returned.<cpix:ContentKey>
: The key(<pskc:PlainValue>
) and IV(explicitIV
) to be used for content encryption, and thekid
value for the key are returned. The value of `kid' is newly generated by KMS, independent of the value entered in the request data. The key and IV are returned in Base64 encoded form.<cpix:URIExtXKey>
: Theskd://
URI value to be included in theURI
parameter for the#EXT-X-KEY
tag of m3u8 is returned in Base64 encoded form.
Example for DASH live content
For live content, the API responds with a key value that is rotated according to the ContentKeyPeriodList index value.
Request body
<?xml version="1.0" encoding="UTF-8"?>
<cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
<cpix:ContentKeyList>
<cpix:ContentKey kid="ca65e643-482c-4a21-a204-05570a1e276c"></cpix:ContentKey>
</cpix:ContentKeyList>
<cpix:DRMSystemList>
<!-- Common encryption / MSS (Playready) -->
<cpix:DRMSystem kid="ca65e643-482c-4a21-a204-05570a1e276c" systemId="9a04f079-9840-4286-ab92-e65be0885f95" />
<!-- Common encryption (Widevine)-->
<cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" />
</cpix:DRMSystemList>
<cpix:ContentKeyPeriodList>
<cpix:ContentKeyPeriod id="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9" index="128"/>
</cpix:ContentKeyPeriodList>
<cpix:ContentKeyUsageRuleList>
<cpix:ContentKeyUsageRule intendedTrackType="HD" kid="ca65e643-482c-4a21-a204-05570a1e276c"><!-- Added to V2: intendedTrackType -->
<cpix:KeyPeriodFilter periodId="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9"/>
<cpix:VideoFilter maxPixels="2073600" minPixels="921600"/><!-- Added to V2 -->
</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>
Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:speke="urn:aws:amazon:com:speke" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" >
<cpix:ContentKeyList>
<cpix:ContentKey explicitIV="S2ljHDlFRStjCuOpN8I7+w==" kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3">
<cpix:Data>
<pskc:Secret>
<pskc:PlainValue>OlRFK6LSytFr2HnN1HqwWw==</pskc:PlainValue>
</pskc:Secret>
</cpix:Data>
</cpix:ContentKey>
</cpix:ContentKeyList>
<cpix:ContentKeyPeriodList>
<cpix:ContentKeyPeriod id="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9" index="128"/>
</cpix:ContentKeyPeriodList>
<cpix:ContentKeyUsageRuleList>
<cpix:ContentKeyUsageRule intendedTrackType="HD" kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3"><!-- Added to V2 : intendedTrackType -->
<cpix:KeyPeriodFilter periodId="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9"/>
<cpix:VideoFilter maxPixels="2073600" minPixels="921600"/><!-- Added to V2 -->
</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
<cpix:DRMSystemList>
<cpix:DRMSystem kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
<cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- Added to V2 -->
<cpix:PSSH>AAADTHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAywsAwAAAQABACIDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADQANgBzAGEAKwBNAE8AbgB6AGMAOQBJAFMAawBMAE8AaQB2AEoAdwB3AD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+ADYAaQBiAFAANAAwAHUAVABPAFoAMAA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAHQAZQBzAHQAdABvAGsAeQBvAC4AcABhAGwAbAB5AGMAbwBuAC4AYwBvAG0ALwByAGkALwBwAGwAYQB5AHIAZQBhAGQAeQAvAGwAaQBjAGUAbgBzAGUATQBhAG4AYQBnAGUAcgAuAGQAbwA8AC8ATABBAF8AVQBSAEwAPgA8AEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AFAARQBSAEkATwBEAF8ASQBOAEQARQBYAD4AMQAyADgAPAAvAFAARQBSAEkATwBEAF8ASQBOAEQARQBYAD4APAAvAEMAVQBTAFQATwBNAEEAVABUAFIASQBCAFUAVABFAFMAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==</cpix:PSSH>
</cpix:DRMSystem>
<cpix:DRMSystem kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
<cpix:ContentProtectionData>qAUAAAEAAQCeB...A=</cpix:ContentProtectionData><!-- Added to V2 -->
<cpix:PSSH>AAAAaHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAEgIARIQa6yOww7jN589ISkLOivJwxoMaW5rYWVudHdvcmtzIh1jcGl4LXRlc3QtY2lkMDAwMDAwMDAwMDAwMDA4MCoCSEQ4gAE=</cpix:PSSH>
</cpix:DRMSystem>
</cpix:DRMSystemList>
</cpix:CPIX>
Example for HLS live content
Request body
<?xml version="1.0" encoding="UTF-8"?>
<cpix:CPIX id="your-content-id" xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:speke="urn:aws:amazon:com:speke">
<cpix:ContentKeyList>
<cpix:ContentKey kid="681e5b39-49f2-4dfa-b744-86573c22e6fb"></cpix:ContentKey>
</cpix:ContentKeyList>
<cpix:DRMSystemList>
<!-- HLS SAMPLE-AES (FairPlay) -->
<cpix:DRMSystem kid="681e5b39-49f2-4dfa-b744-86573c22e6fb" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
<cpix:ContentProtectionData />
<cpix:PSSH />
<cpix:URIExtXKey />
</cpix:DRMSystem>
</cpix:DRMSystemList>
</cpix:CPIX>
Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpix:CPIX id="cpix-test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:speke="urn:aws:amazon:com:speke" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" >
<cpix:ContentKeyList>
<cpix:ContentKey explicitIV="S2ljHDlFRStjCuOpN8I7+w==" kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3">
<cpix:Data>
<pskc:Secret>
<pskc:PlainValue>OlRFK6LSytFr2HnN1HqwWw==</pskc:PlainValue>
</pskc:Secret>
</cpix:Data>
</cpix:ContentKey>
</cpix:ContentKeyList>
<cpix:ContentKeyPeriodList>
<cpix:ContentKeyPeriod id="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9" index="128"/>
</cpix:ContentKeyPeriodList>
<cpix:ContentKeyUsageRuleList>
<cpix:ContentKeyUsageRule intendedTrackType="HD" kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3"><!-- Added to V2: intendedTrackType -->
<cpix:KeyPeriodFilter periodId="keyPeriod_e7c4423c-a2c6-46f4-bef3-2bfed6bae9c9"/>
<cpix:VideoFilter maxPixels="2073600" minPixels="921600"/><!-- Added to V2 -->
</cpix:ContentKeyUsageRule>
</cpix:ContentKeyUsageRuleList>
<cpix:DRMSystemList>
<!-- HLS SAMPLE-AES (FairPlay) -->
<cpix:DRMSystem kid="6bac8ec3-0ee3-379f-3d21-290b3a2bc9c3" systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2">
<cpix:HLSSignalingData>I0VYVC1YLUtFWTpN...DA1</cpix:HLSSignalingData><!-- Added to V2 -->
<cpix:HLSSignalingData playlist="master">I0VYVC1YLVNFU...DU=</cpix:HLSSignalingData><!-- Added to V2 -->
<cpix:URIExtXKey>c2tkOi8vY3BpeC10ZXN0LWNpZDAwMDAwMDAwMDAwMDAwODA=</cpix:URIExtXKey>
</cpix:DRMSystem>
</cpix:DRMSystemList>
</cpix:CPIX>
Nginx real-time packaging integration
If you want to process real-time packaging through Nginx VOD Module, you can develop a client module that calls PallyCon CPIX API to integrate DRM encryption.
Enter the encryption key(<pskc:PlainValue>
), IV(explicitIV
), kid, and PSSH values of the CPIX response data to the JSON parameter of the guide linked above. For the Nginx integration, the PSSH value must be entered as the value of the <cpix:ContentProtectionData>
tag, and the kid value must be entered after converting the uuid string into a Base64-encoded 128-bit binary value.
Flussonic Media Server Integration
Flussonic Media Server
is a server software that helps you capture, transcode, record, protect, and deliver video to users across multiple devices. Flussonic Media Server
is integrated with PallyCon Multi-DRM service using PallyCon CPIX API
.
- Flussonic Media Server Website : https://flussonic.com/flussonic-media-server
- Flussonic - Pallycon integration guide : https://flussonic.com/doc/content-protection-with-drm/pallycon-drm
SPEKE API
Secure Packager and Encoder Key Exchange (SPEKE) API is the CPIX API implemented by AWS Elemental and is used to interface with AWS Elemental MediaPackage or MediaConvert products. The basic specification is the same as the PallyCon CPIX API except the KMS URL. For details on SPEKE integration, please refer to the guide.
KMS URL Specification
KMS URL specification for SPEKE API is as follows. The enc-token
at the end of the URL is an API authentication token that is generated when you sign up PallyCon service, and can be found on the PallyCon Console site.
https://kms.pallycon.com/cpix/getKey?enc-token={enc-token}
ATEME NEA-DVR CPIX API
CPIX API for integration with ATEME (formaly Anevia) NEA-DVR solution. PallyCon multi-DRM packaging can be integrated through this API.
TITAN Live
or TITAN File
. Please contact us via HelpDesk if you want to integrate DRM packaging with ATEME TITAN solution.
Supported Features
Multi-DRM integration via ATEME NEA-DVR CPIX API supports the following content types and functions.
PlayReady | Widevine | FairPlay | AES-128 | |
---|---|---|---|---|
DASH | ||||
HLS |
KMS URL Specification
The KMS URL specification for ATEME NEA-DVR CPIX API is as follows. The URL generated according to the following specifications is called by the NEA-DVR solution in GET
method to get the key.
https://kms.pallycon.com/cpix/anevia/{streamingFormat}/{encToken}/{cid}
Path | Description |
---|---|
streamFormat | dash or hls. The key is issued with the drm type supported according to the streaming format type. |
encToken | The API authentication token that is created when you sign up for the PallyCon service. You can find it on PallyCon Console site. |
cid | Content ID |
ATEME NEA-DVR CPIX API Example
Request URL Example
https://kms.pallycon.com/cpix/anevia/dash/eyJzaXRlX2lkIjoiREVNTyIsICJhY2Nlc3Nfa2V5IjoiZHNJb2xjN2gxRzhUVW1JMTdiWXd4aFV1TkZvRmNlNzJjeDllTU9rNjJ3YjhWTjJQZGdwV1lISXhTRVg5ZjBIaSJ9/test-cid
Response Data Example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cpix:CPIX id="test-cid" xmlns:cpix="urn:dashif:org:cpix" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" xmlns:ns3="urn:aws:amazon:com:speke" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<cpix:ContentKeyList>
<cpix:ContentKey explicitIV="MDEyMzQ1Njc4OWFiY2RlZg==" kid="cbc2eedd-4284-fd94-c17b-0d6fb56c146b">
<cpix:Data>
<pskc:Secret>
<pskc:PlainValue>dLlreLqTHdROTxGnw/3G7g==</pskc:PlainValue>
</pskc:Secret>
</cpix:Data>
</cpix:ContentKey>
</cpix:ContentKeyList>
<cpix:DRMSystemList>
<cpix:DRMSystem kid="cbc2eedd-4284-fd94-c17b-0d6fb56c146b" systemId="9a04f079-9840-4286-ab92-e65be0885f95">
<cpix:PSSH>AAACvnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAp6eAgAAAQABAJQCPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgAzAGUANwBDAHkANABSAEMAbABQADMAQgBlAHcAMQB2AHQAVwB3AFUAYQB3AD0APQA8AC8ASwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AFQAWABrAFkAcgAwAGQAdgBIAEgAYwA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAGUAbgBzAGUALgBwAGEAbABsAHkAYwBvAG4ALgBjAG8AbQAvAHIAaQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AbABpAGMAZQBuAHMAZQBNAGEAbgBhAGcAZQByAC4AZABvADwALwBMAEEAXwBVAFIATAA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</cpix:PSSH>
</cpix:DRMSystem>
<cpix:DRMSystem kid="cbc2eedd-4284-fd94-c17b-0d6fb56c146b" systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
<cpix:PSSH>AAAAUHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADAIARIQy8Lu3UKE/ZTBew1vtWwUaxoMaW5rYWVudHdvcmtzIgh0ZXN0LWNpZCoCSEQ=</cpix:PSSH>
</cpix:DRMSystem>
</cpix:DRMSystemList>
</cpix:CPIX>