在 IOS 和 Android 上使用 Flutter/React Native 播放 DRM 内容

LIS*_*ISN 4 drm playready widevine react-native flutter

我在寻找任何解决方案以在 IOS 和 Android 上播放 DRM 内容。我想开发一个跨平台解决方案,可以播放受 DRM 保护的内容,无论是 Widevine 还是 playready。

对于 Flutter 没有任何解决方案,所以我切换到 RN

对于 React Native,我刚刚发现 Exoplayer 能够播放 Widevine 但没有 Playready DRM 内容。

也许你们中的某些人可以帮我找出来,我怎么能在两个平台上做到这一点?

此致

Mic*_*ick 6

要播放受特定 DRM 方案保护的加密内容,您需要设备或浏览器支持该 DRM 方案。

作为一般规则,设备和浏览器本机支持以下 DRM - 天真地意味着 DRM 通常在您购买设备时内置于操作系统或浏览器中:

  • Android 设备 - Widevine
  • PC 或 MAC 上的 Chrome 浏览器 - Widevine
  • iOS 设备 - FairPlay
  • Safari 浏览器 - FairPlay
  • Internet Explorer 浏览器 - PlayReady

要允许在多个设备上播放加密内容,您需要使用每个设备的方案对其进行加密。过去,这意味着必须拥有单独的流,但 DASH CENC 允许通过多个 DRM 方案加密单个流 - 规范位于此链接:

不幸的是,如果您没有访问权限,则该规范的访问权限受到限制,可能值得查看一些打包网站,其中包含有关创建 CENC 流的信息 - 例如:

还有一件事需要注意,因为传统上 iOS/FairPlay 使用了与 Widevine 和 PlayReady 不同的 AES 加密模式 - 它使用 AES CBC 模式而不是 CTR 模式。然而,Widevine 和 PlayReady 最近也宣布支持 AES CBC 模式,因此理论上可以在所有设备上播放的单一加密格式的必杀技 - 最有可能需要一些时间来支持所有设备,然而。