Are you considering adding DRM to your streaming workflow? Want to save time and avoid headaches? Here are a few things that you will want to consider before diving headfirst in the shallow end of the pool.
For a more comprehensive deep dive into Creating DRM Workflows, download our whitepaper here.
1. What platforms do I need to cover?
There are many different platforms to support like PCs, Macs, iOS, Android devices, etc. Each of these platforms supports specific media formats like DASH, HLS, etc. Each of these platforms also supports specific DRM schemes like Widevine, PlayReady or FairPlay.
By answering this simple question, you immediately get answers to the following questions as well:
- What DRMs to use?
- What Media formats to use?
- What players to use?
- What encoders/packagers to use?
Let’s investigate them more closely.
2. What DRMs to use?
This depends on the platforms you wish to cover.
If you are targeting Microsoft platforms like PCs, Edge browser, Xbox game consoles, then you would need to use PlayReady DRM.
If you are thinking about Google platforms like Android, ChromeOS, Chrome, Firefox, and other browsers that are based on Chromium, then your choice is Widevine DRM.
If you are thinking about covering Apple platforms and products like Macs, iOS, Safari browsers, then your only choice is FairPlay DRM.
Below I mention some of the platforms covered by each DRM:
It is really important for you to understand what platform supports what DRM because you may end up in a situation when you are trying to playback your FairPlay protected HLS asset on Windows, and you fail.
3. What Media Formats to use?
The answer, again, will depend on the platform. Let me clarify what I mean.
Different platforms support different Media Formats and different Media Formats support different DRM types.
Let’s say you are targeting browsers for now, with no native mobile applications. You want to cover PCs and Macs which immediately tells you that you will be using PlayReady and FairPlay DRMs. If you decide to cover Chromium-based browsers or ChromeOS in addition to PCs and Macs, then you are looking into using all three types of DRM.
Considering your target browsers on those platforms, you will be using HTML5 players. Now you should ask yourself what media formats are supported by today’s HTML5 players that also support PlayReady, Widevine, and FairPlay DRMs? And the answer will be DASH, HLS, HSS/MSS, and CMAF.
Let me “table” it for your convenience:
Now, I have added HLS into PlayReady and Widevine columns, but you need to always be aware of the consequences of stepping aside from accepted standards that are:
- PlayReady: DASH, CMAF, HSS/MSS
- Widevine: DASH, CMAF
- FairPlay: HLS, CMAF
You indeed may apply PlayReady or Widevine to HLS, but the number of HTML5 players that support that mix is limited and you may end up saving some space on your CDN but reaching a minimum amount of your end-users because of a poorly planned strategy of combining the format and DRM that is most widely supported across most devices. That is if you will be able to even package your asset because not all packaging tools allow you to apply PlayReady and/or Widevine to an HLS asset.
4. What players to use?
“What platforms do you wish to cover?” - this master question pops up again.
Since DRM is standards-based, luckily, almost all widely used HTML5 players support all 3 DRMs and the most prevalent media formats like DASH, HLS, and CMAF.
If you are thinking about writing native applications, then your choices are pretty much made for you. To cover Android-powered devices you will be using ExoPlayer and to cover Apple devices, you will end up using AVPlayer.
5. What encoders/packagers to use?
If you have answered questions 1-3, you already know which platforms you need to cover and understand which DRMs and media formats you need to use. Based on this information you can choose any tool that supports your needs. You can use free tools that are not integrated with the DRM provider, in which case you may need to write some scripts to fetch the encryption keys for packaging. Or you may select a tool or a platform for which an integration already exists which will make your life easier when it will come to outputting DRM-protected files or streams.
To summarize
Start with identifying platforms you wish to cover. Answering this question will clarify DRMs you need to use. Choosing a media format, player, encoder is just a matter of choosing a product, reading its manual, and understanding what DRM it supports.
A little table for your convenience.
Try sticking to standard
- PlayRady: DASH, CMAF, Smooth Streaming
- Widevine: DASH, CMAF
- FairPlay: HLS, CMAF
If you test your asset’s playback and you receive errors from the player, stop, and go through your checklist and you may notice that you are trying to playback your DASH stream that is only protected with Widevine DRM on a Safari browser on Mac which is a no-no and will throw an error every time.