如何在 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);
我有一个 .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);