Files
gezhe 32198b8ed5 异步接口开发
Signed-off-by: gezhe <gezhe1@huawei.com>
2024-02-07 10:32:20 +08:00

4.7 KiB
Raw Permalink Blame History

DRM框架组件

简介

DRMDigital Rights Management)框架组件支持音视频媒体业务数字版权管理功能的开发。开发者可以调用系统提供的DRM插件,完成DRM证书管理、DRM许可证管理等功能,支持DRM加密媒体数据的解密,实现DRM节目授权和解密播放。

DRM框架组件提供以下功能:

  • DRM证书管理:生成证书请求、设置证书响应,实现对证书Provision(下载)功能;
  • DRM许可证管理:生成许可证请求、设置许可证响应,同时实现对许可证的离线管理等功能;
  • DRM节目授权:支持底层DRM插件根据许可证对DRM节目授权;
  • DRM节目解密:支持媒体播放功能的解密调用,实现对DRM节目的解密和播放。

图 1 DRM框架组件架构图

模块介绍

模块名称 功能
MediaKeySystemFactoryClient 对外提供Drm API接口,调用MediaKeySystemFactoryService,用于判断对DRM方案的支持及创建MediaKeySystem实例等。
MediaKeySystemFactoryService 通过MediaKeySystemFactory HDI调用底层插件,提供判断对DRM方案的支持及创建MediaKeySystem实例的功能。
MediaKeySystemClient 对外提供MediaKeySystem API接口,调用MediaKeySystemService,用于DRM证书Provision(下载)、创建MediaKeySession、获取/设置属性等。
MediaKeySystemService 通过MediaKeySystem HDI调用底层插件,提供DRM证书Provision(下载)、创建MediaKeySession、获取/设置属性等功能。
MediaKeySessionClient 对外提供MediaKeySession API接口,调用MediaKeySessionService,用于生成许可证请求、设置许可证响应及许可证管理等。
MediaKeySessionService 通过MediaKeySession HDI调用底层插件,提供生成许可证请求、设置许可证响应及许可证管理等功能。
MediaDecryptModuleClient 调用MediaDecryptModuleService,为媒体组件提供媒体数据解密功能。
MediaDecryptModuleService 通过MediaDecryptModule HDI调用底层插件,提供解密功能。

目录

/foundation/multimedia/drm_framework     # DRM框架组件业务代码
├── frameworks                           # 框架代码
│   ├── native                           # 内部接口实现
│   │   └── drm                          # DRM框架实现
│   └── js                               # 外部接口实现
│       └── drm_napi                     # DRM NAPI实现
├── interfaces                           # 接口代码
│   ├── inner_api                        # 内部接口
│   └── kits                             # 外部接口
├── BUILD.gn                             # 构建文件
├── bundle.json                          # 部件描述文件
├── sa_profile                           # 服务配置文件
└── services                             # 服务代码
    ├── drm_service                      # DRM服务实现
    ├── etc                              # DRM服务配置
    └── utils                            # 工具

编译

./build.sh --product-name {product name} --ccache --build-target drm_framework

{product_name}为当前支持的平台,比如rk3568。

使用说明

可参考以下示例:

1.引入drm模块

import drm from  '@ohos.multimedia.drm';

2.判断DRM框架是否支持指定的DRM方案, 示例以'com.clearplay.drm'为例。

var isSupported = drm.isMediaKeySystemSupported('com.clearplay.drm');

3.创建MediaKeySystem实例,

var keySystem = drm.createMediaKeySystem('com.clearplay.drm');

4.如无本地DRM证书,需完成证书下载。

// 生成证书请求
var drmRequest = keySystem.generateKeySystemRequest();
// 获取证书响应
var response = ...
// 处理证书响应
keySystem.processKeySystemResponse(response);

5.创建MediaKeySession示例,传入安全等级。

var keySession = keySystem.createKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);

6.生成许可证请求。

var mediaKeyType:number = 1; // 在线申请
var initData = ...;
keySession.generateMediaKeyRequest('video/avc', initData, mediaKeyType);

7.向DRM服务端发送许可证请求,获取许可证响应,并将许可证响应设置到keySession中。

keySession.processMediaKeyResponse(mediaKeyResponse);

8.获取SVP(Secure Video Path,安全视频通路)属性。

var svp:boolean = keySession.requireSecureDecoderModule('video/mp4');

9.将keySession与SVP属性设置到媒体组件中,以实现解密播放。

相关仓

multimedia_drm_framework