相关原创文章:
数字版权管理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。

  • netflix百度百科

  • netflix app

4.3 国内视频平台

使用DRM技术的内容提供商,一般都有两种服务器,一种提供加密片源内容,一种提供license。

​据了解目前有使用DRM技术的,应该有爱奇艺,芒果TV。

DRM在Android中相关推荐

  1. Android media 测试,如何在ANDROID中检测媒体文件是否受DRM保护?

    我尝试使用Android VideoView(媒体播放器)播放MPEG4文件 . 但它给出了以下错误 . 这是日志 . VERBOSE/MediaPlayerService(64): setDataS ...

  2. Android中如何查看内存(上)

    文章参照自:http://stackoverflow.com/questions/2298208/how-to-discover-memory-usage-of-my-application-in-a ...

  3. Android中实现为TextView添加多个可点击的文本

    这篇文章主要介绍了Android中实现为TextView添加多个可点击的文本,可实现类似Android社交软件显示点赞用户并通过用户名称进入该用户主页的功能,是非常实用的技巧,需要的朋友可以参考下.具 ...

  4. android 弹出fragment,Android中ViewPager获取当前显示的Fragment

    前言 在项目中,有时会用到在ViewPager中显示同样类型的Fragment,同时这样的Fragment的个数是动态的,但是PagerAdapter没有给我们提供getCurrentFragment ...

  5. android 读取内部存储文件格式,Android中的数据储存之文件存储

    当我们在使用各种程序时,其实际上是在和各种数据打交道,当我们聊QQ,刷微博,看新闻,其实都是在和里面的数据交互 例如在聊天时发出的消息,以及在登录时输入的账号密码,其实都是瞬时数据,那什么是瞬时数据呢 ...

  6. android中一种不支持的lua操作

    今天写了一段lua代码,在win32中正常运行,在android中运行无效. 大概是这样的: ------file1.lua----- local t = {} t.str = "this ...

  7. Android中对Log日志文件的分析[转]

    一,Bug出现了, 需要"干掉"它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只 ...

  8. 在Android中进行单元测试遇到的问题

    问题1.Cannot connect to VM  socket closed 在使用JUnit进行测试的时候,遇到这个问题.网上的解释是:使用Eclipse对Java代码进行调试,无论是远程JVM还 ...

  9. android中设置控件获得焦点 (转)

    android中,要使控件获得焦点,需要先setFocus,再requestFocus. 以Button为例:                 btn.setFocusable(true);      ...

  10. Android中怎么使图片显示

    android中经常到利用图片,利用图片时我们都是把图片放在drawable-xxx目录下,因为这里就是存储图片的地方,xxx不用理他,就是关于分辨率而已. 楼主在学习android的时候一直尝试把图 ...

最新文章

  1. Flutter开发之SnackBar提示组件-4(43)
  2. Spring Cloud Alibaba 发布第一个正式版本,顺利完成孵化!
  3. 工作318:uni-切换tabber修改状态修饰
  4. Pandas/networkx图分析简单入门 1
  5. 局域网聊天软件的设计思路
  6. 优达学城深度学习之七——TensorFlow卷积神经网络
  7. weex npm 报错 cb() never called!
  8. 随笔1:音频编解码科学家
  9. Android屏幕适配之--通过修改系统的屏幕像素比来实现屏幕的适配效果
  10. Android端公司通讯录开发与实现(二)
  11. Round14—最小生成树
  12. Python模拟登陆古诗文网手动输入验证码显示验证码错误
  13. sql 脚本 昨天的日期获取,今天的前一天的数据获取, 前两个月的今天
  14. 一文详解结构光发展简史
  15. HDU 5869 Different GCD Subarray Query (数学gcd+树状数组离线查询)
  16. 高仿精仿微信客户端源码完整版
  17. 在阿里云的服务器linux下安装mysql和卸载mysql
  18. python 打印日历
  19. Win11自带屏幕录制怎么打开?Win11自带录屏的使用方法
  20. unity3d中通过代码实现创建一堵墙的功能

热门文章

  1. 【CVPR2022】论文列表与下载——PartThree
  2. 利用PS将.jpg文件转换为.pdf文件
  3. Android基础Activity篇——创建一个活动(Activity)
  4. 服务器电脑怎么样装系统,如何给服务器安装系统,是不是和PC机一样安装?
  5. PLC控制系统如何抵抗干扰
  6. 杂谈:中国互联网早已经被群雄割据各自为王了
  7. 关于word粘贴图片显示不全的解决办法
  8. dw cs5 html,Dreamweaver CS5-HTML简介
  9. “QQ通讯组件”代码详解。
  10. 固定效应模型VS随机效应模型