I have been trying to encrypt media(Video and audio content) from a nodejs server to a client like android or iOS. I heard of DRM but could not get a reliable implementation of DRM.

I wanted to make my own implementation of protecting my content, But am not sure issues i would have with my implementation.


Clients like android would first get authenticated from my server, then my server would pass a token to the android client, then this android client would request for the protected media with some request like


Where id is the video content id and the token in this case is like the key, if the client doesn't have a valid token then the data will not be given to client.

QUESTION: Will this implementation work, can it protect my content from unauthorised clients, what are some of the drawbacks of using this?

  • Anyone can mimic your client, including the authentication phase, so they can easily get to the media. A DRM system is probably going to get you the best results, but even they aren't foolproof. – Steve Apr 26 '17 at 21:53
  • 2
    sadly, it's difficult and expensive to use well-supported DRM that plays back on common platforms. DRM is basically for the big media companies, not for private consumers. – dandavis Apr 26 '17 at 22:27
  • What do you mean by "unauthorised clients"? Do you mean other apps than the one you provide? – Anders Apr 27 '17 at 12:27

Two main competing DRMs are PlayReady (Microsoft) and Widevine (Google), but you won't find any specification. What you can do, just to start understand how it works. Read HDCP2 specification, it's open to public. It's not DRM, but content protection. Then you'll get some ideas. Also read https://w3c.github.io/encrypted-media/ see a block diagram. It's not DRM, but explains how DRMs are used with a common framework.

Not the answer you're looking for? Browse other questions tagged or ask your own question.