MediaDRM 中文翻译

最近需要做在Android中做DRM相关内容,简单研究了一下MediaDRM文档,翻译如下;个人水平有限,有错误的地方欢迎指正:

MediaDRM extends  Object

类概述:

MediaDRM结合MediaCrypto可以用来获取keys来解密加密的媒体流。MediaDRM的API设计来支持ISO/ICE 23001-7:Common Encryption标准的,但是也可以用来解决其他的加密方案。

加密的内容是通过加密的服务器来提供的保存在内容库里,加密的内容从内容服务器以流的形式下载到客户端的服务器中。观看内容的许可证从许可证服务器获取。

MediaDrm Overview diagram

 keys是通过key请求向服务器来获取的。key的响应分发到客户端的app中,app把key的响应提供到MediaDRM的API。

还可能需要一个额外的供应服务器将设备唯一凭证分发给该设备。

执行与相关多个设备可能同时播放的需求可以通过密钥更新,或者使用安全的停止方法。

下面的时序图展示了在播放加密内容时类之间的交互:

MediaDrm Overview diagram

app首先创建MediaExtractor类和MediaCodec类。它接收DRM方案标识:UUID,一般是内容里的metadata信息,然后用这个UUID创建一个MediaDRM的实例,这个实例能够支持内容所需求的DRM方案。加密方案被分配16字节的UUID。isCryptoSchemeSupported(UUID) 方法可以用来检查DRM方案该设备支不支持。

app调用openSession()来生成一个sessionID,作为后续交互中的唯一的session标识。app然后用MediaDRM对象来获取一个key的请求信息,并把它发给许可证书服务器,然后得到服务器的响应之后,把结果发给MediaDRM。

一旦app有了sessionID,他就能通过SessionID和UUID来创建一个MediaCrypto类。MediaCrypto类会在MediaCodec的configure(MediaFormat, Surface, MediaCrypto, int)方法中来注册,从而使codec能够解密内容。

当APP创建了MediaCodec,MediaExtractor,MediaCrypto类,它就会从extractor中提取samples,并以队列的形式送到decoder中。对于加密内容来说,从extractor中返回来的samples依然是加密的,它们只有在分发给decoder的时候才解密。

当一个MediaDRM中的方法被插件或者硬件安全环境调用时发生了不可恢复的错误时,MediaDRM会抛出MediaDrm.MediaDrmStateExceptionMediaDrm.MediaDrmStateException继承自IllegalStateException,提供了开发人员可以具体定位的具体字符串信息。

在MediaServer进程crash或者restart的时候,如果MediaDRM还是active状态,那么就会抛出MediaDrmResetException异常。为了恢复异常,app必须是放掉旧的MediaDRM,创建一个新的对象。

因为MediaDrm.MediaDrmStateException和MediaDrmResetException异常都是继承自IllegalStateException,因此如果要单独处理的话,应该要在比IllegalStateException要早的catch语句中。

回调:

app应该在视频播放的过程中注册信息事件以被通知key的信息更新。这种事件的注册通过如下方法:setOnEventListener(MediaDrm.OnEventListener)。为了接收与该listener相关的回调,app应该在其单独运行的的loop方法中创建MediaDRM对象。(默认情况下,主UI线程有一个loop程序在运行)

摘要:

详细的类的摘要,常量,方法,具体可参考如下的API:

MediaDRM官网详细介绍

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值