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

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

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

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

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

也许你们中有人可以帮我找出答案,我如何才能在两个平台上做到这一点?

此致

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

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

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

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

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

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