Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Encrypted Media Extensions in HTML5 video

This might be off-topic, but I appeal to the gods of SO to allow this thread to exist.

I've been scouring the web using all the keyword permutations I know, to try and find a solid guide for implementing Encrypted Media Extensions in HTML5 video.

There is tons of information on what EME is, but not a practical guide on implementing it.

Have you found any practical guides on implementing an end-to-end EME pipeline, or at the very least something that points toward that?

like image 708
daniel0mullins Avatar asked Jun 06 '14 16:06

daniel0mullins


People also ask

What is EME in video?

Encrypted Media Extensions (EME) is a W3C specification for providing a communication channel between web browsers and the Content Decryption Module (CDM) software which implements digital rights management (DRM).

How do Encrypted Media Extensions work?

Encrypted Media Extensions provides an API that enables web applications to interact with content protection systems, to allow playback of encrypted audio and video. EME is designed to enable the same app and encrypted files to be used in any browser, regardless of the underlying protection system.

How does DRM in browser work?

In a nutshell, DRM ensures that video content is stored and transmitted in an encrypted form, so that only authorized users and devices can play it back.

How does content decryption module work?

A Content Decryption Module (CDM) is a proprietary piece of software embedded in a web browser that is used to decrypt encrypted (DRM) content. It works as a "black box", receiving keys and encrypted content and returning decrypted content.


1 Answers

For anyone still looking for this, there are some open source players which have EME integrated, allowing you to view the implementation approach in detail.

For example, dash.js the Dash Industry Forum reference player, supports EME and has an architecture to support multiple DRM's.

Take a look at the ProtectionModel.js file to get a feel for the high level architecture and also at the files using the KeySystem Interface in the DRM's folder, for example KeySystemWidevine.js.

The code in ProtectionController.js ties it all together so another good place to look.

When looking at the code it is worth noting that the terms DRM system and KeySystem are sometimes used interchangeably, which is quite common in the DRM world.

  • https://github.com/Dash-Industry-Forum/dash.js
like image 84
Mick Avatar answered Sep 23 '22 06:09

Mick