Shaka Player
Shaka Player is an open-source JavaScript library for adaptive media. It plays adaptive media formats, such as DASH and HLS, in a browser without using any plugins or Flash. Instead, the player uses the open web standards Media Source Extensions (MSE) and Encrypted Media Extensions (EME).
The general concept for Axinom DRM integration for DRM-compatible players, is outlined in the video Players document.
Integration​
You can easily integrate Shaka Player with Axinom DRM. Use the sample code and instructions below.
-
Create a video element on your HTML page by adding the following line:
<video id="videoPlayer" controls></video>
-
Add the
shaka-player.compiled.debug.js
script to the end of the HTML body.<body>
...
<script src="yourPathToDash/shaka-player.compiled.debug.js"></script>
</body>noteYou can also refer to 'https://ajax.googleapis.com/ajax/libs/shaka-player/<version>/shaka-player.compiled.debug.js'. If you want to change the version, add the path to the correct version.The below mentioned configurations are done with the Shaka player version 4.2.1.
-
Initialize the Player by adding the following line inside your loader method which is executed when you load the player.
videoElement = document.getElementById('videoPlayer');
player = new shaka.Player(videoElement); -
Install built-in polyfills to patch browser incompatibilities.
shaka.polyfill.installAll();
-
Set the protection data related to the video with the license service details as shown in below example.
protection = {
drm: {
servers: {
'com.widevine.alpha': 'https://drm-widevine-licensing.axprod.net/AcquireLicense',
},
},
}
player.configure(protection); -
Pass the token as a ’X-AxDRM-Message'` to the player.
player.getNetworkingEngine().registerRequestFilter(function (type, request) {
if (type === shaka.net.NetworkingEngine.RequestType.LICENSE) {
request.headers['X-AxDRM-Message'] = token;
}
}); -
Now, you can load the player and play the video which is integrated with DRM.
player.load(
'source url',
)
$('#shaka-player').show() -
Example code
<!DOCTYPE html>
<html>
<head>
<title>Shaka Player with Axinom DRM</title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/shaka-player@4.3.5/dist/shaka-player.compiled.min.js"></script>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/shaka-player@4.3.5/dist/controls.min.css"
/>
<video id="videoPlayer" controls></video>
<script>
videoElement = document.getElementById('videoPlayer')
player = new shaka.Player(videoElement)
shaka.polyfill.installAll()
protection = {
drm: {
servers: {
'com.widevine.alpha': 'https://drm-widevine-licensing.axprod.net/AcquireLicense',
},
},
}
player.configure(protection)
player.getNetworkingEngine().registerRequestFilter(function (type, request) {
if (type === shaka.net.NetworkingEngine.RequestType.LICENSE) {
request.headers['X-AxDRM-Message'] =
'X-AxDRM-Message token'
}
})
player.load(
'source url',
)
$('#shaka-player').show()
</script>
</body>
</html>
When integrating Axinom DRM with Shaka player, you have to specify the license service URL in the protection
section as below.
Widevine​
{
drm :{
servers: {
'com.widevine.alpha': 'https://drm-widevine-licensing.axprod.net/AcquireLicense'
}
}
}
Playready​
{
drm :{
servers: {
'com.microsoft.playready': 'https://drm-playready-licensing.axprod.net/AcquireLicense'
}
}
}
Fairplay​
For fairplay you need to specify the server certificate URL as well.
{
drm :{
servers: {
'com.apple.fps': 'https://drm-fairplay-licensing.axprod.net/AcquireLicense'
}
},
advanced: {
'com.apple.fps': {
'serverCertificateUri': <fairPlay_Certificate_Url>
}
}
}
You can try out the Shaka Player with the HTML5 VideoTestBench online tool.
Test Playback​
You can actually try out the Shaka Player from the DRM Video Playback Tool and check whether your video plays with it. This tool allows you to play the DRM-protected video as well as generate and adjust the Entitlement Message. Copy the video URL, create the JWT and choose Shaka player from the drop-down menu at the bottom. Click to get the player link and you can see whether your video plays with Shaka player.
You can find the tool here:
See also​
- Shaka demo player : https://shaka-player-demo.appspot.com/demo/#build=uncompiled
- Shaka player API documentation : https://nightly-dot-shaka-player-demo.appspot.com/docs/api/index.html