1. 前言
Playready是微软开发的媒体文件保护技术,包括加密,输出的保护和数字版权管理(DRM)。Playready是目前应用较为广泛的DRM技术之一。
Playready所开发的产品有:
-
PlayReady Server SDK:
用于服务器开发,实现内容包装、许可证分发、域管理和计量服务等。
-
PlayReady PC SDK:
用于个人PC端的软件开发,实现PC端的许可证管理、在设备间传输保护内容、播放内容等。
-
PlayReady Client SDK for Android/iOS:
用于开发Android/iOS移动设备端的应用程序,实现播放受PlayReady 保护的数字内容。
-
PlayReady Porting Kit:
用于开发人员为不同设备创建Playready系统架构,从而支持Playready数字内容保护的相关功能(如许可证获取、内容解密)。
Playready的安全等级有三种:
-
SL150:
开发目的没有提供保护;客户端可以使用任何形式实现;基于任何Playready porting kit版本开发。
-
SL2000:
可通过硬件方式提供保护,也可以不适用硬件保护;客户端可以是一个软件应用也可以是一个硬件设备;是否采用TEE保护是可选的;基于任何Playready porting kit版本开发。
-
SL3000:
通过硬件方式提供保护;客户端必须是一个设备并采用TEE;同时必须遵从Compliance Rules和Robustness Rules。此方案提供较高的安全性。
具体内容可查看playready官网
2. 架构
2.1 Android中架构
在Android中主要使用两种Level,SL2000和SL3000。下面基于AndroidQ给出架构图。由于各个厂商的差异,下图中playready service的实现方法会有所不同。
SL2000:
SL3000:
2.2 在Linux中架构
暂无
2.3 在IOS中架构
暂无
2.4 在Windows中结构
暂无
3. 移植
microsoft提供的源码并没有适配到各个平台,需要根据各自的平台去移植适配
3.1 在Android中移植
基于SL2000相对SL3000简单,所以先移植SL2000。
SL2000:
- 获取源码(向microsoft获取)
- 参考DRM步骤进行配置
- 增加playready的plugin代码,这里给出一个范例:
playready-plugin-for-android-specification
github: https://github.com/MicrosoftDocs/PlayReady/tree/live
-
调试播放通路,mediacodec(mediaplayer一般不使用)
-
使用exoplayer等播放器进行测试
SL3000:
SL3000的原理,简单的归纳就是将解密部分的代码移植到secure os
上进行,这就需要tee模块
,通过各种ta
实现,通过命令发送到secure os
中运行。同时,要适配好secure os
里的一些规则。
移植完后,需要进行各种测试。
3.2 在Linux中移植
暂无
3.3 在IOS中移植
暂无
3.4 在windows中移植
暂无
4. 应用
- 这里提供一个网页test player
- google认证测试GMS
- netflix, exoplayer等播放器
- 盒子上一些vip片源
- 片源商,HBO等
- xbox