相关原创文章:
数字版权管理DRM
DRM在Android中(2)——HAL
DRM-widevine 总结
DRM-Playready总结
ExoPlayer+Shaka-packager播放自制DRM视频
1. 前言
目前主流的DRM技术有Widevine、Playready、Marlin、Verimatrix等。DRM技术的实现方式和与Android的对接方式都各不相同。
在实现方式上分有不同的安全级别,低安全级的实现方案一般没有使用到Secure OS,DRM操作在Normal World中完成。高安全级的实现方案则采用了Secure OS,将DRM操作放到Secure World当中进行,保证DRM操作的安全性。例如,widevine的L3级别是不需要secure os, 而L1级别需要使用secure os;playready sl2000不需要secure os, 而sl3000需要secure os。
在与Android的对接方式上,有的技术方案沿用Android DRM Framework,与之对接实现DRM管理,有的则摒弃Android DRM Framework,提供自己的上层调用API,对接方式较为自由。在对接Android DRM Framework架构上,由于Android的升级,在Android O版本后开始使用DRM HAL方式,当然也兼容之前的passthrough形式。而HAL发展到当前的AndroidQ已到了drm hal1.2了。
2. 框架
下面主要讲述Android标准的DRM架构(基于AndroidQ)。
Android的官方说明在这里:DRM
对于硬件抽象层的图,增加底层硬件的说明:
其实对其框架进行概括,可以归纳为如下图:
当然,在实际使用上,会涉及到需要细节,从APP应用的调用,到framework,到drm hal,到drm 各插件,到播控流程,到硬件,到解密,到解码,到buffer的控制等等,很多细节都需要掌握。当然,对每个插件的具体运作,又是每个解密系统的各自特色,需要使用者对其有充分了解。如果需要对接高安全级别的,那么又需要对各个硬件的知识,android, linux 内核的各种配置有所了解。
因此,如果需要在项目中对接DRM模块,几乎需要把整个Android系统(包括linux 内核),从顶层到底层整条通路过一遍。
3. 插件与开发
如果想要知道android 设备支持了哪些DRM 插件,可以使用DRM Info来查询。如图:
在app端开发,可以参考开源项目Exoplayer。
对接插件,需要跟相应的插件提供商进行了解与购买。列出几个官方渠道:
- Widevine:https://www.widevine.com/
- playready:https://www.microsoft.com/playready/
- marlin:http://www.marlin-community.com/
插件的对接类图如图所示:
博文为ganqiuye原创,转载请附上原文出处链接和本声明。
4. 应用
4.1 GMS测试
对一些需要过GMS认证的android产品来说,这个drm的测试是必不可少的,而测试的drm插件会测试到google的clearkey和widevine。
其中clearkey的代码位于frameworks/av/drm/mediadrm/plugins
。
而widevine一般在发布的sdk中是以库的形式给出,源码需要向google获取,经调试后整合到sdk中。
GMS相关测试有:
-
GTS: GtsMediaTestCases 、GtsExoPlayerTestCases、GtsYouTubeTestCases
-
vts: VtsHalDrmV1_1Target
-
cts:
4.2 netflix
通过netflix可以播放一些版权视频,但需要注册缴费。
netflix主要是走widevine进行数字版权控制,但通过反编译其app,可以看见也有使用playready。走的播放框架是exoplayer。
4.3 国内视频平台
使用DRM技术的内容提供商,一般都有两种服务器,一种提供加密片源内容,一种提供license。
据了解目前有使用DRM技术的,应该有爱奇艺,芒果TV。