一、概述
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文章
2005瀏覽量
74954 -
加密
+關注
關注
0文章
320瀏覽量
24698 -
DRM
+關注
關注
0文章
48瀏覽量
15610
原文標題:【HarmonyOS-媒體技術-DRM Kit】數字版權保護開發指南
文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
DRM框架里的fbdev兼容邏輯介紹
RK3399 DRM使用方法介紹
基于DRM 技術的IPTV版權保護模型研究
HDCP版權保護技術解析
結合可視密碼和數字水印的圖片版權保護方案
如何在Android下實現DRM以及與其適配的Secure Video Path的要點
DRM Kit數字版權保護服務介紹
評論