使用 MediaDrm 在 android 中解密受 Widevine DRM 保护的视频

Posted

技术标签:

【中文标题】使用 MediaDrm 在 android 中解密受 Widevine DRM 保护的视频【英文标题】:Decrypting widevine DRM protected video in android using MediaDrm 【发布时间】:2014-08-22 00:21:47 【问题描述】:

我正在尝试使用 android 的 MediaDrm API 解密受 Widevine DRm 保护的媒体文件。 但是 MediaDrm 是使用 UUId(DRM 方案的)实例化的。 Android 开发者网站说

“应用程序访问 DRM-scheme-identifying UUID,通常来自内容中的元数据,并使用此 UUID 构造能够支持内容所需 DRM 方案的 MediaDrm 对象的实例”。 (www.developer.android.com/reference/android/media/MediaDrm.html)。

所以我尝试使用 MediaExtractor.getpsshInfo() 获取 UUID,但它返回了一个空对象。 然后我尝试了 DrmManagerClient.getMetadata(uri of media content) 但这个方法也返回了 null

我在下面的 Widevine 演示 uri 上试过这个:

内容网址:http://commondatastorage.googleapis.com/wvmedia/starz_main_720p_6br_tp.wvm 许可服务器:https://license.uat.widevine.com/getlicense/widevine

虽然在使用 DrmManagerClient API 获得权限后,我可以在 Android 的本机 MediaPLayer(VideoView) 中播放视频,但我想使用 Android 的 MediaDrm API 解密媒体文件并希望获得未加密的数据,但我无法做到因为我没有得到正确的 UUID 值。 有人能指出我实现这一目标的正确方向吗?

或者有人可以帮助我访问 DRM 方案 - UUID 值吗?

谢谢

【问题讨论】:

我尝试将 google widevine 集成到 android 中,但失败了。我没有找到有关如何集成它的任何帮助或示例代码。你能指导我如何实现吗?我需要哪些信息或 ID 或访问权限来集成它?我想用你的内容 URL 测试widevine。请帮忙。 【参考方案1】:

mediaDRM 专为 EME 通用加密播放而设计。见https://developer.android.com/reference/android/media/MediaDrm.html

您列出的 Widevine 内容不是通用加密格式,因此不兼容。

【讨论】:

以上是关于使用 MediaDrm 在 android 中解密受 Widevine DRM 保护的视频的主要内容,如果未能解决你的问题,请参考以下文章

深入理解DRM——MediaDRM和MediaCrypto

Exoplayer - Widevine 和 MPEG DASH

Android MediaCodec

在 Android 中使用 RSA 算法解密数据

android中使用jni对字符串加解密实现分析

Android:使用存储在文件中的公钥解密 RSA 文本