Skip to main content
Version: 8.1.2

How to use THEOplayer with KeyOS BuyDRM

This guide explains how you set up THEOplayer in combination with the KeyOS BuyDRM, a partnered multi-DRM vendor. THEOplayer is pre-integrated with KeyOS and provides a user-friendly API to connect to their Widevine and PlayReady DRM solutions.

If you are already comfortable with the THEOplayer API, you can go straight over to DRM Pre-Integration API.

Prerequisites

This guide expects you to:

  1. Have a THEOplayer license. If you aren't using THEOplayer yet, you can start your free trial here.

  2. Be a client of KeyOS's BuyDRM, and that you are integrated with their streaming infrastructure. Information on BuyDRM can be found at https://buydrm.com/multikey-demo/.

If you can place a checkmark next to these two fields, you are good to go.

You will also need a valid THEOplayer set-up. If you have no experience with setting up our player, we have an excellent getting started guide.

Integrating KeyOS BuyDRM

Starting from the basic template above, you only need to add your BuyDRM token (=customdata) to your source configuration, and tell THEOplayer that you are using KeyOS.

Web SDK
player.source = {
sources: {
src: "your.mpd",
type: "application/dash+xml",
drm: {
integration: "keyos",
customdata: "PEtleU9T...blhNTD4=",
playready: {
licenseAcquisitionURL: "<LICENSE_KEY_URL_PLAYREADY>"
},
widevine: {
licenseAcquisitionURL: "<LICENSE_KEY_URL_WIDEVINE>"
}
}
}
};

Your updated starting template would now look like this:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>THEOplayer Web SDK: Getting Started</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="/path/to/ui.css" />
<!-- adds THEOplayer CSS -->
</head>
<body>
<div
class="theoplayer-container video-js theoplayer-skin theo-seekbar-above-controls"
></div>

<script type="text/javascript" src="/path/to/THEOplayer.js"></script>
<!-- adds THEOplayer library -->

<script>
var element = document.querySelector(".theoplayer-container");
var player = new THEOplayer.Player(element, {
license: "your_license_string",
//...
});

player.source = {
sources: [
{
src: "your.mpd",
type: "application/dash+xml",
drm: {
integration: "keyos",
customdata: "PEtleU9T...blhNTD4=",
playready: {
licenseAcquisitionURL: "<LICENSE_KEY_URL_PLAYREADY>"
},
widevine: {
licenseAcquisitionURL: "<LICENSE_KEY_URL_WIDEVINE>"
}
}
}
]
};
</script>
</body>
</html>
Legacy iOS/tvOS SDK (4.12.x)

A KeyOS DRM integration is added to the source configuration by adding the keyOsDrm() parameter to drm as such:

public static var buyDRMkeyOS: SourceDescription {
let licenseAcquisitionURL: String = "<LICENSE_KEY_URL_FAIRPLAY>"
let certificateURL: String = "<CERTIFICATE_URL_FAIRPLAY>"
let token: String = "<TOKEN_FAIRPLAY>"
let type: String = "application/x-mpegURL"
let src = "<HLS_STREAM_URL>"
let drm: KeyOSDRMConfiguration = KeyOSDRMConfiguration(licenseAcquisitionURL: licenseAcquisitionURL, certificateURL: certificateURL, customdata: token)
let typedSource: TypedSource = TypedSource(src: src, type: type, drm: drm)
let source: SourceDescription = SourceDescription(source: typedSource)
return source
}

// Configure the player's source to initilaise playback
THEOplayer.source = buyDRMkeyOS

Where token for customdata is the Authentication XML generated from their platform.

Android SDK

A KeyOS DRM integration is added to the source configuration by adding the keyOsDrm() parameter to DRM as such:

SourceDescription dashWithDRM = sourceDescription()
.sources(
typedSource("//sourceUrl")
.drm(
keyOsDrm()
.customdata("//token")
.playready("//playReadyKeyServer")
.widevine("//widevineKeyServer")
.build()
).build()
).build();

Where: token for customdata is the Authentication XML generated from their platform.

Conclusion

THEOplayer partnered with KeyOS to fully pre-integrate their BuyDRM solution, saving you tons of time. This pre-integration brings along multiple advantages:

  • It's very simple to set up KeyOS BuyDRM through THEOplayer.
  • No surprises - you know that we are compatible with each other. We also regularly validate our integration, and are the first to know about changes to KeyOS.
  • It offers extra maintainability. Even if the KeyOS infrastructure changes, we attempt to be backwards compatible.

Extra resources:

  1. DRM Pre-Integration API

  2. THEOplayer Getting Started Guide

  3. KeyOS BuyDRM