The Harmonic encoder supports both H.264 and H.265 video codecs. It integrates well with Axinom Key Service. Learn how to use the endpoint and view request and response formats.

Harmonic

Axinom Key Service supports direct integration with the Harmonic encoder that provides support for the H.264 and H.265 video codecs.

The integration endpoint is /Harmonic of the Key Acquisition API.

Functionality

The Client requests one or more content keys. The Key Service generates the necessary keys using the Key Seed model and returns the keys with additional DRM-specific metadata where needed.

ClientKey_ServiceKey_Acquisition_APIHarmonic encoderCPIX (Template)CPIX (with Keys)
Figure 1. Harmonic - Request/Response

Authorization

This endpoint requires an authorization header - the same as described under the Key Service Management API.

Request/Response Format

Request

The Client creates a CPIX document in the format which it desires to get, just without the values for the keys, and sends this document to the Key Service. The Key Service generates the specified keys, adds this information to the document, and returns the CPIX document to the Client.

Example of a Harmonic Request (CPIX)
<?xml version="1.0"?>
<cpix:CPIX xmlns:cpix="urn:dashif:org:cpix" xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" contentId="test_ch1">
	<cpix:ContentKeyList>
		<cpix:ContentKey kid="af1ed63c-5784-460b-9e51-309dd47b7d9c"/>
	</cpix:ContentKeyList>
	<cpix:DRMSystemList>
		<cpix:DRMSystem systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" kid="af1ed63c-5784-460b-9e51-309dd47b7d9c"/>
		<cpix:DRMSystem systemId="9a04f079-9840-4286-ab92-e65be0885f95" kid="af1ed63c-5784-460b-9e51-309dd47b7d9c"/>
		<cpix:DRMSystem systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" kid="af1ed63c-5784-460b-9e51-309dd47b7d9c"/>
	</cpix:DRMSystemList>
	<cpix:ContentKeyPeriodList>
		<cpix:ContentKeyPeriod id="keyPeriod_19d21813-874e-4804-8a56-1952722abeb5" index="213"/>
	</cpix:ContentKeyPeriodList>
	<cpix:ContentKeyUsageRuleList>
		<cpix:ContentKeyUsageRule kid="af1ed63c-5784-460b-9e51-309dd47b7d9c">
			<cpix:KeyPeriodFilter periodId="keyPeriod_19d21813-874e-4804-8a56-1952722abeb5"/>
		</cpix:ContentKeyUsageRule>
	</cpix:ContentKeyUsageRuleList>
</cpix:CPIX>

The table below explains some important elements of the request XML.

ContentKeyList The list of the Key IDs for which the Keys shall be generated. Each key ID is a GUID.

DRMSystemList

Requested DRM types, for which the PSSH Boxes will be delivered. The IDs are as defined by DASH-IF. Axinom Key Service supports FairPlay, PlayReady, and Widevine (listed in the example above in this order).

ContentKeyPeriodList

List of ContentKeyPeriod elements.

ContentKeyUsageRuleList

Content key usage rules for each key. It’s a pass-through which will only be returned to the Client.

Response

The response is a CPIX document.

Example CPIX document returned by the /Harmonic endpoint
<?xml version="1.0" encoding="utf-8"?>
<cpix:CPIX
  xmlns:cpix="urn:dashif:org:cpix"
  xmlns:pskc="urn:ietf:params:xml:ns:keyprov:pskc" contentId="test_ch1">
  <cpix:ContentKeyList>
    <cpix:ContentKey kid="727b3a81-7104-6f14-32ea-7287820010f2" explicitIV="jKdzKDQEGhVJH6gMGJD+uw==">
      <cpix:Data>
        <pskc:Secret>
          <pskc:PlainValue>9Ugc3VnErxmdIMxhAGQEMg==</pskc:PlainValue>
        </pskc:Secret>
      </cpix:Data>
    </cpix:ContentKey>
  </cpix:ContentKeyList>
  <cpix:DRMSystemList>
    <cpix:DRMSystem systemId="9a04f079-9840-4286-ab92-e65be0885f95" kid="727b3a81-7104-6f14-32ea-7287820010f2">
      <cpix:PSSH>AAAB5HBzc2... A+AA==</cpix:PSSH>
      <cpix:ContentProtectionData>PHB...C9wcm8+</cpix:ContentProtectionData>
      <cpix:SmoothStreamingProtectionHeaderData>xAEAA...IAPgA=</cpix:SmoothStreamingProtectionHeaderData>
    </cpix:DRMSystem>
    <cpix:DRMSystem systemId="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" kid="727b3a81-7104-6f14-32ea-7287820010f2">
      <cpix:PSSH>AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEHJ7OoFxBG8UMupyh4IAEPJI49yVmwY=</cpix:PSSH>
      <cpix:ContentProtectionData>PHBzc2ggeG1sbnM9InVybj...bXdZPTwvcHNzaD4=</cpix:ContentProtectionData>
    </cpix:DRMSystem>
    <cpix:DRMSystem systemId="94ce86fb-07ff-4f43-adb8-93d2fa968ca2" kid="727b3a81-7104-6f14-32ea-7287820010f2">
      <cpix:HLSSignalingData playlist="master">I0VYVC1YLVNFU1N...IjEi</cpix:HLSSignalingData>
      <cpix:HLSSignalingData playlist="media">I0VYVC1YLU...FZFUlNJT05TPSIxIg==</cpix:HLSSignalingData>
    </cpix:DRMSystem>
  </cpix:DRMSystemList>
  <cpix:ContentKeyPeriodList>
    <cpix:ContentKeyPeriod id="keyPeriod_19d21813-874e-4804-8a56-1952722abeb5" index="213" />
  </cpix:ContentKeyPeriodList>
  <cpix:ContentKeyUsageRuleList>
    <cpix:ContentKeyUsageRule kid="727b3a81-7104-6f14-32ea-7287820010f2">
      <cpix:KeyPeriodFilter periodId="keyPeriod_19d21813-874e-4804-8a56-1952722abeb5" />
    </cpix:ContentKeyUsageRule>
  </cpix:ContentKeyUsageRuleList>
</cpix:CPIX>

The table below explains some important elements of the response XML.

Element Description

ContentKeyList

A generated Key and an initialization vector (IV) for each Key ID

DRMSystemList

Additional protection data for each requested DRM system and each key

ContentKeyPeriodList

List of ContentKeyPeriod elements.

ContentKeyUsageRuleList

Content key usage rules, the same as in the request.

Revision History

The table below lists the document versions and any changes to them.

Version Date Description

1.0

November 27, 2020

  • Initial version.

1.1

May 20, 2021

  • Comments in code replaced with tables.