White paper: DASH is required

If use of the multi-DRM approach enables significant cost saving on the player side then the equally revolutionary server-side technology is DASH. It merges the previously used adaptive streaming technologies into a single standard compatible across a wide range of platforms.

For Axinom customers, we always recommend a first focus on DASH using other video delivery technologies only for backward compatibility with previous-generation devices and players. Upcoming articles will go into even more depth on the use of DASH in modern players.

Read more about the benefits of DASH in the linked white paper.

Read more of this post

Setting up a simple dash.js player for multi-DRM playback

What you will learn in this post is how to set up the free DASH player “dash.js” on a web site and make it play multi-DRM protected on-demand DASH videos both on Chrome and Internet Explorer (version 11 on at least Windows 8.1) using the respective native DRM engine – Widevine on Chrome and PlayReady on IE. Since Firefox does not have a Content Decryption Module embedded, playback of protected content on Firefox is not supported.

This guide assumes you have only a simple development web server running which you can use to serve web sites. We are starting from the complete beginning and for the sake of simplicity, we are not even using any Bootstrap-like CSS/layout framework – only jQuery.

Setting up a blank web site

Download the “Classic H5BP” web site starter project from http://www.initializr.com/, unpack the downloaded zip and serve it with your HTTP server.

Integrating dash.js

The player is open source, hosted at Github: https://github.com/Dash-Industry-Forum/dash.js

Download the latest released version of the project and unpack it. The only file that is needed for this tutorial is the dash.debug.js from the dist folder. Copy it to the “js” folder in your web site project.

Open index.html and remove the paragraph that says: “Hello world! This is HTML5 Boilerplate.”

Also add the following line just above the line that loads plugins.js:

<script src="js/dash.debug.js"></script>

2015-03-31 18_47_37-C__inetpub_wwwroot_dashjs-blog_index.html - Notepad++

Now that the player code is included we can make use of that player. Let’s first add the player component on the page by replacing the line that says “Hello world! This is HTML5 Boilerplate.” with this:

<video id="videoPlayer" controls="true"></video>

Now the video player exists on the page but it is not playing anything, not to mention a protected video. We can make it play something immediately but let’s make it play a specific clear video only when a button is pressed. We will get to playing protected videos soon. So, the next step is to add a play button. Add the following line just above the <video> element:

<p>
    <button id="playButton" type="button">Play</button>
</p>

To make this button to actually respond to clicking and make the player play a video, we need to write some JavaScript. Let’s create a new file to not pollute the HTML file with logic.

Create a file main.js into the “js” folder with the following content:

$(function() {
    var context = new Dash.di.DashContext();
    var player = new MediaPlayer(context);
    player.startup();
    player.attachView(document.querySelector('#videoPlayer'));

    $('#playButton').click(function() {
        var videoUrl = 'http://level3-cdn.axprod.net/demo/manifestprot.ism/.mpd';
        player.attachSource(videoUrl);
    });
});

It is not needed to add a reference to main.js because it is already referenced by default by the Initializr boilerplate code.

The video specified as the value of videoUrl variable is multi-DRM protected (having PlayReady and Widevine signaling), provided by Axinom as a sample video. Since the player supports PlayReady out-of-the-box, you can try to play on Internet Explorer 11 on at Windows 8.1. At the start of playback, the player requests a license from a PlayReady license server the URL of which is embedded in the video container metadata.

Making the video play on Chrome

However, one more step is needed to enable protected video playback on Google Chrome. Chrome needs to know a Widevine license server URL and this does not exist in the metadata. To make the video playable on Chrome, you have to specifically set the Widevine license server URL for the player so that it would know where to make the license request. You can set the URL using the attatchProtectionData function call on the player object:

var AXINOM_DEMO_WV_LS = "http://axpr-wv-fe.cloudapp.net:8080/LicensingService";

player.attachProtectionData({"com.widevine.alpha": new MediaPlayer.vo.protection.ProtectionData(AXINOM_DEMO_WV_LS)}); 

This code uses the a sample Widevine license server provided by Axinom which can give licenses protected with a specific Key ID, encryption key and content_id. I will show you how to create such a protected video yourself in a future blog post.

Here is the full content of main.js for your reference:

$(function() {
    var AXINOM_DEMO_WV_LS = "http://axpr-wv-fe.cloudapp.net:8080/LicensingService";

    var context = new Dash.di.DashContext();
    var player = new MediaPlayer(context);
    player.startup();
    player.attachView(document.querySelector('#videoPlayer'));
    player.attachProtectionData({"com.widevine.alpha": new MediaPlayer.vo.protection.ProtectionData(AXINOM_DEMO_WV_LS)});

    $('#playButton').click(function() {
        var videoUrl = 'http://level3-cdn.axprod.net/demo/manifestprot.ism/.mpd';
        player.attachSource(videoUrl);
    });
});

Now the video should be playable also on Chrome looking like this:

playback

Troubleshooting

