【问题标题】:How To Integrate Widevine DRM In My Android App To Secure Videos如何在我的 Android 应用程序中集成 Widevine DRM 以保护视频
【发布时间】:2022-07-16 01:48:10
【问题描述】:

我正在构建一个 Android 应用,人们可以在其中托管视频,我希望人们能够在他们的 Android 设备上流式传输和下载受 DRM 保护的视频。

我对 Widevine 进行了大量研究,并且我知道它是 Google 对 DRM 的主要选择。

但我几乎没有找到关于如何将库集成到 Android 应用程序以及如何获取每个视频的许可证和密钥的指南。

我已经设置了应用程序的其他部分,但老实说,我不知道从哪里开始集成 Widevine。我已经检查了如何使用 exoplayer 播放视频,但我的问题是加密视频并允许人们使用 DRM 下载加密表单。

谁能帮忙?

【问题讨论】:

    标签: java android drm widevine


    【解决方案1】:

    Widevine 已经部署在 Android 设备上(几乎在所有情况下),因此您只需在您的应用中使用它。

    假设您正在播放受 DRM 保护的视频,您可能会使用 ExoPlayer。

    ExoPlayer 提供有关 DRM 的文档,包括 Widevine 集成:

    ExoPlayer 演示播放器可能更有用,其中包括带有完整源代码的 Widevine 受保护内容播放示例。播放器长这样:

    源代码可在 ExoPlayer GitHub 上的 Demos/Main 上使用或修改:https://github.com/google/ExoPlayer/tree/release-v2/demos/main

    如果您查看用于配置的 media.exolist.json,您会看到一些与 Widevine 受保护内容相关的配置 - 例如:

     "name": "Widevine DASH (MP4, H264)",
        "samples": [
          {
            "name": "HD (cenc)",
            "uri": "https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd",
            "drm_scheme": "widevine",
            "drm_license_uri": "https://proxy.uat.widevine.com/proxy?video_id=2015_tears&provider=widevine_test"
          },
    

    您可以在演示中的 PlayerActivity 中查看如何为每个 MediaItem (https://github.com/google/ExoPlayer/blob/release-v2/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java) 设置 DRM:

    MediaItem.DrmConfiguration drmConfiguration = mediaItem.localConfiguration.drmConfiguration;
          if (drmConfiguration != null) {
            if (Util.SDK_INT < 18) {
              showToast(R.string.error_drm_unsupported_before_api_18);
              finish();
              return Collections.emptyList();
            } else if (!FrameworkMediaDrm.isCryptoSchemeSupported(drmConfiguration.scheme)) {
              showToast(R.string.error_drm_unsupported_scheme);
              finish();
              return Collections.emptyList();
            }
          }
    

    在您自己的应用程序之外测试您的内容的一种快速方法是将其添加到 media.exolist.json 的列表中,或者使用您的视频清单和许可证服务器 URL 修改现有条目,然后编译并运行再次演示。

    在服务器端,为了加密和流式传输您的视频,有几个可用的开源打包程序可用于生成 HLS 或 DASH 视频流,它们将支持主要的 DRM、Widevine、PlayReady 和 FairPlay。

    对于您的情况,同样由 Google 提供的 Shaka Packager 包含有关在您的流式视频中包含 Widevine 保护的说明 - 请参阅此处:

    【讨论】:

    • 好的,谢谢...但是我该如何保护视频...我知道 Widevine 为 Netflix 和 Amazon 等大玩家提供服务。
    • 这是一个服务器端集成,或前端集成,而不是在 Android 应用程序上 - 我已经更新了答案,包括一些注释和指向带有示例的教程的指针。跨度>
    猜你喜欢
    • 2014-08-22
    • 2018-01-15
    • 1970-01-01
    • 2021-07-05
    • 2020-01-13
    • 2018-01-10
    • 2013-05-13
    • 1970-01-01
    • 2018-05-17
    相关资源
    最近更新 更多