Playing protected content using BuyDRM
Overview
If you are not sure what DRM is, you want have an overview and get started, please have a look at our DRM Setup Guide.
Nearly every license provider, such as Irdeto or BuyDRM, requires a few special information being sent to the DRM license server, or responds with a proprietary format. Instead of integrating a few license providers into the core of our player, we decided to provide necessary configuration options via the player configuration.
Widevine
const sourceConfig = {
dash: "DASH_MANIFEST_URL",
drm: {
widevine: {
LA_URL: "http://widevine.licensekeyserver.com",
headers: { "customdata": "BASE64_ENCODED_CUSTOM_DATA" },
}
}
};
Please replace the following placeholders in the code:
- DASH_MANIFEST_URL: The URL to the DASH manifest (MPD) file.
- BASE64_ENCODED_CUSTOM_DATA: BuyDRM authentication XML in base64 encoded format to send along with the license request.
PlayReady
const sourceConfig = {
dash: "DASH_MANIFEST_URL",
drm: {
playready: {
LA_URL: "http://sldrm.licensekeyserver.com/core/rightsmanager.asmx",
headers: { "customdata": "BASE64_ENCODED_CUSTOM_DATA" },
}
}
};
Please replace the following placeholders in the code:
- DASH_MANIFEST_URL: The URL to the DASH manifest (MPD) file.
- BASE64_ENCODED_CUSTOM_DATA: BuyDRM authentication XML in base64 encoded format to send along with the license request.
Fairplay
const sourceConfig = {
hls: "HLS_MANIFEST_URL",
drm: {
fairplay: {
LA_URL: "https://fp-keyos.licensekeyserver.com/getkey",
certificateURL: "CERTIFICATE_URL",
headers: { "customdata": "BASE64_ENCODED_CUSTOM_DATA" },
prepareMessage : (event, session) => `spc=${event.messageBase64Encoded}&assetId=${session.contentId}`,
prepareContentId : contentId => {
const idx = contentId.indexOf("skd://");
if (idx > -1) {
return contentId.substring(8, 40);
}
throw "Invalid Content ID format. The format of the Content ID must be the following: skd://xxx where xxx is the Key ID in hex format.";
}
}
}
};
Please replace the following placeholders in the code:
- HLS_MANIFEST_URL: The URL to the HLS manifest (M3U8) file.
- BASE64_ENCODED_CUSTOM_DATA: BuyDRM authentication XML in base64 encoded format to send along with the license request.
- CERTIFICATE_URL: The URL to the FairPlay certificate as provided by BuyDRM
Complete example for Widevine, PlayReady and FairPlay
let sourceConfig = {
dash: "DASH_MANIFEST_URL",
hls: "HLS_MANIFEST_URL",
drm: {
playready: {
LA_URL: "http://sldrm.licensekeyserver.com/core/rightsmanager.asmx",
headers: { "customdata": "BASE64_ENCODED_CUSTOM_DATA" }
},
widevine: {
LA_URL: "http://widevine.licensekeyserver.com",
headers: { "customdata": "BASE64_ENCODED_CUSTOM_DATA" }
},
fairplay: {
LA_URL: "https://fp-keyos.licensekeyserver.com/getkey",
certificateURL: "CERTIFICATE_URL",
headers: { "customdata": "BASE64_ENCODED_CUSTOM_DATA" },
prepareMessage : (event, session) => `spc=${event.messageBase64Encoded}&assetId=${session.contentId}`,
prepareContentId : contentId => {
const idx = contentId.indexOf("skd://");
if (idx > -1) {
return contentId.substring(8, 40);
}
throw "Invalid Content ID format. The format of the Content ID must be the following: skd://xxx where xxx is the Key ID in hex format.";
}
}
}
};
Please replace the following placeholders in the code:
- DASH_MANIFEST_URL: The URL to the DASH manifest (MPD) file.
- HLS_MANIFEST_URL: The URL to the HLS manifest (M3U8) file.
- BASE64_ENCODED_CUSTOM_DATA: BuyDRM authentication XML in base64 encoded format to send along with the license request.
- CERTIFICATE_URL: The URL to the FairPlay certificate as provided by BuyDRM
Updated 9 months ago