DRM Message
This article describes the valid format for the msg parameter of the sendDrmMessage method.
Widevine
<?xml version="1.0" encoding="utf-8"?> <WidevineCredentialsInfo xmlns="http://www.smarttv-alliance.org/DRM/widevine/2012/protocols/" > <ContentURL>$(ContentURL)</ContentURL> <DeviceID>$(DeviceID)</DeviceID> <StreamID>$(StreamID)</StreamID> <ClientIP>$(Client)</ClientIP> <DRMServerURL>$(DRMServerURL)</DRMServerURL> <DRMAckServerURL>$(DRMSAckerverURL)</DRMAckServerURL> <DRMHeartBeatURL>$( HeartbeatServerURL)</DRMHeartBeatURL> <DRMHeartBeatPeriod>$(DRMHeartBeatPeriod)</DRMHeartBeatPeriod> <UserData>$(UserData) </UserData> <Portal>$(Portal)</Portal> <StoreFront>$(Portal)</StoreFront> <BandwidthCheckURL>$(BandwidthCheckURL) </BandwidthCheckURL> <BandwidthCheckInterval>$(BandwidthCheckInterval)</BandwidthCheckInterval> </WidevineCredentialsInfo >
Element |
Support by CSP* |
Description |
---|---|---|
ContentURL |
Mandatory |
Content URL |
DRMServerURL |
Mandatory |
URL for the Widevine DRM key server |
DeviceID |
Optional |
Unique ID of the device |
ClientIP |
Optional |
Client IP address |
StreamID |
Optional |
Unique ID of the stream being requested in the entitlement request |
DRMAckServerURL |
Optional |
URL for entitlement delivery acknowledgments |
DRMHeartBeatURL |
Optional |
URL of a server that handles a heartbeat request |
DRMHeartBeatPeriod |
Optional |
The duration between consecutive heartbeats (in seconds) |
UserData |
Optional |
User data (Custom Data) Do not use tag type data for custom data. It is recognized as sub-elements and that makes parsing error.
|
Portal |
Optional |
Portal URL |
StoreFront |
Optional |
StoreFront URL |
BandwidthCheckURL |
Optional |
The URL for bandwidth check server |
BandwidthCheckInterval |
Optional |
Interval of bandwidth check |
* CSP: Content Service Provider
You should do:
-
Even if you do not use the optional elements, you must specify the elements with an empty value.
-
You should keep the order of XML elements in the Widevine message as above table and example.
PlayReady
Pre Acquisition
<?xml version="1.0" encoding="utf-8"?> <PlayReadyInitiator xmlns= "http://schemas.microsoft.com/DRM/2007/03/protocols/"> <LicenseAcquisition> <Header> <WRMHEADER xmlns= "http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0"> <DATA> <PROTECTINFO> <KEYLEN>16</KEYLEN> <ALGID>AESCTR</ALGID> </PROTECTINFO> <LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL> <KID>lFmb2gxg0Cr5bfEnJXgJeA==</KID> <CHECKSUM>P7ORpD2IpA==</CHECKSUM> </DATA> </WRMHEADER> </Header> <CustomData>AuthZToken XYZ</CustomData> </LicenseAcquisition> </PlayReadyInitiator>
Element |
Support by Device |
Include by Service |
---|---|---|
Header |
Mandatory |
Mandatory |
CustomData |
Mandatory |
Optional |
Authentication with Custom Data for Post-Acquisition
< License Server URL Overriding for License Post-acquisition >
<?xml version="1.0" encoding="utf-8"?> <PlayReadyInitiator xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/"> <LicenseServerUriOverride> <LA_URL>http://rm.contoso.com/rightsmanager.asmx</LA_URL> </LicenseServerUriOverride> </PlayReadyInitiator>
After this message, all further license post-acquisitions send the license challenge to the specified LA_URL, not to the default LA_URL contained in the WRMHEADER of the content (application persistence).
License pre-acquisitions are not affected by this command.
<?xml version="1.0" encoding="utf-8"?> <PlayReadyInitiator xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/"> <LicenseServerUriOverride> <LA_URL></LA_URL> </LicenseServerUriOverride> </PlayReadyInitiator>
After this message, all further license post-acquisitions send the license challenge to the default LA_URL contained in the WRMHEADER of the content (URL overriding canceled).
< Set Challenge CustomData for License Post-acquisition >
<?xml version="1.0" encoding="utf-8"?> <PlayReadyInitiator xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/"> <SetCustomData> <CustomData>AuthZToken XYZ</CustomData> </SetCustomData> </PlayReadyInitiator>
After this message, all further license post-acquisitions use the specified value, as the CustomData value of the generated license challenges (application persistence).
License pre-acquisitions are not affected by this command.
<?xml version="1.0" encoding="utf-8"?> <PlayReadyInitiator xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/"> <SetCustomData> <CustomData></CustomData> </SetCustomData> </PlayReadyInitiator>
After this message, all further license post-acquisitions use no CustomData value in the generated license challenges.