一、概述
DRM Kit (Digital Rights Management Kit,數(shù)字版權(quán)保護服務(wù))提供了DRM加密節(jié)目授權(quán)解密的功能,包括DRM插件管理、DRM證書管理、DRM許可證管理、DRM節(jié)目授權(quán)、DRM節(jié)目解密等功能,可實現(xiàn)DRM解決方案的集成、DRM解決方案的證書下載、節(jié)目的授權(quán)及解密。
核心功能
二、DRM Kit 的核心亮點
支持許可證及解密會話管理
占用系統(tǒng)資源少(線程、內(nèi)存),支持 pipeline 拼裝、插件化擴展(source/demuxer/codec)。
支持安全視頻通路
支持安全視頻通路,實現(xiàn)安全解密、安全解碼、安全渲染、安全輸出等。
三、DRM 工作流程
工作流程主要包括:
1. 生成獲取mediaKeySystem設(shè)備證書的請求。
2. 處理獲得的設(shè)備證書請求的響應(yīng)。
3. 生成媒體密鑰請求。
4. 處理媒體密鑰響應(yīng)。
5.將MediaKeySession設(shè)置到Media Kit或AVCodec Kit,用于支持DRM節(jié)目解密。
6. 采用AVCodec Kit時,可以設(shè)置視音頻數(shù)據(jù)幀的cencinfo,并設(shè)置到AVBuffer中,在調(diào)用PushInputBuffer的時候?qū)崿F(xiàn)視音頻數(shù)據(jù)幀的解密、解碼。
四、開發(fā)示例
1. 創(chuàng)建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. 創(chuàng)建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. 生成媒體密鑰請求與處理媒體密鑰響應(yīng)
#defineMAX_DRM_MEDIA_KEY_RESPONSE_BUF_SIZE 24576// 24576: (2 * 12 * 1024) DRM_MediaKeyRequest mediaKeyRequest; DRM_MediaKeyRequestInfo info; // initData對應(yīng)碼流中的pssh數(shù)據(jù),請按實際數(shù)據(jù)填入。 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."); } /* ? 應(yīng)用通過網(wǎng)絡(luò)請求DRM服務(wù),獲取媒體密鑰響應(yīng)mediaKeyResponse,將響應(yīng)傳到OH_MediaKeySession_ProcessMediaKeyResponse, ? 若是離線媒體密鑰響應(yīng)處理,則返回離線媒體密鑰標(biāo)識mediaKeyId,請根據(jù)實際的數(shù)據(jù)和長度傳入。 */ unsigned?char?mediaKeyId[128] = {0x00}; int32_t?mediaKeyIdLen =?128; // 媒體密鑰響應(yīng)長度最大為MAX_DRM_MEDIA_KEY_RESPONSE_BUF_SIZE,請按實際數(shù)據(jù)輸入。 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節(jié)目(ArkTS):
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/drm-avplayer-arkts-integration
基于AVCodec播放DRM節(jié)目(C/C++)
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/drm-avcodec-integration
6、結(jié)語
DRM Kit 提供了DRM加密節(jié)目授權(quán)解密的功能,保護版權(quán)所有者的權(quán)利,防止未經(jīng)授權(quán)的復(fù)制和傳播。
-
視頻
+關(guān)注
關(guān)注
6文章
1993瀏覽量
74455 -
加密
+關(guān)注
關(guān)注
0文章
318瀏覽量
24562 -
DRM
+關(guān)注
關(guān)注
0文章
47瀏覽量
15523
原文標(biāo)題:【HarmonyOS-媒體技術(shù)-DRM Kit】數(shù)字版權(quán)保護開發(fā)指南
文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
RK3399 DRM使用方法介紹
基于DRM 技術(shù)的IPTV版權(quán)保護模型研究
音頻數(shù)字水印在版權(quán)保護中的應(yīng)用
基于移動Agent的DRM系統(tǒng)的研究
基于可信計算平臺的DRM應(yīng)用研究
HDCP版權(quán)保護技術(shù)解析
數(shù)字版權(quán)管理面面觀
基于數(shù)字指紋的數(shù)字版權(quán)標(biāo)識技術(shù)

結(jié)合可視密碼和數(shù)字水印的圖片版權(quán)保護方案

區(qū)塊鏈技術(shù):版權(quán)保護最佳“武器”
如何在Android下實現(xiàn)DRM以及與其適配的Secure Video Path的要點

評論