我正在构建一个android应用程序,人们可以在其中托管视频,我希望人们能够在他们的android设备上播放和下载DRM保护视频。
我对widevine做了很多研究,我知道它是google在DRM方面的主要选择。
但在如何将库集成到android应用程序中,以及如何获取每个视频的许可证和密钥方面,我几乎没有找到什么指导。
我已经设置了应用程序的其他部分,但老实说,我不知道从哪里开始集成widevine。我已经检查了如何使用系外播放器播放视频,但我的问题是如何加密视频并允许人们使用DRM下载加密表单。
有人能帮忙吗?
发布于 2022-05-27 12:56:31
Widevine已经部署在Android设备上(几乎在所有情况下),所以您只需在应用程序中使用它即可。
假设您正在播放DRM受保护的视频,您可能会使用ExoPlayer。
ExoPlayer提供了关于DRM的文档,包括宽带集成:
可能更有用的是ExoPlayer演示播放器,它包含了使用完整源代码的宽保护内容回放的示例。玩家看起来:
源代码可在Demos/Main: ExoPlayer : GitHub上使用或修改
如果您查看用于配置的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中看到DRM是如何为每个MediaItem (https://github.com/google/ExoPlayer/blob/release-v2/demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java)设置的:
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包括了在您的流媒体视频中包含宽带保护的说明--请参见以下内容:
https://stackoverflow.com/questions/72350882
复制相似问题