Skip to main content
Version: 9.12.0

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