OpenHarmony/HarmonyOS系统 从v6.1版本开始较好的支持了DRM Kit,定义了DRM Kit API,支持创建DRM实例与DRM会话、支持证书管理、媒体密钥管理、节目授权和节目解密。详细介绍参见网址:https://device.harmonyos.com/cn/docs/apiref/harmonyos-guides/drm-overview
鸿蒙 DRM Kit 同时提供 ArkTS 与 C/C++ 接入入口;上表按平台 DRM 集成流程列出常用接口。参数结构、错误码、权限要求和可用版本请以对应 API Reference 为准,不同系统版本之间可能存在差异。建议按“查询能力 → 获取方案名并创建 MediaKeySystem → 创建 Session → 生成请求并提交 license → 配置解密 → 关闭 Session 并释放实例”的顺序集成。具体接口入口:
- DRM Kit 概览:https://device.harmonyos.com/cn/docs/apiref/harmonyos-guides/drm-overview
- ArkTS API:https://developer.huawei.com/consumer/cn/doc/doccenter-references/api/drm-arkts
- ArkTS 开发指南:https://device.harmonyos.com/cn/docs/apiref/harmonyos-guides/drm-arkts-dev-guide
- C/C++ API:https://developer.huawei.com/consumer/cn/doc/doccenter-references/api/drm-c
- C/C++ 开发指南:https://device.harmonyos.com/cn/docs/apiref/harmonyos-guides/drm-c-dev-guide
|
功能 |
ArkTS 接口 |
C/C++ 接口 |
|
查询 DRM 方案支持情况 |
drm.isMediaKeySystemSupported(uuid) |
OH_MediaKeySystem_IsSupported(...) |
|
按 UUID 查询方案名称 |
drm.getMediaKeySystems(uuid) |
OH_MediaKeySystem_GetMediaKeySystems(...) |
|
创建 DRM 实例 |
drm.createMediaKeySystem(name) |
OH_MediaKeySystem_Create(...) |
|
创建 DRM 会话 |
createMediaKeySession() |
OH_MediaKeySystem_CreateMediaKeySession(...) |
|
生成 license 请求 |
generateKeySystemRequest(initData) |
OH_MediaKeySession_GenerateMediaKeyRequest(...) |
|
提交 license 响应 |
processKeySystemResponse(response) |
OH_MediaKeySession_ProcessMediaKeyResponse(...) |
|
将 DRM 会话配置给解码器 |
setDecryptionConfig(...) |
OH_VideoDecoder_SetDecryptionConfig(...) |
|
释放会话和 DRM 实例 |
会话/实例 destroy() |
OH_MediaKeySession_Destroy() / OH_MediaKeySystem_Destroy() |
OpenHarmony/HarmonyOS系统上,应用调用DRM Kit ArkTS API接口集成DRM功能,播放加密视频内容的流程如下:
a)视频应用下载视频内容,解析到视频内容为加密视频,在加密描述信息中获取解决方案UUID与内容标识(或pssh数据);
b)视频应用调用drm.isMediaKeySystemSupported接口传入解决方案UUID,判断当前系统中是否支持该解决方案能力;符合GY/T 277—2019要求的DRM解决方案的UUID为“0x3d5e6d359b9a41e8b843dd3c6e72c42c”。
c)视频应用调用drm.getMediaKeySystems接口根据解决方案UUID获取解决方案名称,并且使用解决方案名称调用drm.createMediaKeySystem接口创建DRM实例。OpenHarmony/HarmonyOS系统上符合GY/T 277—2019要求的解决方案的名称,除“com.wiseplay.drm”外,使用四个字段表示,各字段由英文小写字母、数字、下划线组成且以字母开头,字段之间用英文句号(.)分隔,前3个字段为固定值,连写为org.j104x.drm,表示ITU-T J.1040~J.1043等技术标准,第4个字段表示解决方案,默认取值为"generic”(方案名全称为org.j104x.drm.generic),表示OS默认自带的解决方案,其它值由ChinaDRM解决方案商自定义并在开源鸿蒙社区进行注册后使用。
d)视频应用通过DRM实例调用createMediaKeySession接口创建DRM会话;
e)视频应用通过DRM会话调用generateKeySystemRequest接口传入内容标识(或pssh数据)生成许可证请求数据消息,并且将该请求发送到服务端获取许可证响应消息;
f)视频应用通过DRM会话调用processKeySystemResponse接口传入许可证响应消息,将许可证响应消息传入到DRM客户端,处理许可证响应并解析出内容密钥以及其使用规则;
g)视频应用将DRM会话通过setDecryptionConfig将DRM会话设置到解码实例中;
h)视频应用播放加密视频时,通过DRM会话完成加密码流解密,然后解码、显示输出;
i)当视频应用结束播放时,通过DRM会话的destroy接口销毁该会话,并通过DRM实例的destroy接口销毁该实例。
OpenHarmony/HarmonyOS系统上,应用调用DRM Kit C API接口集成DRM功能,播放加密视频内容的流程如下:
a)视频应用下载视频内容,并且完成视频内容解封装,从加密视频中获取加密描述信息,在加密描述信息中获取解决方案UUID与内容标识(或pssh数据);
b)视频应用调用OH_MediaKeySystem_IsSupported接口传入解决方案UUID,判断当前系统中是否支持该解决方案能力;符合GY/T 277—2019要求的DRM解决方案的UUID为“0x3d5e6d359b9a41e8b843dd3c6e72c42c”。
c)视频应用调用OH_MediaKeySystem_GetMediaKeySystems接口根据解决方案UUID获取解决方案名称,并且使用解决方案名称调用OH_MediaKeySystem_Create接口创建DRM实例。可能的解决方案名称包括“org.j104x.drm.generic”、“com.wiseplay.drm”在内;
d)视频应用通过DRM实例调用OH_MediaKeySystem_CreateMediaKeySession接口创建DRM会话;
e)视频应用通过DRM会话调用OH_MediaKeySession_GenerateMediaKeyRequest接口传入内容标识(或pssh数据)生成许可证请求数据消息,并且将该请求发送到服务端获取许可证响应消息;
f)视频应用通过DRM会话调用OH_MediaKeySession_ProcessMediaKeyResponse接口传入许可证响应消息,将许可证响应消息传入到DRM客户端,处理许可证响应并解析出内容密钥以及其使用规则;
g)视频应用将DRM会话通过OH_VideoDecoder_SetDecryptionConfig将DRM会话配置到解码实例中;
h)视频应用播放加密视频时,通过DRM会话完成加密码流解密,然后解码、显示输出;
i)当视频应用结束播放时,通过OH_MediaKeySession_Destroy接口销毁DRM会话,并通过OH_MediaKeySystem_Destroy接口销毁DRM实例。
OpenHarmony/HarmonyOS系统 从v6.1版本开始较好的支持了DRM Kit,定义了DRM Kit API,支持创建DRM实例与DRM会话、支持证书管理、媒体密钥管理、节目授权和节目解密。详细介绍参见网址:https://device.harmonyos.com/cn/docs/apiref/harmonyos-guides/drm-overview
鸿蒙 DRM Kit 同时提供 ArkTS 与 C/C++ 接入入口;上表按平台 DRM 集成流程列出常用接口。参数结构、错误码、权限要求和可用版本请以对应 API Reference 为准,不同系统版本之间可能存在差异。建议按“查询能力 → 获取方案名并创建 MediaKeySystem → 创建 Session → 生成请求并提交 license → 配置解密 → 关闭 Session 并释放实例”的顺序集成。具体接口入口:
- DRM Kit 概览:https://device.harmonyos.com/cn/docs/apiref/harmonyos-guides/drm-overview
- ArkTS API:https://developer.huawei.com/consumer/cn/doc/doccenter-references/api/drm-arkts
- ArkTS 开发指南:https://device.harmonyos.com/cn/docs/apiref/harmonyos-guides/drm-arkts-dev-guide
- C/C++ API:https://developer.huawei.com/consumer/cn/doc/doccenter-references/api/drm-c
- C/C++ 开发指南:https://device.harmonyos.com/cn/docs/apiref/harmonyos-guides/drm-c-dev-guide
|
功能 |
ArkTS 接口 |
C/C++ 接口 |
|
查询 DRM 方案支持情况 |
drm.isMediaKeySystemSupported(uuid) |
OH_MediaKeySystem_IsSupported(...) |
|
按 UUID 查询方案名称 |
drm.getMediaKeySystems(uuid) |
OH_MediaKeySystem_GetMediaKeySystems(...) |
|
创建 DRM 实例 |
drm.createMediaKeySystem(name) |
OH_MediaKeySystem_Create(...) |
|
创建 DRM 会话 |
createMediaKeySession() |
OH_MediaKeySystem_CreateMediaKeySession(...) |
|
生成 license 请求 |
generateKeySystemRequest(initData) |
OH_MediaKeySession_GenerateMediaKeyRequest(...) |
|
提交 license 响应 |
processKeySystemResponse(response) |
OH_MediaKeySession_ProcessMediaKeyResponse(...) |
|
将 DRM 会话配置给解码器 |
setDecryptionConfig(...) |
OH_VideoDecoder_SetDecryptionConfig(...) |
|
释放会话和 DRM 实例 |
会话/实例 destroy() |
OH_MediaKeySession_Destroy() / OH_MediaKeySystem_Destroy() |
OpenHarmony/HarmonyOS系统上,应用调用DRM Kit ArkTS API接口集成DRM功能,播放加密视频内容的流程如下:
a)视频应用下载视频内容,解析到视频内容为加密视频,在加密描述信息中获取解决方案UUID与内容标识(或pssh数据);
b)视频应用调用drm.isMediaKeySystemSupported接口传入解决方案UUID,判断当前系统中是否支持该解决方案能力;符合GY/T 277—2019要求的DRM解决方案的UUID为“0x3d5e6d359b9a41e8b843dd3c6e72c42c”。
c)视频应用调用drm.getMediaKeySystems接口根据解决方案UUID获取解决方案名称,并且使用解决方案名称调用drm.createMediaKeySystem接口创建DRM实例。OpenHarmony/HarmonyOS系统上符合GY/T 277—2019要求的解决方案的名称,除“com.wiseplay.drm”外,使用四个字段表示,各字段由英文小写字母、数字、下划线组成且以字母开头,字段之间用英文句号(.)分隔,前3个字段为固定值,连写为org.j104x.drm,表示ITU-T J.1040~J.1043等技术标准,第4个字段表示解决方案,默认取值为"generic”(方案名全称为org.j104x.drm.generic),表示OS默认自带的解决方案,其它值由ChinaDRM解决方案商自定义并在开源鸿蒙社区进行注册后使用。
d)视频应用通过DRM实例调用createMediaKeySession接口创建DRM会话;
e)视频应用通过DRM会话调用generateKeySystemRequest接口传入内容标识(或pssh数据)生成许可证请求数据消息,并且将该请求发送到服务端获取许可证响应消息;
f)视频应用通过DRM会话调用processKeySystemResponse接口传入许可证响应消息,将许可证响应消息传入到DRM客户端,处理许可证响应并解析出内容密钥以及其使用规则;
g)视频应用将DRM会话通过setDecryptionConfig将DRM会话设置到解码实例中;
h)视频应用播放加密视频时,通过DRM会话完成加密码流解密,然后解码、显示输出;
i)当视频应用结束播放时,通过DRM会话的destroy接口销毁该会话,并通过DRM实例的destroy接口销毁该实例。
OpenHarmony/HarmonyOS系统上,应用调用DRM Kit C API接口集成DRM功能,播放加密视频内容的流程如下:
a)视频应用下载视频内容,并且完成视频内容解封装,从加密视频中获取加密描述信息,在加密描述信息中获取解决方案UUID与内容标识(或pssh数据);
b)视频应用调用OH_MediaKeySystem_IsSupported接口传入解决方案UUID,判断当前系统中是否支持该解决方案能力;符合GY/T 277—2019要求的DRM解决方案的UUID为“0x3d5e6d359b9a41e8b843dd3c6e72c42c”。
c)视频应用调用OH_MediaKeySystem_GetMediaKeySystems接口根据解决方案UUID获取解决方案名称,并且使用解决方案名称调用OH_MediaKeySystem_Create接口创建DRM实例。可能的解决方案名称包括“org.j104x.drm.generic”、“com.wiseplay.drm”在内;
d)视频应用通过DRM实例调用OH_MediaKeySystem_CreateMediaKeySession接口创建DRM会话;
e)视频应用通过DRM会话调用OH_MediaKeySession_GenerateMediaKeyRequest接口传入内容标识(或pssh数据)生成许可证请求数据消息,并且将该请求发送到服务端获取许可证响应消息;
f)视频应用通过DRM会话调用OH_MediaKeySession_ProcessMediaKeyResponse接口传入许可证响应消息,将许可证响应消息传入到DRM客户端,处理许可证响应并解析出内容密钥以及其使用规则;
g)视频应用将DRM会话通过OH_VideoDecoder_SetDecryptionConfig将DRM会话配置到解码实例中;
h)视频应用播放加密视频时,通过DRM会话完成加密码流解密,然后解码、显示输出;
i)当视频应用结束播放时,通过OH_MediaKeySession_Destroy接口销毁DRM会话,并通过OH_MediaKeySystem_Destroy接口销毁DRM实例。