Video is playing in IE but not in Chrome

1. Encrypted Media Extensions may not be enabled in Chrome. On most cases, Chrome has EME enabled by default but there have been occasions when it is not. To fix, go to chrome://flags and look for the following row:chromeflags

If it is disabled for you, enable it and restart Chrome. If it does not help, look for a Chrome icon in your system tray. If it is there, right click on it and choose “Exit” and start Chrome again.

2. You may be using a broken version of Chrome. There is a workaround to still be able to view the video is to modify dash.js source code. Basically, you have to force the player to use ProtectionModel_01b. If you use a released dash.js 1.3.0, open the file js/dash.debug.js and insert the following line after row 1513 (in the mapProtectionModel function):

this.system.mapClass("protectionModel", MediaPlayer.models.ProtectionModel_01b);

The fix may be different for other versions of dash.js.

White paper: multi-DRM is required

The world of premium video solutions has changed markedly in the last few years, with ever greater standardization opening up easy access to a wide range of platforms. Together with the various platforms come the different DRM technologies native to each, posing various challenges to solutions builders who want their content to play everywhere.

To ensure that these challenges can be met cost-effectively, Axinom defines the multi-DRM approach that should be viewed as a critical component of modern multiplatform solutions. Learn more by reading the attached white paper.

View white paper: multi-DRM is required

Introduction to the multi-DRM world on the platform side

What is multi-DRM and why does it get so much attention lately? To answer this question we first have to make the definition of “platform” clear. There are many things that can be called platforms – the hardware of a device like a mobile phone of a particular manufacturer, an operating system such as Windows, a browser such as Chrome, and even software on which a specific video player runs, like Silverlight. All of these are equivalent where multi-DRM is concerned.

The various platforms usually have a DRM component embedded somewhere, either in the hardware, the operating system. The DRM component can also be part of some platform software created by a third party vendor, for example Google Chrome that incorporates a different DRM than the platform on which it is running on (e.g. Windows) but the Chrome DRM component can still be called native – native to Chrome platform.

The following list outlines some popular platforms and the respective DRM technologies they use.

Read more of this post

Qantas Q Streaming by Panasonic – a deep technical and security analysis

plane

Wireless In-Flight Entertainment is a hot and controversially discussed topic. Some see it disrupt traditional IFE business while others clearly consider it a niche technology suitable only for a small portion of the general IFE market.

As a software consulting company focusing the online media industry and playing an ever growing role in the In-Flight Entertainment space, we have taken a close look at the new wireless IFE system offered by the company who used to dominate the legacy IFE market during the last decades: Panasonic Avionics. Its Wireless IFEC solution is called “eXW”. This is the first in a series of reports where we will cover the majority of this new wireless kind of In-Flight Entertainment systems.

Panasonic’s system is currently deployed to a substantial part of Qantas’ narrow-body fleet. Qantas has invented its own name for the wireless IFE offering on their planes: it’s called “Q Streaming“. We assumed the end user’s role and flew thousands of miles across the fifth continent in order to gather all the information we needed for a thorough technical analysis. We have created a report detailing various aspects of the system from a passenger’s view with a couple of surprising results. Please contact us, if you are interested in the full report. Here is the table of contents:

Table of Contents

If you are interested in the full report, please contact us.

The two models of DRM

We often find that DRM is hard to understand for our customers who present content to end-users – it is something that is required by content owners but which provides minimal extra value to the content presenter. This means that there is an incentive to spend as little time and money as possible on DRM – ideally, it is seen as a switch you simply turn into the “on” position.

While that is a perfectly reasonable approach, it is also possible to make use of an appropriately flexible DRM platform to drive some of the entitlement-related business logic and thus save development effort. Whether a customer is interested in doing this determines which of two very different DRM models must be used in the solution.

Our SilverHD DRM platform was originally engineered to provide the maximum benefit to our customers, so we made the initial assumption that deep integration was desirable. In practice, this has only been true with around half of our customers. The current version of SilverHD DRM can cater equally well to both types of needs – separating them into a plug-and-play model and an integrated model.

This article describes the differences between the two DRM usage models and what sort of impact they have on solution development and integration. Our DRM platform uses the PlayReady technology but these models can also be roughly applied to other equivalent DRM technologies.

Read more of this post

Evaluating encoders for Live Smooth Streaming

As part of a recent project we designed the infrastructure for delivery of TV channels over the Internet as part of an over-the-top TV solution. Among the tasks we undertook was an evaluation of several encoders available on the market, during which I gained much valuable data, which I will try to share here.

This article is written primarily to help you make an informed choice when in a similar situation – I will outline the key factors that deserve special attention and outline potential issues you may encounter when looking for a suitable encoder.

In the interest of fairness – products evolve over time and what is true today might not have been true when we performed our evaluation – I will not name the encoders that I evaluated, with the exception of the best performing one.

Read more of this post

Follow

Get every new post delivered to your Inbox.