如何在 ExoPlayer 2 中下载 ClearKey 加密视频

How to download ClearKey Encrypted Video in ExoPlayer 2

我有一个 .MPD 文件,该文件通过 ClearKey DRM 方案 加密。我可以通过互联网连接在 Exoplayer2 中播放此文件。 Exoplayer2 正在使用 LocalMediaDrmCallback 许可 .MPD 文件

现在,我正在尝试离线下载此视频,然后在 Exoplayer2(没有互联网连接)中播放该离线视频。

到目前为止,我已经尝试使用 DashDownloadHelper.MPD 下载视频文件。请指导我如何在下载文件时提供许可信息。

您可以像普通 .MPD 文件一样简单地下载内容并通过两种方式进行许可,即

  • 使用 HttpMediaDrmCallback 播放视频时在线
 HttpDataSource.Factory licenseDataSourceFactory = CinemaApplication.getAppInstance().buildHttpDataSourceFactory();
            HttpMediaDrmCallback httpMediaDrmCallback =
                    new HttpMediaDrmCallback(licenseUrl, licenseDataSourceFactory);
            if (keyRequestPropertiesArray != null) {
                for (int i = 0; i < keyRequestPropertiesArray.length - 1; i += 2) {
                    httpMediaDrmCallback.setKeyRequestProperty(keyRequestPropertiesArray[i],
                            keyRequestPropertiesArray[i + 1]);
                }
            }
  • 通过使用 LocalMediaDrmCallback

    drmCallback = new LocalMediaDrmCallback(PlayerActivity.KEY_JSON.getBytes());

使用上面的 drmCallback,创建 DefaultDrmSessionManager 的实例

releaseMediaDrm();
mediaDrm = FrameworkMediaDrm.newInstance(uuid);
DefaultDrmSessionManager<FrameworkMediaCrypto> drmSessionManager = new DefaultDrmSessionManager<>(uuid, mediaDrm, drmCallback, null, false);