Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | 17-Mar-2025 | - | ||||
figures/ | H | 17-Mar-2025 | - | |||
frameworks/ | H | 17-Mar-2025 | - | 12,203 | 10,297 | |
interfaces/ | H | 17-Mar-2025 | - | 2,694 | 1,291 | |
sa_profile/ | H | 17-Mar-2025 | - | 32 | 29 | |
services/ | H | 17-Mar-2025 | - | 8,637 | 6,948 | |
BUILD.gn | H A D | 17-Mar-2025 | 887 | 24 | 22 | |
LICENSE | H A D | 17-Mar-2025 | 11.3 KiB | 202 | 169 | |
README_zh.md | H A D | 17-Mar-2025 | 4.7 KiB | 97 | 89 | |
bundle.json | H A D | 17-Mar-2025 | 3.9 KiB | 114 | 112 |
README_zh.md
1# DRM框架组件 2## 简介 3DRM(Digital Rights Management)框架组件支持音视频媒体业务数字版权管理功能的开发。开发者可以调用系统提供的DRM插件,完成DRM证书管理、DRM许可证管理等功能,支持DRM加密媒体数据的解密,实现DRM节目授权和解密播放。 4 5DRM框架组件提供以下功能: 6* DRM证书管理:生成证书请求、设置证书响应,实现对证书Provision(下载)功能; 7* DRM许可证管理:生成许可证请求、设置许可证响应,同时实现对许可证的离线管理等功能; 8* DRM节目授权:支持底层DRM插件根据许可证对DRM节目授权; 9* DRM节目解密:支持媒体播放功能的解密调用,实现对DRM节目的解密和播放。 10 11**图 1** DRM框架组件架构图<a name=""></a> 12 13 14## 模块介绍 15 16| 模块名称 | 功能 | 17| ------- | ----| 18| MediaKeySystemFactoryClient | 对外提供Drm API接口,调用MediaKeySystemFactoryService,用于判断对DRM方案的支持及创建MediaKeySystem实例等。 | 19| MediaKeySystemFactoryService | 通过MediaKeySystemFactory HDI调用底层插件,提供判断对DRM方案的支持及创建MediaKeySystem实例的功能。 | 20| MediaKeySystemClient | 对外提供MediaKeySystem API接口,调用MediaKeySystemService,用于DRM证书Provision(下载)、创建MediaKeySession、获取/设置属性等。 | 21| MediaKeySystemService | 通过MediaKeySystem HDI调用底层插件,提供DRM证书Provision(下载)、创建MediaKeySession、获取/设置属性等功能。| 22| MediaKeySessionClient | 对外提供MediaKeySession API接口,调用MediaKeySessionService,用于生成许可证请求、设置许可证响应及许可证管理等。 | 23| MediaKeySessionService | 通过MediaKeySession HDI调用底层插件,提供生成许可证请求、设置许可证响应及许可证管理等功能。 | 24| MediaDecryptModuleClient | 调用MediaDecryptModuleService,为媒体组件提供媒体数据解密功能。| 25| MediaDecryptModuleService | 通过MediaDecryptModule HDI调用底层插件,提供解密功能。| 26 27## 目录 28``` 29/foundation/multimedia/drm_framework # DRM框架组件业务代码 30├── frameworks # 框架代码 31│ ├── native # 内部接口实现 32│ │ └── drm # DRM框架实现 33│ └── js # 外部接口实现 34│ └── drm_napi # DRM NAPI实现 35├── interfaces # 接口代码 36│ ├── inner_api # 内部接口 37│ └── kits # 外部接口 38├── BUILD.gn # 构建文件 39├── bundle.json # 部件描述文件 40├── sa_profile # 服务配置文件 41└── services # 服务代码 42 ├── drm_service # DRM服务实现 43 ├── etc # DRM服务配置 44 └── utils # 工具 45``` 46## 编译 47~~~shell 48./build.sh --product-name {product name} --ccache --build-target drm_framework 49~~~ 50{product_name}为当前支持的平台,比如rk3568。 51## 使用说明 52可参考以下示例: 53 541.引入drm模块 55~~~js 56import drm from '@ohos.multimedia.drm'; 57~~~ 582.判断DRM框架是否支持指定的DRM方案, 示例以'com.clearplay.drm'为例。 59~~~js 60var isSupported = drm.isMediaKeySystemSupported('com.clearplay.drm'); 61~~~ 623.创建MediaKeySystem实例, 63~~~js 64var keySystem = drm.createMediaKeySystem('com.clearplay.drm'); 65~~~ 664.如无本地DRM证书,需完成证书下载。 67~~~js 68// 生成证书请求 69var drmRequest = keySystem.generateKeySystemRequest(); 70// 获取证书响应 71var response = ... 72// 处理证书响应 73keySystem.processKeySystemResponse(response); 74~~~ 755.创建MediaKeySession示例,传入安全等级。 76~~~js 77var keySession = keySystem.createKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO); 78~~~ 796.生成许可证请求。 80~~~js 81var mediaKeyType:number = 1; // 在线申请 82var initData = ...; 83keySession.generateMediaKeyRequest('video/avc', initData, mediaKeyType); 84~~~ 857.向DRM服务端发送许可证请求,获取许可证响应,并将许可证响应设置到keySession中。 86~~~js 87keySession.processMediaKeyResponse(mediaKeyResponse); 88~~~ 898.获取SVP(Secure Video Path,安全视频通路)属性。 90~~~js 91var svp:boolean = keySession.requireSecureDecoderModule('video/mp4'); 92~~~ 939.将keySession与SVP属性设置到媒体组件中,以实现解密播放。 94 95## 相关仓 96[multimedia\_drm\_framework](https://gitee.com/openharmony/multimedia_drm_framework) 97