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 保护的说明 - 请参阅此处: