Pages

January 17, 2024

Widevine DRM support for HLS

 Nimble Streamer has extensive DRM support for live and VOD streams. It covers all DRM systems - Widevine, Playready and FairPlay - and multiple DRM management platforms.

Traditionally, HLS streams could only be protected using Apple FairPlay and could only be played on Apple devices.

With recent updates, HLS can now be protected using Google Widevine in addition to FairPlay.

This means that you may have just a single multi-key multi-DRM HLS stream and play it on the devices that support either FairPlay or Widevine. This practically means that this single multi-key HLS stream is protected on any modern streaming device like PC, Mac, Android, iPhone/iPad and more.

This also applies to Low Latency HLS DRM protection, no special setup is needed for that.

You don't need to have a separate MPEG-DASH stream specifically for Widevine protection now.


Multi-key HLS can be protected with Widevine DRM


Widevine HLS encryption setup

The DRM setup is specific to your DRM provider and described on Nimble Streamer DRM setup page.

In addition, you need to add this parameter to your app setting section in drm.conf file:

widevine_hls_enabled = true

Like this:

drm {
  application = live_ezdrm
  type = ezdrm
  widevine_hls_enabled = true
  user = user@yourcompany.com
  password = 12yourpassword34&*@#
}

We have EZDRM here enabled for all streams within "live_ezdrm" application. This can be any other DRM management solution.

Notice: Google Widevine Cloud License Service could not be used for encrypting HLS due to technical discrepancies.

Once you save the config file and re-start Nimble, the stream will be protected right away. You may also apply drm.conf changes by using native API call without Nimble re-start.

Widevine multi-key HLS playlist example

We have a sample DRM-protected HLS stream

https://drm-test-cf.softvelum.com/live_ezdrm/bunny/playlist.m3u8

Here's an example of an HLS playlist that has both encryptions.

#EXTM3U
#EXT-X-VERSION:7
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-TARGETDURATION:9
#EXT-X-MEDIA-SEQUENCE:703
#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://fps.ezdrm.com/;5a0XXXX4-8XX2-11ea-9XX8-040XXXXXXXXX",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"
#EXT-X-KEY:METHOD=SAMPLE-AES,KEYID=5a0XXXX4-8XX2-11ea-9XX8-040XXXXXXXXX,URI="data:text/plain;base64,AAAAP3Bz XXXXXXXXX nWSs6jyXXXXXXXXXXXXXXXXXXXXXXXXSkAEaBWV6ZHJtSOPclZsG",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",KEYFORMATVERSIONS="1",IV=0x5a08XXX485XX11XXXXX401999XXXX
#EXT-X-MAP:URI="video_1.fmp4?nimblesessionid=189205"
#EXTINF:6.666,
v_42_380062500_703.fmp4?nimblesessionid=189205
#EXTINF:2.375,
v_42_380662500_704.fmp4?nimblesessionid=189205
#EXTINF:4.583,
v_42_380876250_705.fmp4?nimblesessionid=189205
#EXTINF:8.75,
v_42_381288750_706.fmp4?nimblesessionid=189205

This element is for FairPlay:

#EXT-X-KEY:METHOD=SAMPLE-AES,URI="skd://fps.ezdrm.com/;5a0XXXX4-8XX2-11ea-9758-040XXXXXXXXX",KEYFORMAT="com.apple.streamingkeydelivery",KEYFORMATVERSIONS="1"

And this one is for Widevine:

#EXT-X-KEY:METHOD=SAMPLE-AES,KEYID=0x5a0XXXX4-8XX2-11ea-9XX8-040XXXXXXXXX,URI="data:text/plain;base64,AAAAP3Bz XXXXXXXXX nWSs6jyCfc1R0h7QAAAB8XXXXXXXSFIhHql1gEAZmSkAXXXXXXXXJtSOPclZsG",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",KEYFORMATVERSIONS="1",IV=0x5a08XXX485XX11XXXXX401999XXXX


Widevine HLS Players

You may use Shaka Player to play this stream, it fully supports this kind of Widevine-encrypted HLS. Other commercial players have that support, please refer to their documentation.

You may try playing our sample stream above using our players page. Here's an example of Widevine playback:

https://wmspanel.com/p/#player=shaka&url=https://drm-test-cf.softvelum.com/live_ezdrm/bunny/playlist.m3u8&drm_url=https%3A%2F%2Fwidevine-dash.ezdrm.com%2Fwidevine-php%2Fwidevine-foreignkey.php%3FpX%3DB03B45

Notice the License Server URL field that you'll need to use for your stream.

The FairPlay is played the same way, with its respective License Server URL and Certificate URL fields being set properly.


Related documentation

No comments:

Post a Comment

If you face any specific issue or want to ask some question to our team,
PLEASE USE OUR HELPDESK

This will give much faster and precise response.
Thank you.

Note: Only a member of this blog may post a comment.