一、概述
DRM Kit (Digital Rights Management Kit,数字版权保护服务)提供了DRM加密节目授权解密的功能,包括DRM插件管理、DRM证书管理、DRM许可证管理、DRM节目授权、DRM节目解密等功能,可实现DRM解决方案的集成、DRM解决方案的证书下载、节目的授权及解密。

核心功能

二、DRM Kit 的核心亮点
支持许可证及解密会话管理
占用系统资源少(线程、内存),支持 pipeline 拼装、插件化扩展(source/demuxer/codec)。
支持安全视频通路
支持安全视频通路,实现安全解密、安全解码、安全渲染、安全输出等。
三、DRM 工作流程

工作流程主要包括:
1. 生成获取mediaKeySystem设备证书的请求。
2. 处理获得的设备证书请求的响应。
3. 生成媒体密钥请求。
4. 处理媒体密钥响应。
5.将MediaKeySession设置到Media Kit或AVCodec Kit,用于支持DRM节目解密。
6. 采用AVCodec Kit时,可以设置视音频数据帧的cencinfo,并设置到AVBuffer中,在调用PushInputBuffer的时候实现视音频数据帧的解密、解码。
四、开发示例
1. 创建MediaKeySystem实例
MediaKeySystem *mediaKeySystem =nullptr;
ret =OH_MediaKeySystem_Create("com.wiseplay.drm", &mediaKeySystem);
if(ret != DRM_ERR_OK || mediaKeySystem ==nullptr) {
printf("OH_MediaKeySystem_Create failed.");
}
2. 创建MediaKeySession实例
MediaKeySystem *mediaKeySystem =nullptr;
ret =OH_MediaKeySystem_Create("com.wiseplay.drm", &mediaKeySystem);
if(ret != DRM_ERR_OK || mediaKeySystem ==nullptr) {
printf("OH_MediaKeySystem_Create failed.");
}
3. 生成媒体密钥请求与处理媒体密钥响应
#defineMAX_DRM_MEDIA_KEY_RESPONSE_BUF_SIZE 24576// 24576: (2 * 12 * 1024) DRM_MediaKeyRequest mediaKeyRequest; DRM_MediaKeyRequestInfo info; // initData对应码流中的pssh数据,请按实际数据填入。 unsignedcharinitData[512] = {0x00}; memset(&info,0,sizeof(DRM_MediaKeyRequestInfo)); info.initDataLen =sizeof(initData); info.type = MEDIA_KEY_TYPE_ONLINE;// MEDIA_KEY_TYPE_ONLINE: 在线媒体密钥请求类型; MEDIA_KEY_TYPE_OFFLINE: 离线媒体密钥请求类型。 if(sizeof("video/mp4") <= sizeof(info.mimeType)) { memcpy(info.mimeType, "video/mp4", sizeof("video/mp4")); } if (info.initDataLen <= sizeof(info.initData)) { memcpy(info.initData, initData, info.initDataLen); } if (sizeof("optionalDataName") <= sizeof(info.optionName[0])) { memcpy(info.optionName[0], "optionalDataName", sizeof("optionalDataName")); } if (sizeof("optionalDataValue") <= sizeof(info.optionData[0])) { memcpy(info.optionData[0], "optionalDataValue", sizeof("optionalDataValue")); } info.optionsCount = 1; ret = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest); if (ret != DRM_ERR_OK) { printf("OH_MediaKeySession_GenerateMediaKeyRequest failed."); } /* 应用通过网络请求DRM服务,获取媒体密钥响应mediaKeyResponse,将响应传到OH_MediaKeySession_ProcessMediaKeyResponse, 若是离线媒体密钥响应处理,则返回离线媒体密钥标识mediaKeyId,请根据实际的数据和长度传入。 */ unsigned char mediaKeyId[128] = {0x00}; int32_t mediaKeyIdLen = 128; // 媒体密钥响应长度最大为MAX_DRM_MEDIA_KEY_RESPONSE_BUF_SIZE,请按实际数据输入。 unsigned char mediaKeyResponse[MAX_DRM_MEDIA_KEY_RESPONSE_BUF_SIZE] = {0x00}; int32_t mediaKeyResponseLen = MAX_DRM_MEDIA_KEY_RESPONSE_BUF_SIZE; ret = OH_MediaKeySession_ProcessMediaKeyResponse(mediaKeySession, mediaKeyResponse, mediaKeyResponseLen, mediaKeyId, &mediaKeyIdLen); if (ret != DRM_ERR_OK) { printf("OH_MediaKeySession_ProcessMediaKeyResponse failed."); }
4. 销毁MediaKeySession实例
ret = OH_MediaKeySession_Destroy(mediaKeySession);
if(ret != DRM_ERR_OK) {
printf("OH_MediaKeySession_Destroy failed.");
}
5. 销毁MediaKeySystem实例
ret = OH_MediaKeySystem_Destroy(mediaKeySystem);
if(ret != DRM_ERR_OK) {
printf("OH_MediaKeySystem_Destroy failed.");
}
5、参考资料
DRM Kit 官方文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/drm-kit
基于AVPlayer播放DRM节目(ArkTS):
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/drm-avplayer-arkts-integration
基于AVCodec播放DRM节目(C/C++)
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/drm-avcodec-integration
6、结语
DRM Kit 提供了DRM加密节目授权解密的功能,保护版权所有者的权利,防止未经授权的复制和传播。
-
视频
+关注
关注
6文章
1999浏览量
74638 -
加密
+关注
关注
0文章
319浏览量
24618 -
DRM
+关注
关注
0文章
48浏览量
15566
原文标题:【HarmonyOS-媒体技术-DRM Kit】数字版权保护开发指南
文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
RK3399 DRM使用方法介绍
基于DRM 技术的IPTV版权保护模型研究
HDCP版权保护技术解析
结合可视密码和数字水印的图片版权保护方案
区块链技术:版权保护最佳“武器”
如何在Android下实现DRM以及与其适配的Secure Video Path的要点

DRM Kit数字版权保护服务介绍
评论