Search code examples
react-nativeflutterdrmwidevineplayready

Play DRM Content with Flutter/React Native on IOS and Android


I where searching for any Solution to enable playing DRM Content on IOS and Android. I want to develop a Cross Platform Solution that can play DRM protected content, no matter if its Widevine or playready.

For Flutter there wasnt any Solution, so i switched to RN

For React Native i just found the Exoplayer to be able to play widevine but no Playready DRM Content.

Maybe someone of you guys can help me to find out, how im able to do this on both Platforms ?

Best Regards


Solution

  • To play back encrypted content protected by a particular DRM scheme, you need that DRM scheme to be supported on the device or browser.

    As a general rule the following DRM's are supported natively on device and browsers - naively means that the DRM is usually built into the OS or the browser when you purchase the device:

    • Android devices - Widevine
    • Chrome browser on a PC or MAC - Widevine
    • iOS device - FairPlay
    • Safari browser - FairPlay
    • Internet Explorer browser - PlayReady

    To allow encrypted content be played on multiple devices you need to encrypt it with the scheme for each device. In the past this has meant having to have separate streams, but DASH CENC allows a single stream to be encrypted by multiple DRM schemes - the spec is at this link:

    Unfortunately, the spec is restricted access to if you do not have access it may be worth having a look at some of the packager websites which will include information about creating CENC streams - for example:

    There is one other thing to be aware of, as traditionally iOS/FairPlay has used a different AES encryption mode than Widevine and PlayReady - it uses AES CBC mode rather than CTR mode. However, Widevine and PlayReady have recently announced support for AES CBC mode also so the nirvana of a single encrypted format that will play on all devices is now in theory possible - it will take some time for support to role out to all devices most likely, however.