1e41f4b71Sopenharmony_ci# @ohos.multimedia.drm (数字版权保护) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciDRM(Digital Rights Management)框架组件支持音视频媒体业务数字版权管理功能的开发。开发者可以调用系统提供的DRM插件,完成以下功能: 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci* DRM证书管理:生成证书请求、设置证书响应,实现对证书Provision(下载)功能。 6e41f4b71Sopenharmony_ci* DRM媒体密钥管理:生成媒体密钥请求、设置媒体密钥响应、管理离线媒体密钥功能。 7e41f4b71Sopenharmony_ci* DRM节目授权:支持DRM插件根据媒体密钥权限对DRM节目授权。 8e41f4b71Sopenharmony_ci* DRM节目解密:支持媒体播放功能的解密调用,实现对DRM节目的解密。 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci> **说明:** 11e41f4b71Sopenharmony_ci> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci## 导入模块 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci```ts 16e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 17e41f4b71Sopenharmony_ci``` 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci## DrmErrorCode 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci枚举,错误码。 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 26e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 27e41f4b71Sopenharmony_ci| ERROR_UNKNOWN | 24700101 | 未知错误 | 28e41f4b71Sopenharmony_ci| MAX_SYSTEM_NUM_REACHED | 24700103 | MediaKeySystem实例数量超过上限(64个) | 29e41f4b71Sopenharmony_ci| MAX_SESSION_NUM_REACHED | 24700104 | MediaKeySession实例数量超过上限(64个) | 30e41f4b71Sopenharmony_ci| SERVICE_FATAL_ERROR | 24700201 | DRM服务异常 | 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci## PreDefinedConfigName 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci枚举,预定义的配置属性。 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 39e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 40e41f4b71Sopenharmony_ci| CONFIG_DEVICE_VENDOR | 'vendor' | 插件厂商名,通过[getConfigurationString](#getconfigurationstring)接口获取vendor对应配置值。 | 41e41f4b71Sopenharmony_ci| CONFIG_DEVICE_VERSION | 'version' | 插件版本号,通过[getConfigurationString](#getconfigurationstring)接口获取version对应配置值。 | 42e41f4b71Sopenharmony_ci| CONFIG_DEVICE_DESCRIPTION | 'description' | 设备描述符,通过[getConfigurationString](#getconfigurationstring)接口获取description对应配置值。 | 43e41f4b71Sopenharmony_ci| CONFIG_DEVICE_ALGORITHMS | 'algorithms' | 支持的算法,通过[getConfigurationString](#getconfigurationstring)接口获取algorithms对应配置值。 | 44e41f4b71Sopenharmony_ci| CONFIG_DEVICE_UNIQUE_ID | 'deviceUniqueId' | 设备唯一标识,通过[getConfigurationByteArray](#getconfigurationbytearray)接口获取deviceUniqueId对应配置值。 | 45e41f4b71Sopenharmony_ci| CONFIG_SESSION_MAX | 'maxSessionNum' | 设备支持的最大会话数,通过[getConfigurationString](#getconfigurationstring)接口获取maxSessionNum对应配置值。 | 46e41f4b71Sopenharmony_ci| CONFIG_SESSION_CURRENT | 'currentSessionNum' | 当前会话数量,通过[getConfigurationString](#getconfigurationstring)接口获取currentSessionNum对应配置值。 | 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci## MediaKeyType 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ci枚举,媒体密钥类型。 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 55e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 56e41f4b71Sopenharmony_ci| MEDIA_KEY_TYPE_OFFLINE | 0 | 离线 | 57e41f4b71Sopenharmony_ci| MEDIA_KEY_TYPE_ONLINE | 1 | 在线 | 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci## OfflineMediaKeyStatus 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci枚举,离线媒体密钥状态。 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 66e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 67e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_UNKNOWN | 0 | 未知状态 | 68e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_USABLE | 1 | 可用状态 | 69e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_INACTIVE | 2 | 失活状态 | 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci## CertificateStatus 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci枚举,设备证书状态。 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 78e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 79e41f4b71Sopenharmony_ci| CERT_STATUS_PROVISIONED | 0 | 设备已安装设备证书 | 80e41f4b71Sopenharmony_ci| CERT_STATUS_NOT_PROVISIONED | 1 | 设备未安装设备证书 | 81e41f4b71Sopenharmony_ci| CERT_STATUS_EXPIRED | 2 | 设备证书过期 | 82e41f4b71Sopenharmony_ci| CERT_STATUS_INVALID | 3 | 设备证书无效 | 83e41f4b71Sopenharmony_ci| CERT_STATUS_UNAVAILABLE | 4 | 设备证书不可用 | 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci## MediaKeyRequestType 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci枚举,媒体密钥请求类型。 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 94e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 95e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_UNKNOWN | 0 | 未知请求类型 | 96e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_INITIAL | 1 | 初始化请求 | 97e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_RENEWAL | 2 | 续订请求 | 98e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_RELEASE | 3 | 释放请求 | 99e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_NONE | 4 | 无请求 | 100e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_UPDATE | 5 | 更新请求 | 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci## ContentProtectionLevel 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci枚举,内容保护级别。 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 111e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 112e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_UNKNOWN | 0 | 未知内容保护级别 | 113e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_SW_CRYPTO | 1 | 软件内容保护级别 | 114e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_HW_CRYPTO | 2 | 硬件内容保护级别 | 115e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_ENHANCED_HW | 3 | 硬件增强内容保护级别 | 116e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_MAX | 4 | 最高内容保护级别 | 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci## ProvisionRequest 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci设备证书请求。 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 125e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 126e41f4b71Sopenharmony_ci| data | Uint8Array | 是 | 设备证书请求数据 | 127e41f4b71Sopenharmony_ci| defaultURL | string | 是 | Provision服务(设备证书请求服务)URL | 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci## OptionsData 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ci设备证书请求的可选数据。 132e41f4b71Sopenharmony_ci 133e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 134e41f4b71Sopenharmony_ci 135e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 136e41f4b71Sopenharmony_ci 137e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 138e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 139e41f4b71Sopenharmony_ci| name | string | 是 | 可选数据名 | 140e41f4b71Sopenharmony_ci| value | string | 是 | 可选数据值 | 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci## MediaKeyRequest 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci媒体密钥请求参数。 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 151e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 152e41f4b71Sopenharmony_ci| mediaKeyRequestType | [MediaKeyRequestType](#mediakeyrequesttype) | 是 | 媒体密钥请求类型 | 153e41f4b71Sopenharmony_ci| data | Uint8Array | 是 | 媒体密钥请求数据 | 154e41f4b71Sopenharmony_ci| defaultURL | string | 是 | 媒体密钥服务URL | 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci## EventInfo 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci事件信息。 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 165e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 166e41f4b71Sopenharmony_ci| info | Uint8Array | 是 | 事件信息数据 | 167e41f4b71Sopenharmony_ci| extraInfo | string | 是 | 事件扩展信息 | 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci## StatisticKeyValue 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_ci度量记录。 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 176e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 177e41f4b71Sopenharmony_ci| name | string | 是 | 度量记录名 | 178e41f4b71Sopenharmony_ci| value | string | 是 | 度量记录值 | 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ci## MediaKeyStatus 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci媒体密钥状态 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 189e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 190e41f4b71Sopenharmony_ci| name | string | 是 | 媒体密钥状态名称(如媒体密钥过期时间、内容保护安全级别等) | 191e41f4b71Sopenharmony_ci| value | string | 是 | 媒体密钥状态值 | 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ci## KeysInfo 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ci媒体密钥中密钥信息。 196e41f4b71Sopenharmony_ci 197e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 202e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 203e41f4b71Sopenharmony_ci| keyId | Uint8Array | 是 | 媒体密钥标识 | 204e41f4b71Sopenharmony_ci| value | string | 是 | 媒体密钥状态值 | 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci## MediaKeySystemInfo 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci加密媒体内容的DRM信息。 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 215e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 216e41f4b71Sopenharmony_ci| uuid | string | 是 | DRM内容保护系统的唯一标识 | 217e41f4b71Sopenharmony_ci| pssh | Uint8Array | 是 | DRM内容保护系统专用头(Protection System Specific Header) | 218e41f4b71Sopenharmony_ci 219e41f4b71Sopenharmony_ci## MediaKeySystemDescription<sup>12+</sup> 220e41f4b71Sopenharmony_ci 221e41f4b71Sopenharmony_ci插件信息。 222e41f4b71Sopenharmony_ci 223e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 224e41f4b71Sopenharmony_ci 225e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 226e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 227e41f4b71Sopenharmony_ci| name | string | 是 | 插件名称 | 228e41f4b71Sopenharmony_ci| uuid | string | 是 | 插件唯一标识码 | 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci## drm.createMediaKeySystem 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_cicreateMediaKeySystem(name: string): MediaKeySystem 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci创建MediaKeySystem实例。 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci**参数:** 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 241e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 242e41f4b71Sopenharmony_ci| name | string | 是 | DRM解决方案名称。 | 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_ci**返回值:** 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ci| 类型 | 说明 | 247e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 248e41f4b71Sopenharmony_ci| [MediaKeySystem](#mediakeysystem) | MediaKeySystem实例。 | 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci**错误码:** 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 255e41f4b71Sopenharmony_ci| --------------- | --------------- | 256e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. | 257e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 258e41f4b71Sopenharmony_ci| 24700103 | Meet max MediaKeySystem num limit | 259e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 260e41f4b71Sopenharmony_ci 261e41f4b71Sopenharmony_ci**示例:** 262e41f4b71Sopenharmony_ci 263e41f4b71Sopenharmony_ci```ts 264e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 265e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 266e41f4b71Sopenharmony_citry { 267e41f4b71Sopenharmony_ci let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 268e41f4b71Sopenharmony_ci} catch (err) { 269e41f4b71Sopenharmony_ci let error = err as BusinessError; 270e41f4b71Sopenharmony_ci console.error(`createMediaKeySystem ERROR: ${error}`); 271e41f4b71Sopenharmony_ci} 272e41f4b71Sopenharmony_ci``` 273e41f4b71Sopenharmony_ci 274e41f4b71Sopenharmony_ci## drm.isMediaKeySystemSupported 275e41f4b71Sopenharmony_ci 276e41f4b71Sopenharmony_ciisMediaKeySystemSupported(name: string): boolean 277e41f4b71Sopenharmony_ci 278e41f4b71Sopenharmony_ci判断设备是否支持指定的DRM解决方案。 279e41f4b71Sopenharmony_ci 280e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 281e41f4b71Sopenharmony_ci 282e41f4b71Sopenharmony_ci**参数:** 283e41f4b71Sopenharmony_ci 284e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 285e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 286e41f4b71Sopenharmony_ci| name | string | 是 | DRM解决方案名称。 | 287e41f4b71Sopenharmony_ci 288e41f4b71Sopenharmony_ci**返回值:** 289e41f4b71Sopenharmony_ci 290e41f4b71Sopenharmony_ci| 类型 | 说明 | 291e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 292e41f4b71Sopenharmony_ci| boolean | 返回是否支持。 | 293e41f4b71Sopenharmony_ci 294e41f4b71Sopenharmony_ci**错误码:** 295e41f4b71Sopenharmony_ci 296e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 297e41f4b71Sopenharmony_ci 298e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 299e41f4b71Sopenharmony_ci| --------------- | --------------- | 300e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed, the param name's length is zero or too big(exceeds 4096 Bytes). | 301e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 302e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 303e41f4b71Sopenharmony_ci 304e41f4b71Sopenharmony_ci**示例:** 305e41f4b71Sopenharmony_ci 306e41f4b71Sopenharmony_ci```ts 307e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 308e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 309e41f4b71Sopenharmony_ci 310e41f4b71Sopenharmony_citry { 311e41f4b71Sopenharmony_ci let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm"); 312e41f4b71Sopenharmony_ci console.log("isMediaKeySystemSupported: ", supported); 313e41f4b71Sopenharmony_ci} catch (err) { 314e41f4b71Sopenharmony_ci let error = err as BusinessError; 315e41f4b71Sopenharmony_ci console.error(`isMediaKeySystemSupported ERROR: ${error}`); 316e41f4b71Sopenharmony_ci} 317e41f4b71Sopenharmony_ci``` 318e41f4b71Sopenharmony_ci 319e41f4b71Sopenharmony_ci## drm.isMediaKeySystemSupported 320e41f4b71Sopenharmony_ci 321e41f4b71Sopenharmony_ciisMediaKeySystemSupported(name: string, mimeType: string): boolean 322e41f4b71Sopenharmony_ci 323e41f4b71Sopenharmony_ci判断设备是否支持指定DRM解决方案及媒体类型。 324e41f4b71Sopenharmony_ci 325e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 326e41f4b71Sopenharmony_ci 327e41f4b71Sopenharmony_ci**参数:** 328e41f4b71Sopenharmony_ci 329e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 330e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 331e41f4b71Sopenharmony_ci| name | string | 是 | DRM解决方案名称。 | 332e41f4b71Sopenharmony_ci| mimeType | string | 是 | 媒体类型,由DRM解决方案决定具体的支持类型。 | 333e41f4b71Sopenharmony_ci 334e41f4b71Sopenharmony_ci**返回值:** 335e41f4b71Sopenharmony_ci 336e41f4b71Sopenharmony_ci| 类型 | 说明 | 337e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 338e41f4b71Sopenharmony_ci| boolean | 返回是否支持。 | 339e41f4b71Sopenharmony_ci 340e41f4b71Sopenharmony_ci**错误码:** 341e41f4b71Sopenharmony_ci 342e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 343e41f4b71Sopenharmony_ci 344e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 345e41f4b71Sopenharmony_ci| --------------- | --------------- | 346e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. | 347e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 348e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 349e41f4b71Sopenharmony_ci 350e41f4b71Sopenharmony_ci**示例:** 351e41f4b71Sopenharmony_ci 352e41f4b71Sopenharmony_ci```ts 353e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 354e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 355e41f4b71Sopenharmony_ci 356e41f4b71Sopenharmony_citry { 357e41f4b71Sopenharmony_ci let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm", "video/avc"); 358e41f4b71Sopenharmony_ci console.log("isMediaKeySystemSupported: ", supported); 359e41f4b71Sopenharmony_ci} catch (err) { 360e41f4b71Sopenharmony_ci let error = err as BusinessError; 361e41f4b71Sopenharmony_ci console.error(`isMediaKeySystemSupported ERROR: ${error}`); 362e41f4b71Sopenharmony_ci} 363e41f4b71Sopenharmony_ci``` 364e41f4b71Sopenharmony_ci 365e41f4b71Sopenharmony_ci## drm.isMediaKeySystemSupported 366e41f4b71Sopenharmony_ci 367e41f4b71Sopenharmony_ciisMediaKeySystemSupported(name: string, mimeType: string, level: ContentProtectionLevel): boolean 368e41f4b71Sopenharmony_ci 369e41f4b71Sopenharmony_ci判断设备是否支持指定DRM解决方案、媒体类型以及内容保护级别。 370e41f4b71Sopenharmony_ci 371e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 372e41f4b71Sopenharmony_ci 373e41f4b71Sopenharmony_ci**参数:** 374e41f4b71Sopenharmony_ci 375e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 376e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 377e41f4b71Sopenharmony_ci| name | string | 是 | DRM解决方案名称。 | 378e41f4b71Sopenharmony_ci| mimeType | string | 是 | 媒体类型,由DRM解决方案决定具体的支持类型。 | 379e41f4b71Sopenharmony_ci| level | [ContentProtectionLevel](#contentprotectionlevel) | 是 | 内容保护级别。 | 380e41f4b71Sopenharmony_ci 381e41f4b71Sopenharmony_ci**返回值:** 382e41f4b71Sopenharmony_ci 383e41f4b71Sopenharmony_ci| 类型 | 说明 | 384e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 385e41f4b71Sopenharmony_ci| boolean | 返回是否支持。 | 386e41f4b71Sopenharmony_ci 387e41f4b71Sopenharmony_ci**错误码:** 388e41f4b71Sopenharmony_ci 389e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 390e41f4b71Sopenharmony_ci 391e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 392e41f4b71Sopenharmony_ci| --------------- | --------------- | 393e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. | 394e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 395e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 396e41f4b71Sopenharmony_ci 397e41f4b71Sopenharmony_ci**示例:** 398e41f4b71Sopenharmony_ci 399e41f4b71Sopenharmony_ci```ts 400e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 401e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 402e41f4b71Sopenharmony_ci 403e41f4b71Sopenharmony_citry { 404e41f4b71Sopenharmony_ci let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm", "video/avc", drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO); 405e41f4b71Sopenharmony_ci console.log("isMediaKeySystemSupported: ", supported); 406e41f4b71Sopenharmony_ci} catch (err) { 407e41f4b71Sopenharmony_ci let error = err as BusinessError; 408e41f4b71Sopenharmony_ci console.error(`isMediaKeySystemSupported ERROR: ${error}`); 409e41f4b71Sopenharmony_ci} 410e41f4b71Sopenharmony_ci``` 411e41f4b71Sopenharmony_ci 412e41f4b71Sopenharmony_ci## drm.getMediaKeySystemUuid<sup>12+</sup> 413e41f4b71Sopenharmony_ci 414e41f4b71Sopenharmony_cigetMediaKeySystemUuid(name: string): string; 415e41f4b71Sopenharmony_ci 416e41f4b71Sopenharmony_ci获取DRM解决方案支持的DRM内容保护系统唯一标识。 417e41f4b71Sopenharmony_ci 418e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 419e41f4b71Sopenharmony_ci 420e41f4b71Sopenharmony_ci**参数:** 421e41f4b71Sopenharmony_ci 422e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 423e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 424e41f4b71Sopenharmony_ci| name | string | 是 | DRM解决方案名称。 | 425e41f4b71Sopenharmony_ci 426e41f4b71Sopenharmony_ci**返回值:** 427e41f4b71Sopenharmony_ci 428e41f4b71Sopenharmony_ci| 类型 | 说明 | 429e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 430e41f4b71Sopenharmony_ci| uuid | string | 是 | DRM内容保护系统的唯一标识。 | 431e41f4b71Sopenharmony_ci 432e41f4b71Sopenharmony_ci**错误码:** 433e41f4b71Sopenharmony_ci 434e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 435e41f4b71Sopenharmony_ci 436e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 437e41f4b71Sopenharmony_ci| --------------- | --------------- | 438e41f4b71Sopenharmony_ci| 401 | The parameter check failed.Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. | 439e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 440e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 441e41f4b71Sopenharmony_ci 442e41f4b71Sopenharmony_ci**示例:** 443e41f4b71Sopenharmony_ci 444e41f4b71Sopenharmony_ci```ts 445e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 446e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 447e41f4b71Sopenharmony_citry { 448e41f4b71Sopenharmony_ci let uuid: String = drm.getMediaKeySystemUuid("com.clearplay.drm"); 449e41f4b71Sopenharmony_ci console.log("getMediaKeySystemUuid: ", uuid); 450e41f4b71Sopenharmony_ci} catch (err) { 451e41f4b71Sopenharmony_ci let error = err as BusinessError; 452e41f4b71Sopenharmony_ci console.error(`getMediaKeySystemUuid ERROR: ${error}`); 453e41f4b71Sopenharmony_ci} 454e41f4b71Sopenharmony_ci``` 455e41f4b71Sopenharmony_ci 456e41f4b71Sopenharmony_ci## drm.getMediaKeySystems<sup>12+</sup> 457e41f4b71Sopenharmony_ci 458e41f4b71Sopenharmony_cigetMediaKeySystems(): MediaKeySystemDescription[] 459e41f4b71Sopenharmony_ci 460e41f4b71Sopenharmony_ci获取设备支持的插件信息列表。 461e41f4b71Sopenharmony_ci 462e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 463e41f4b71Sopenharmony_ci 464e41f4b71Sopenharmony_ci**返回值:** 465e41f4b71Sopenharmony_ci 466e41f4b71Sopenharmony_ci| 类型 | 说明 | 467e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 468e41f4b71Sopenharmony_ci| [MediaKeySystemDescription[]](#mediakeysystemdescription12) | 设备支持的插件信息列表。 | 469e41f4b71Sopenharmony_ci 470e41f4b71Sopenharmony_ci**错误码:** 471e41f4b71Sopenharmony_ci 472e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 473e41f4b71Sopenharmony_ci 474e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 475e41f4b71Sopenharmony_ci| --------------- | --------------- | 476e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 477e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 478e41f4b71Sopenharmony_ci 479e41f4b71Sopenharmony_ci**示例:** 480e41f4b71Sopenharmony_ci 481e41f4b71Sopenharmony_ci```ts 482e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 483e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 484e41f4b71Sopenharmony_citry { 485e41f4b71Sopenharmony_ci let description: drm.MediaKeySystemDescription[] = drm.getMediaKeySystems(); 486e41f4b71Sopenharmony_ci} catch (err) { 487e41f4b71Sopenharmony_ci let error = err as BusinessError; 488e41f4b71Sopenharmony_ci console.error(`getMediaKeySystems ERROR: ${error}`); 489e41f4b71Sopenharmony_ci} 490e41f4b71Sopenharmony_ci``` 491e41f4b71Sopenharmony_ci 492e41f4b71Sopenharmony_ci## MediaKeySystem 493e41f4b71Sopenharmony_ci支持MediaKeySystem实例管理、设备证书申请与处理、会话创建、离线媒体密钥管理、获取DRM度量记录、设备属性等。在调用MediaKeySystem方法之前,必须使用[createMediaKeySystem](#drmcreatemediakeysystem)创建一个MediaKeySystem实例。 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ci### setConfigurationString 496e41f4b71Sopenharmony_ci 497e41f4b71Sopenharmony_cisetConfigurationString(configName: string, value: string): void 498e41f4b71Sopenharmony_ci 499e41f4b71Sopenharmony_ci设置字符串类型的配置信息。 500e41f4b71Sopenharmony_ci 501e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 502e41f4b71Sopenharmony_ci 503e41f4b71Sopenharmony_ci**参数:** 504e41f4b71Sopenharmony_ci 505e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 506e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 507e41f4b71Sopenharmony_ci| configName | string | 是 | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。 | 508e41f4b71Sopenharmony_ci| value | string | 是 | 配置属性值。 | 509e41f4b71Sopenharmony_ci 510e41f4b71Sopenharmony_ci**错误码:** 511e41f4b71Sopenharmony_ci 512e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 513e41f4b71Sopenharmony_ci 514e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 515e41f4b71Sopenharmony_ci| --------------- | --------------- | 516e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.| 517e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 518e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 519e41f4b71Sopenharmony_ci 520e41f4b71Sopenharmony_ci**示例:** 521e41f4b71Sopenharmony_ci 522e41f4b71Sopenharmony_ci```ts 523e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 524e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 525e41f4b71Sopenharmony_ci 526e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 527e41f4b71Sopenharmony_citry { 528e41f4b71Sopenharmony_ci mediaKeySystem.setConfigurationString("stringConfigName", "stringConfigValue"); // 确保stringConfigName是可配置的 529e41f4b71Sopenharmony_ci} catch (err) { 530e41f4b71Sopenharmony_ci let error = err as BusinessError; 531e41f4b71Sopenharmony_ci console.error(`setConfigurationString ERROR: ${error}`); 532e41f4b71Sopenharmony_ci} 533e41f4b71Sopenharmony_ci``` 534e41f4b71Sopenharmony_ci 535e41f4b71Sopenharmony_ci### getConfigurationString 536e41f4b71Sopenharmony_ci 537e41f4b71Sopenharmony_cigetConfigurationString(configName: string): string 538e41f4b71Sopenharmony_ci 539e41f4b71Sopenharmony_ci获取字符串类型的配置属性值。 540e41f4b71Sopenharmony_ci 541e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 542e41f4b71Sopenharmony_ci 543e41f4b71Sopenharmony_ci**参数:** 544e41f4b71Sopenharmony_ci 545e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 546e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 547e41f4b71Sopenharmony_ci| configName | string | 是 | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。 | 548e41f4b71Sopenharmony_ci 549e41f4b71Sopenharmony_ci**返回值:** 550e41f4b71Sopenharmony_ci 551e41f4b71Sopenharmony_ci| 类型 | 说明 | 552e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 553e41f4b71Sopenharmony_ci| string | 返回字符串类型的配置属性值。 | 554e41f4b71Sopenharmony_ci 555e41f4b71Sopenharmony_ci**错误码:** 556e41f4b71Sopenharmony_ci 557e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 558e41f4b71Sopenharmony_ci 559e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 560e41f4b71Sopenharmony_ci| --------------- | --------------- | 561e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed, the param's length is zero or too big(exceeds 4096 Bytes). | 562e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 563e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 564e41f4b71Sopenharmony_ci 565e41f4b71Sopenharmony_ci**示例:** 566e41f4b71Sopenharmony_ci 567e41f4b71Sopenharmony_ci```ts 568e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 569e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 570e41f4b71Sopenharmony_ci 571e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 572e41f4b71Sopenharmony_citry { 573e41f4b71Sopenharmony_ci let configValue: string = mediaKeySystem.getConfigurationString("vendor"); 574e41f4b71Sopenharmony_ci} catch (err) { 575e41f4b71Sopenharmony_ci let error = err as BusinessError; 576e41f4b71Sopenharmony_ci console.error(`getConfigurationString ERROR: ${error}`); 577e41f4b71Sopenharmony_ci} 578e41f4b71Sopenharmony_ci``` 579e41f4b71Sopenharmony_ci 580e41f4b71Sopenharmony_ci### setConfigurationByteArray 581e41f4b71Sopenharmony_ci 582e41f4b71Sopenharmony_cisetConfigurationByteArray(configName: string, value: Uint8Array): void 583e41f4b71Sopenharmony_ci 584e41f4b71Sopenharmony_ci设置数组类型的配置信息。 585e41f4b71Sopenharmony_ci 586e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 587e41f4b71Sopenharmony_ci 588e41f4b71Sopenharmony_ci**参数:** 589e41f4b71Sopenharmony_ci 590e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 591e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 592e41f4b71Sopenharmony_ci| configName | string | 是 | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。 | 593e41f4b71Sopenharmony_ci| value | Uint8Array | 是 | 数组类型的配置属性值,具体属性值由设备上DRM解决方案决定。 | 594e41f4b71Sopenharmony_ci 595e41f4b71Sopenharmony_ci**错误码:** 596e41f4b71Sopenharmony_ci 597e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 598e41f4b71Sopenharmony_ci 599e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 600e41f4b71Sopenharmony_ci| --------------- | --------------- | 601e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. | 602e41f4b71Sopenharmony_ci| 24700101 | All unknown errors. | 603e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died. | 604e41f4b71Sopenharmony_ci 605e41f4b71Sopenharmony_ci**示例:** 606e41f4b71Sopenharmony_ci 607e41f4b71Sopenharmony_ci```ts 608e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 609e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 610e41f4b71Sopenharmony_ci 611e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 612e41f4b71Sopenharmony_ci// 按实际需求填写configValue属性值,请按实际值传入 613e41f4b71Sopenharmony_cilet configValue: Uint8Array = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 614e41f4b71Sopenharmony_citry { 615e41f4b71Sopenharmony_ci // 需确认当前DRM解决方案的byteArrayConfigName属性是可配置的 616e41f4b71Sopenharmony_ci mediaKeySystem.setConfigurationByteArray("byteArrayConfigName", configValue); 617e41f4b71Sopenharmony_ci} catch (err) { 618e41f4b71Sopenharmony_ci let error = err as BusinessError; 619e41f4b71Sopenharmony_ci console.error(`setConfigurationByteArray ERROR: ${error}`); 620e41f4b71Sopenharmony_ci} 621e41f4b71Sopenharmony_ci``` 622e41f4b71Sopenharmony_ci 623e41f4b71Sopenharmony_ci### getConfigurationByteArray 624e41f4b71Sopenharmony_ci 625e41f4b71Sopenharmony_cigetConfigurationByteArray(configName: string): Uint8Array 626e41f4b71Sopenharmony_ci 627e41f4b71Sopenharmony_ci获取数组类型的配置信息。 628e41f4b71Sopenharmony_ci 629e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 630e41f4b71Sopenharmony_ci 631e41f4b71Sopenharmony_ci**参数:** 632e41f4b71Sopenharmony_ci 633e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 634e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 635e41f4b71Sopenharmony_ci| configName | string | 是 | 配置属性名,不能为空,属性名参考[PreDefinedConfigName](#predefinedconfigname),具体支持的属性名由设备上DRM解决方案决定。 | 636e41f4b71Sopenharmony_ci 637e41f4b71Sopenharmony_ci**返回值:** 638e41f4b71Sopenharmony_ci 639e41f4b71Sopenharmony_ci| 类型 | 说明 | 640e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 641e41f4b71Sopenharmony_ci| Uint8Array | 数组类型的配置属性值。 | 642e41f4b71Sopenharmony_ci 643e41f4b71Sopenharmony_ci**错误码:** 644e41f4b71Sopenharmony_ci 645e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 646e41f4b71Sopenharmony_ci 647e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 648e41f4b71Sopenharmony_ci| --------------- | --------------- | 649e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. | 650e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 651e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 652e41f4b71Sopenharmony_ci 653e41f4b71Sopenharmony_ci**示例:** 654e41f4b71Sopenharmony_ci 655e41f4b71Sopenharmony_ci```ts 656e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 657e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 658e41f4b71Sopenharmony_ci 659e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 660e41f4b71Sopenharmony_citry { 661e41f4b71Sopenharmony_ci let configValue: Uint8Array = mediaKeySystem.getConfigurationByteArray("deviceUniqueId"); // 确保deviceUniqueId属性是存在的 662e41f4b71Sopenharmony_ci} catch (err) { 663e41f4b71Sopenharmony_ci let error = err as BusinessError; 664e41f4b71Sopenharmony_ci console.error(`getConfigurationByteArray ERROR: ${error}`); 665e41f4b71Sopenharmony_ci} 666e41f4b71Sopenharmony_ci``` 667e41f4b71Sopenharmony_ci 668e41f4b71Sopenharmony_ci### getStatistics 669e41f4b71Sopenharmony_ci 670e41f4b71Sopenharmony_cigetStatistics(): StatisticKeyValue[] 671e41f4b71Sopenharmony_ci 672e41f4b71Sopenharmony_ci获取性能度量记录。其中包括当前会话数、插件版本信息、每个会话最大三次解密耗时、解密次数和解密失败次数。 673e41f4b71Sopenharmony_ci 674e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 675e41f4b71Sopenharmony_ci 676e41f4b71Sopenharmony_ci**返回值:** 677e41f4b71Sopenharmony_ci 678e41f4b71Sopenharmony_ci| 类型 | 说明 | 679e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 680e41f4b71Sopenharmony_ci| [StatisticKeyValue[]](#statistickeyvalue) | 度量记录。 | 681e41f4b71Sopenharmony_ci 682e41f4b71Sopenharmony_ci**错误码:** 683e41f4b71Sopenharmony_ci 684e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 685e41f4b71Sopenharmony_ci 686e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 687e41f4b71Sopenharmony_ci| --------------- | --------------- | 688e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 689e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 690e41f4b71Sopenharmony_ci 691e41f4b71Sopenharmony_ci**示例:** 692e41f4b71Sopenharmony_ci 693e41f4b71Sopenharmony_ci```ts 694e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 695e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 696e41f4b71Sopenharmony_ci 697e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 698e41f4b71Sopenharmony_citry { 699e41f4b71Sopenharmony_ci let statisticKeyValue: drm.StatisticKeyValue[] = mediaKeySystem.getStatistics(); 700e41f4b71Sopenharmony_ci} catch (err) { 701e41f4b71Sopenharmony_ci let error = err as BusinessError; 702e41f4b71Sopenharmony_ci console.error(`getConfigurationByteArray ERROR: ${error}`); 703e41f4b71Sopenharmony_ci} 704e41f4b71Sopenharmony_ci``` 705e41f4b71Sopenharmony_ci 706e41f4b71Sopenharmony_ci### getMaxContentProtectionLevel 707e41f4b71Sopenharmony_ci 708e41f4b71Sopenharmony_cigetMaxContentProtectionLevel(): ContentProtectionLevel 709e41f4b71Sopenharmony_ci 710e41f4b71Sopenharmony_ci获取当前DRM解决方案支持的最大内容保护级别。 711e41f4b71Sopenharmony_ci 712e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 713e41f4b71Sopenharmony_ci 714e41f4b71Sopenharmony_ci**返回值:** 715e41f4b71Sopenharmony_ci 716e41f4b71Sopenharmony_ci| 类型 | 说明 | 717e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 718e41f4b71Sopenharmony_ci| [ContentProtectionLevel](#contentprotectionlevel) | 返回设备支持的最大内容保护级别。 | 719e41f4b71Sopenharmony_ci 720e41f4b71Sopenharmony_ci**错误码:** 721e41f4b71Sopenharmony_ci 722e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 723e41f4b71Sopenharmony_ci 724e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 725e41f4b71Sopenharmony_ci| --------------- | --------------- | 726e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 727e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 728e41f4b71Sopenharmony_ci 729e41f4b71Sopenharmony_ci**示例:** 730e41f4b71Sopenharmony_ci 731e41f4b71Sopenharmony_ci```ts 732e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 733e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 734e41f4b71Sopenharmony_ci 735e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 736e41f4b71Sopenharmony_citry { 737e41f4b71Sopenharmony_ci let maxLevel: drm.ContentProtectionLevel = mediaKeySystem.getMaxContentProtectionLevel(); 738e41f4b71Sopenharmony_ci} catch (err) { 739e41f4b71Sopenharmony_ci let error = err as BusinessError; 740e41f4b71Sopenharmony_ci console.error(`getConfigurationByteArray ERROR: ${error}`); 741e41f4b71Sopenharmony_ci} 742e41f4b71Sopenharmony_ci``` 743e41f4b71Sopenharmony_ci 744e41f4b71Sopenharmony_ci### generateKeySystemRequest 745e41f4b71Sopenharmony_ci 746e41f4b71Sopenharmony_cigenerateKeySystemRequest(): Promise<ProvisionRequest\> 747e41f4b71Sopenharmony_ci 748e41f4b71Sopenharmony_ci生成获取mediaKeySystem设备证书的请求。 749e41f4b71Sopenharmony_ci 750e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 751e41f4b71Sopenharmony_ci 752e41f4b71Sopenharmony_ci**返回值:** 753e41f4b71Sopenharmony_ci 754e41f4b71Sopenharmony_ci| 类型 | 说明 | 755e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 756e41f4b71Sopenharmony_ci| Promise<[ProvisionRequest](#provisionrequest)\> | Promise对象,mediaKeySystem设备证书的请求。设备上如果已存在设备证书,会返回失败。 | 757e41f4b71Sopenharmony_ci 758e41f4b71Sopenharmony_ci**错误码:** 759e41f4b71Sopenharmony_ci 760e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 761e41f4b71Sopenharmony_ci 762e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 763e41f4b71Sopenharmony_ci| --------------- | --------------- | 764e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 765e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 766e41f4b71Sopenharmony_ci 767e41f4b71Sopenharmony_ci**示例:** 768e41f4b71Sopenharmony_ci 769e41f4b71Sopenharmony_ci```ts 770e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 771e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 772e41f4b71Sopenharmony_ci 773e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 774e41f4b71Sopenharmony_ci// 设备上已有设备证书的情况下不需要调用 775e41f4b71Sopenharmony_cimediaKeySystem.generateKeySystemRequest().then((ProvisionRequest: drm.ProvisionRequest) => { 776e41f4b71Sopenharmony_ci console.log("generateKeySystemRequest"); 777e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 778e41f4b71Sopenharmony_ci console.error(`generateKeySystemRequest: ERROR: ${err}`); 779e41f4b71Sopenharmony_ci}); 780e41f4b71Sopenharmony_ci``` 781e41f4b71Sopenharmony_ci 782e41f4b71Sopenharmony_ci### processKeySystemResponse 783e41f4b71Sopenharmony_ci 784e41f4b71Sopenharmony_ciprocessKeySystemResponse(response: Uint8Array): Promise<void\> 785e41f4b71Sopenharmony_ci 786e41f4b71Sopenharmony_ci处理获得的设备证书请求的响应。 787e41f4b71Sopenharmony_ci 788e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 789e41f4b71Sopenharmony_ci 790e41f4b71Sopenharmony_ci**参数:** 791e41f4b71Sopenharmony_ci 792e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 793e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 794e41f4b71Sopenharmony_ci| response | Uint8Array | 是 | 设备证书响应。 | 795e41f4b71Sopenharmony_ci 796e41f4b71Sopenharmony_ci**返回值:** 797e41f4b71Sopenharmony_ci 798e41f4b71Sopenharmony_ci| 类型 | 说明 | 799e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 800e41f4b71Sopenharmony_ci| Promise<void\> | Promise对象。 | 801e41f4b71Sopenharmony_ci 802e41f4b71Sopenharmony_ci**错误码:** 803e41f4b71Sopenharmony_ci 804e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 805e41f4b71Sopenharmony_ci 806e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 807e41f4b71Sopenharmony_ci| --------------- | --------------- | 808e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. | 809e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 810e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 811e41f4b71Sopenharmony_ci 812e41f4b71Sopenharmony_ci**示例:** 813e41f4b71Sopenharmony_ci 814e41f4b71Sopenharmony_ci```ts 815e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 816e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 817e41f4b71Sopenharmony_ci 818e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 819e41f4b71Sopenharmony_ci// keySystemResponse是从DRM服务获取的设备证书响应,请按实际值传入; 820e41f4b71Sopenharmony_cilet keySystemResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 821e41f4b71Sopenharmony_cimediaKeySystem.processKeySystemResponse(keySystemResponse).then(() => { 822e41f4b71Sopenharmony_ci console.log("processKeySystemResponse"); 823e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 824e41f4b71Sopenharmony_ci console.error(`processKeySystemResponse: ERROR: ${err}`); 825e41f4b71Sopenharmony_ci}); 826e41f4b71Sopenharmony_ci``` 827e41f4b71Sopenharmony_ci 828e41f4b71Sopenharmony_ci### getCertificateStatus 829e41f4b71Sopenharmony_ci 830e41f4b71Sopenharmony_cigetCertificateStatus():CertificateStatus 831e41f4b71Sopenharmony_ci 832e41f4b71Sopenharmony_ci获取设备证书状态值。 833e41f4b71Sopenharmony_ci 834e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 835e41f4b71Sopenharmony_ci 836e41f4b71Sopenharmony_ci**返回值:** 837e41f4b71Sopenharmony_ci 838e41f4b71Sopenharmony_ci| 类型 | 说明 | 839e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 840e41f4b71Sopenharmony_ci| [CertificateStatus](#certificatestatus) | 设备证书状态值。 | 841e41f4b71Sopenharmony_ci 842e41f4b71Sopenharmony_ci**错误码:** 843e41f4b71Sopenharmony_ci 844e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 845e41f4b71Sopenharmony_ci 846e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 847e41f4b71Sopenharmony_ci| --------------- | --------------- | 848e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 849e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 850e41f4b71Sopenharmony_ci 851e41f4b71Sopenharmony_ci**示例:** 852e41f4b71Sopenharmony_ci 853e41f4b71Sopenharmony_ci```ts 854e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 855e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 856e41f4b71Sopenharmony_ci 857e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 858e41f4b71Sopenharmony_citry { 859e41f4b71Sopenharmony_ci let certificateStatus: drm.CertificateStatus = mediaKeySystem.getCertificateStatus(); 860e41f4b71Sopenharmony_ci} catch (err) { 861e41f4b71Sopenharmony_ci let error = err as BusinessError; 862e41f4b71Sopenharmony_ci console.error(`getCertificateStatus ERROR: ${error}`); 863e41f4b71Sopenharmony_ci} 864e41f4b71Sopenharmony_ci``` 865e41f4b71Sopenharmony_ci 866e41f4b71Sopenharmony_ci### on('keySystemRequired') 867e41f4b71Sopenharmony_ci 868e41f4b71Sopenharmony_cion(type: 'keySystemRequired', callback: (eventInfo: EventInfo) => void): void 869e41f4b71Sopenharmony_ci 870e41f4b71Sopenharmony_ci监听设备证书请求事件,获取事件信息。 871e41f4b71Sopenharmony_ci 872e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 873e41f4b71Sopenharmony_ci 874e41f4b71Sopenharmony_ci**参数:** 875e41f4b71Sopenharmony_ci 876e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 877e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 878e41f4b71Sopenharmony_ci| type | string | 是 | 事件类型,MediaKeySystem实例创建成功后可监听,需要设备证书时触发该事件。 | 879e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 是 | 回调函数,返回事件信息。只要有该事件返回就证明需请求设备证书。 | 880e41f4b71Sopenharmony_ci 881e41f4b71Sopenharmony_ci**错误码:** 882e41f4b71Sopenharmony_ci 883e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 884e41f4b71Sopenharmony_ci 885e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 886e41f4b71Sopenharmony_ci| --------------- | --------------- | 887e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 888e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 889e41f4b71Sopenharmony_ci 890e41f4b71Sopenharmony_ci**示例:** 891e41f4b71Sopenharmony_ci 892e41f4b71Sopenharmony_ci```ts 893e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 894e41f4b71Sopenharmony_ci 895e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 896e41f4b71Sopenharmony_cimediaKeySystem.on('keySystemRequired', (eventInfo: drm.EventInfo) => { 897e41f4b71Sopenharmony_ci console.log('keySystemRequired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info); 898e41f4b71Sopenharmony_ci}); 899e41f4b71Sopenharmony_ci``` 900e41f4b71Sopenharmony_ci 901e41f4b71Sopenharmony_ci### off('keySystemRequired') 902e41f4b71Sopenharmony_ci 903e41f4b71Sopenharmony_cioff(type: 'keySystemRequired', callback?: (eventInfo: EventInfo) => void): void 904e41f4b71Sopenharmony_ci 905e41f4b71Sopenharmony_ci注销设备证书请求事件的监听。 906e41f4b71Sopenharmony_ci 907e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 908e41f4b71Sopenharmony_ci 909e41f4b71Sopenharmony_ci**参数:** 910e41f4b71Sopenharmony_ci 911e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 912e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 913e41f4b71Sopenharmony_ci| type | string | 是 | 监听事件类型,MediaKeySystem实例创建成功后可监听。 | 914e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 否 | 回调函数,返回事件信息。可选。 | 915e41f4b71Sopenharmony_ci 916e41f4b71Sopenharmony_ci**错误码:** 917e41f4b71Sopenharmony_ci 918e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 919e41f4b71Sopenharmony_ci 920e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 921e41f4b71Sopenharmony_ci| --------------- | --------------- | 922e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 923e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 924e41f4b71Sopenharmony_ci 925e41f4b71Sopenharmony_ci**示例:** 926e41f4b71Sopenharmony_ci 927e41f4b71Sopenharmony_ci```ts 928e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 929e41f4b71Sopenharmony_cimediaKeySystem.off('keySystemRequired'); 930e41f4b71Sopenharmony_ci``` 931e41f4b71Sopenharmony_ci 932e41f4b71Sopenharmony_ci### createMediaKeySession 933e41f4b71Sopenharmony_ci 934e41f4b71Sopenharmony_cicreateMediaKeySession(level: ContentProtectionLevel): MediaKeySession 935e41f4b71Sopenharmony_ci 936e41f4b71Sopenharmony_ci创建指定内容保护级别的MediaKeySession实例。 937e41f4b71Sopenharmony_ci 938e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 939e41f4b71Sopenharmony_ci 940e41f4b71Sopenharmony_ci**参数:** 941e41f4b71Sopenharmony_ci 942e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 943e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 944e41f4b71Sopenharmony_ci| level | [ContentProtectionLevel](#contentprotectionlevel) | 是 | 内容保护级别。 | 945e41f4b71Sopenharmony_ci 946e41f4b71Sopenharmony_ci**返回值:** 947e41f4b71Sopenharmony_ci 948e41f4b71Sopenharmony_ci| 类型 | 说明 | 949e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 950e41f4b71Sopenharmony_ci| [MediaKeySession](#mediakeysession) | MediaKeySession实例。 | 951e41f4b71Sopenharmony_ci 952e41f4b71Sopenharmony_ci**错误码:** 953e41f4b71Sopenharmony_ci 954e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 955e41f4b71Sopenharmony_ci 956e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 957e41f4b71Sopenharmony_ci| --------------- | --------------- | 958e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.The param level exceeds reasonable range, please use value in ContentProtectionLevel. | 959e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 960e41f4b71Sopenharmony_ci| 24700104 | Meet max MediaKeySession num limit | 961e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 962e41f4b71Sopenharmony_ci 963e41f4b71Sopenharmony_ci**示例:** 964e41f4b71Sopenharmony_ci 965e41f4b71Sopenharmony_ci```ts 966e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 967e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 968e41f4b71Sopenharmony_ci 969e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 970e41f4b71Sopenharmony_citry { 971e41f4b71Sopenharmony_ci let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO); 972e41f4b71Sopenharmony_ci} catch (err) { 973e41f4b71Sopenharmony_ci let error = err as BusinessError; 974e41f4b71Sopenharmony_ci console.error(`createMediaKeySession ERROR: ${error}`); 975e41f4b71Sopenharmony_ci} 976e41f4b71Sopenharmony_ci``` 977e41f4b71Sopenharmony_ci 978e41f4b71Sopenharmony_ci### createMediaKeySession 979e41f4b71Sopenharmony_ci 980e41f4b71Sopenharmony_cicreateMediaKeySession(): MediaKeySession 981e41f4b71Sopenharmony_ci 982e41f4b71Sopenharmony_ci创建DRM解决方案默认内容保护级别的MediaKeySession实例。 983e41f4b71Sopenharmony_ci 984e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 985e41f4b71Sopenharmony_ci 986e41f4b71Sopenharmony_ci**返回值:** 987e41f4b71Sopenharmony_ci 988e41f4b71Sopenharmony_ci| 类型 | 说明 | 989e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 990e41f4b71Sopenharmony_ci| [MediaKeySession](#mediakeysession) | MediaKeySession实例。 | 991e41f4b71Sopenharmony_ci 992e41f4b71Sopenharmony_ci**错误码:** 993e41f4b71Sopenharmony_ci 994e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 995e41f4b71Sopenharmony_ci 996e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 997e41f4b71Sopenharmony_ci| --------------- | --------------- | 998e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 999e41f4b71Sopenharmony_ci| 24700104 | Meet max MediaKeySession num limit | 1000e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1001e41f4b71Sopenharmony_ci 1002e41f4b71Sopenharmony_ci**示例:** 1003e41f4b71Sopenharmony_ci 1004e41f4b71Sopenharmony_ci```ts 1005e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1006e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1007e41f4b71Sopenharmony_ci 1008e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1009e41f4b71Sopenharmony_citry { 1010e41f4b71Sopenharmony_ci let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1011e41f4b71Sopenharmony_ci} catch (err) { 1012e41f4b71Sopenharmony_ci let error = err as BusinessError; 1013e41f4b71Sopenharmony_ci console.error(`createMediaKeySession ERROR: ${error}`); 1014e41f4b71Sopenharmony_ci} 1015e41f4b71Sopenharmony_ci``` 1016e41f4b71Sopenharmony_ci 1017e41f4b71Sopenharmony_ci### getOfflineMediaKeyIds 1018e41f4b71Sopenharmony_ci 1019e41f4b71Sopenharmony_cigetOfflineMediaKeyIds(): Uint8Array[] 1020e41f4b71Sopenharmony_ci 1021e41f4b71Sopenharmony_ci获取离线媒体密钥标识列表。 1022e41f4b71Sopenharmony_ci 1023e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1024e41f4b71Sopenharmony_ci 1025e41f4b71Sopenharmony_ci 1026e41f4b71Sopenharmony_ci**返回值:** 1027e41f4b71Sopenharmony_ci 1028e41f4b71Sopenharmony_ci| 类型 | 说明 | 1029e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1030e41f4b71Sopenharmony_ci| Uint8Array[] | 离线媒体密钥标识列表。 | 1031e41f4b71Sopenharmony_ci 1032e41f4b71Sopenharmony_ci**错误码:** 1033e41f4b71Sopenharmony_ci 1034e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1035e41f4b71Sopenharmony_ci 1036e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1037e41f4b71Sopenharmony_ci| --------------- | --------------- | 1038e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1039e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1040e41f4b71Sopenharmony_ci 1041e41f4b71Sopenharmony_ci**示例:** 1042e41f4b71Sopenharmony_ci 1043e41f4b71Sopenharmony_ci```ts 1044e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1045e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1046e41f4b71Sopenharmony_ci 1047e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1048e41f4b71Sopenharmony_citry { 1049e41f4b71Sopenharmony_ci let offlineMediaKeyIds: Uint8Array[] = mediaKeySystem.getOfflineMediaKeyIds(); 1050e41f4b71Sopenharmony_ci} catch (err) { 1051e41f4b71Sopenharmony_ci let error = err as BusinessError; 1052e41f4b71Sopenharmony_ci console.error(`getOfflineMediaKeyIds ERROR: ${error}`); 1053e41f4b71Sopenharmony_ci} 1054e41f4b71Sopenharmony_ci``` 1055e41f4b71Sopenharmony_ci 1056e41f4b71Sopenharmony_ci### getOfflineMediaKeyStatus 1057e41f4b71Sopenharmony_ci 1058e41f4b71Sopenharmony_cigetOfflineMediaKeyStatus(mediaKeyId: Uint8Array): OfflineMediaKeyStatus 1059e41f4b71Sopenharmony_ci 1060e41f4b71Sopenharmony_ci获取指定离线媒体密钥标识的媒体密钥的状态值。 1061e41f4b71Sopenharmony_ci 1062e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1063e41f4b71Sopenharmony_ci 1064e41f4b71Sopenharmony_ci**参数:** 1065e41f4b71Sopenharmony_ci 1066e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1067e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1068e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array | 是 | 离线媒体密钥标识。 | 1069e41f4b71Sopenharmony_ci 1070e41f4b71Sopenharmony_ci**返回值:** 1071e41f4b71Sopenharmony_ci 1072e41f4b71Sopenharmony_ci| 类型 | 说明 | 1073e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1074e41f4b71Sopenharmony_ci| [OfflineMediaKeyStatus](#offlinemediakeystatus) | 离线媒体密钥状态值。 | 1075e41f4b71Sopenharmony_ci 1076e41f4b71Sopenharmony_ci**错误码:** 1077e41f4b71Sopenharmony_ci 1078e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1079e41f4b71Sopenharmony_ci 1080e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1081e41f4b71Sopenharmony_ci| --------------- | --------------- | 1082e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. | 1083e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1084e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1085e41f4b71Sopenharmony_ci 1086e41f4b71Sopenharmony_ci**示例:** 1087e41f4b71Sopenharmony_ci 1088e41f4b71Sopenharmony_ci```ts 1089e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1090e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1091e41f4b71Sopenharmony_ci 1092e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1093e41f4b71Sopenharmony_ci// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入 1094e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 1095e41f4b71Sopenharmony_citry { 1096e41f4b71Sopenharmony_ci let configValue: drm.OfflineMediaKeyStatus = mediaKeySystem.getOfflineMediaKeyStatus(mediaKeyId); 1097e41f4b71Sopenharmony_ci} catch (err) { 1098e41f4b71Sopenharmony_ci let error = err as BusinessError; 1099e41f4b71Sopenharmony_ci console.error(`getOfflineMediaKeyStatus ERROR: ${error}`); 1100e41f4b71Sopenharmony_ci} 1101e41f4b71Sopenharmony_ci``` 1102e41f4b71Sopenharmony_ci 1103e41f4b71Sopenharmony_ci### clearOfflineMediaKeys 1104e41f4b71Sopenharmony_ci 1105e41f4b71Sopenharmony_ciclearOfflineMediaKeys(mediaKeyId: Uint8Array): void 1106e41f4b71Sopenharmony_ci 1107e41f4b71Sopenharmony_ci删除指定媒体密钥标识的离线媒体密钥。 1108e41f4b71Sopenharmony_ci 1109e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1110e41f4b71Sopenharmony_ci 1111e41f4b71Sopenharmony_ci**参数:** 1112e41f4b71Sopenharmony_ci 1113e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1114e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1115e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array | 是 | 离线媒体密钥标识。 | 1116e41f4b71Sopenharmony_ci 1117e41f4b71Sopenharmony_ci**错误码:** 1118e41f4b71Sopenharmony_ci 1119e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1120e41f4b71Sopenharmony_ci 1121e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1122e41f4b71Sopenharmony_ci| --------------- | --------------- | 1123e41f4b71Sopenharmony_ci| 401 | The parameter check failed.Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 1124e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1125e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1126e41f4b71Sopenharmony_ci 1127e41f4b71Sopenharmony_ci**示例:** 1128e41f4b71Sopenharmony_ci 1129e41f4b71Sopenharmony_ci```ts 1130e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1131e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1132e41f4b71Sopenharmony_ci 1133e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1134e41f4b71Sopenharmony_ci// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入 1135e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 1136e41f4b71Sopenharmony_citry { 1137e41f4b71Sopenharmony_ci mediaKeySystem.clearOfflineMediaKeys(mediaKeyId); 1138e41f4b71Sopenharmony_ci} catch (err) { 1139e41f4b71Sopenharmony_ci let error = err as BusinessError; 1140e41f4b71Sopenharmony_ci console.error(`clearOfflineMediaKeys ERROR: ${error}`); 1141e41f4b71Sopenharmony_ci} 1142e41f4b71Sopenharmony_ci``` 1143e41f4b71Sopenharmony_ci 1144e41f4b71Sopenharmony_ci### destroy 1145e41f4b71Sopenharmony_ci 1146e41f4b71Sopenharmony_cidestroy(): void 1147e41f4b71Sopenharmony_ci 1148e41f4b71Sopenharmony_ci销毁MediaKeySystem实例。 1149e41f4b71Sopenharmony_ci 1150e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1151e41f4b71Sopenharmony_ci 1152e41f4b71Sopenharmony_ci**错误码:** 1153e41f4b71Sopenharmony_ci 1154e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1155e41f4b71Sopenharmony_ci 1156e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1157e41f4b71Sopenharmony_ci| --------------- | --------------- | 1158e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1159e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1160e41f4b71Sopenharmony_ci 1161e41f4b71Sopenharmony_ci**示例:** 1162e41f4b71Sopenharmony_ci 1163e41f4b71Sopenharmony_ci```ts 1164e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1165e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1166e41f4b71Sopenharmony_ci 1167e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1168e41f4b71Sopenharmony_citry { 1169e41f4b71Sopenharmony_ci mediaKeySystem.destroy(); 1170e41f4b71Sopenharmony_ci} catch (err) { 1171e41f4b71Sopenharmony_ci let error = err as BusinessError; 1172e41f4b71Sopenharmony_ci console.error(`mediaKeySystem destroy ERROR: ${error}`); 1173e41f4b71Sopenharmony_ci} 1174e41f4b71Sopenharmony_ci``` 1175e41f4b71Sopenharmony_ci 1176e41f4b71Sopenharmony_ci## MediaKeySession 1177e41f4b71Sopenharmony_ci支持媒体密钥管理。在调用MediaKeySession方法之前,必须使用[createMediaKeySession](#createmediakeysession)获取一个MediaKeySession实例。 1178e41f4b71Sopenharmony_ci 1179e41f4b71Sopenharmony_ci### generateMediaKeyRequest 1180e41f4b71Sopenharmony_ci 1181e41f4b71Sopenharmony_cigenerateMediaKeyRequest(mimeType: string, initData: Uint8Array, mediaKeyType: number, options?: OptionsData[]): Promise<MediaKeyRequest\> 1182e41f4b71Sopenharmony_ci 1183e41f4b71Sopenharmony_ci生成媒体密钥请求。 1184e41f4b71Sopenharmony_ci 1185e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1186e41f4b71Sopenharmony_ci 1187e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1188e41f4b71Sopenharmony_ci 1189e41f4b71Sopenharmony_ci**参数:** 1190e41f4b71Sopenharmony_ci 1191e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1192e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1193e41f4b71Sopenharmony_ci| mimeType | string | 是 | 媒体类型,由DRM解决方案决定具体的支持类型。 | 1194e41f4b71Sopenharmony_ci| initData | Uint8Array | 是 | 初始数据。 | 1195e41f4b71Sopenharmony_ci| mediaKeyType| number | 是 | 媒体密钥类型。 | 0表示在线,1表示离线 | 1196e41f4b71Sopenharmony_ci| options | [OptionsData[]](#optionsdata) | 否 | 可选数据。 | 1197e41f4b71Sopenharmony_ci 1198e41f4b71Sopenharmony_ci**返回值:** 1199e41f4b71Sopenharmony_ci 1200e41f4b71Sopenharmony_ci| 类型 | 说明 | 1201e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1202e41f4b71Sopenharmony_ci| Promise<[MediaKeyRequest](#mediakeyrequest)\> | Promise对象,媒体密钥请求。 | 1203e41f4b71Sopenharmony_ci 1204e41f4b71Sopenharmony_ci**错误码:** 1205e41f4b71Sopenharmony_ci 1206e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1207e41f4b71Sopenharmony_ci 1208e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1209e41f4b71Sopenharmony_ci| --------------- | --------------- | 1210e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1211e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1212e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1213e41f4b71Sopenharmony_ci 1214e41f4b71Sopenharmony_ci**示例:** 1215e41f4b71Sopenharmony_ci 1216e41f4b71Sopenharmony_ci```ts 1217e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1218e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1219e41f4b71Sopenharmony_ci 1220e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1221e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1222e41f4b71Sopenharmony_ci// pssh数据为版权保护系统描述头,封装在加密码流中,mp4文件中位于pssh box、dash码流中位于mpd及mp4的pssh box、hls+ts的码流位于m3u8及每个ts片段中,请按实际值传入 1223e41f4b71Sopenharmony_cilet uint8pssh = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 1224e41f4b71Sopenharmony_cimediaKeySession.generateMediaKeyRequest("video/avc", uint8pssh, drm.MediaKeyType.MEDIA_KEY_TYPE_ONLINE).then((mediaKeyRequest: drm.MediaKeyRequest) =>{ 1225e41f4b71Sopenharmony_ci console.log('generateMediaKeyRequest' + mediaKeyRequest); 1226e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 1227e41f4b71Sopenharmony_ci console.error(`generateMediaKeyRequest: ERROR: ${err}`); 1228e41f4b71Sopenharmony_ci}); 1229e41f4b71Sopenharmony_ci``` 1230e41f4b71Sopenharmony_ci 1231e41f4b71Sopenharmony_ci### processMediaKeyResponse 1232e41f4b71Sopenharmony_ci 1233e41f4b71Sopenharmony_ciprocessMediaKeyResponse(response: Uint8Array): Promise<Uint8Array\> 1234e41f4b71Sopenharmony_ci 1235e41f4b71Sopenharmony_ci处理媒体密钥响应。 1236e41f4b71Sopenharmony_ci 1237e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1238e41f4b71Sopenharmony_ci 1239e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1240e41f4b71Sopenharmony_ci 1241e41f4b71Sopenharmony_ci**参数:** 1242e41f4b71Sopenharmony_ci 1243e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1244e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1245e41f4b71Sopenharmony_ci| response | Uint8Array | 是 | 媒体密钥响应。 | 1246e41f4b71Sopenharmony_ci 1247e41f4b71Sopenharmony_ci**返回值:** 1248e41f4b71Sopenharmony_ci 1249e41f4b71Sopenharmony_ci| 类型 | 说明 | 1250e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1251e41f4b71Sopenharmony_ci| Promise<Uint8Array\> | Promise对象,媒体密钥标识。 | 1252e41f4b71Sopenharmony_ci 1253e41f4b71Sopenharmony_ci**错误码:** 1254e41f4b71Sopenharmony_ci 1255e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1256e41f4b71Sopenharmony_ci 1257e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1258e41f4b71Sopenharmony_ci| --------------- | --------------- | 1259e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. | 1260e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1261e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1262e41f4b71Sopenharmony_ci 1263e41f4b71Sopenharmony_ci**示例:** 1264e41f4b71Sopenharmony_ci 1265e41f4b71Sopenharmony_ci```ts 1266e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1267e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1268e41f4b71Sopenharmony_ci 1269e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1270e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1271e41f4b71Sopenharmony_ci// mediaKeyResponse是从DRM服务获取的媒体密钥响应,按实际值填入 1272e41f4b71Sopenharmony_cilet mediaKeyResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 1273e41f4b71Sopenharmony_cimediaKeySession.processMediaKeyResponse(mediaKeyResponse).then((mediaKeyId: Uint8Array) => { 1274e41f4b71Sopenharmony_ci console.log('processMediaKeyResponse:' + mediaKeyId); 1275e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 1276e41f4b71Sopenharmony_ci console.error(`processMediaKeyResponse: ERROR: ${err}`); 1277e41f4b71Sopenharmony_ci}); 1278e41f4b71Sopenharmony_ci``` 1279e41f4b71Sopenharmony_ci 1280e41f4b71Sopenharmony_ci### checkMediaKeyStatus 1281e41f4b71Sopenharmony_ci 1282e41f4b71Sopenharmony_ci checkMediaKeyStatus(): MediaKeyStatus[] 1283e41f4b71Sopenharmony_ci 1284e41f4b71Sopenharmony_ci检查当前媒体密钥状态。 1285e41f4b71Sopenharmony_ci 1286e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1287e41f4b71Sopenharmony_ci 1288e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1289e41f4b71Sopenharmony_ci 1290e41f4b71Sopenharmony_ci**返回值:** 1291e41f4b71Sopenharmony_ci 1292e41f4b71Sopenharmony_ci| 类型 | 说明 | 1293e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1294e41f4b71Sopenharmony_ci| [MediaKeyStatus[]](#mediakeystatus) | 当前媒体密钥状态值。 | 1295e41f4b71Sopenharmony_ci 1296e41f4b71Sopenharmony_ci**错误码:** 1297e41f4b71Sopenharmony_ci 1298e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1299e41f4b71Sopenharmony_ci 1300e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1301e41f4b71Sopenharmony_ci| --------------- | --------------- | 1302e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1303e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1304e41f4b71Sopenharmony_ci 1305e41f4b71Sopenharmony_ci**示例:** 1306e41f4b71Sopenharmony_ci 1307e41f4b71Sopenharmony_ci```ts 1308e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1309e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1310e41f4b71Sopenharmony_ci 1311e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1312e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1313e41f4b71Sopenharmony_citry { 1314e41f4b71Sopenharmony_ci let keyStatus: drm.MediaKeyStatus[] = mediaKeySession.checkMediaKeyStatus(); 1315e41f4b71Sopenharmony_ci} catch (err) { 1316e41f4b71Sopenharmony_ci let error = err as BusinessError; 1317e41f4b71Sopenharmony_ci console.error(`checkMediaKeyStatus ERROR: ${error}`); 1318e41f4b71Sopenharmony_ci} 1319e41f4b71Sopenharmony_ci``` 1320e41f4b71Sopenharmony_ci 1321e41f4b71Sopenharmony_ci### clearMediaKeys 1322e41f4b71Sopenharmony_ci 1323e41f4b71Sopenharmony_ciclearMediaKeys(): void 1324e41f4b71Sopenharmony_ci 1325e41f4b71Sopenharmony_ci清除当前媒体密钥。 1326e41f4b71Sopenharmony_ci 1327e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1328e41f4b71Sopenharmony_ci 1329e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1330e41f4b71Sopenharmony_ci 1331e41f4b71Sopenharmony_ci**错误码:** 1332e41f4b71Sopenharmony_ci 1333e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1334e41f4b71Sopenharmony_ci 1335e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1336e41f4b71Sopenharmony_ci| --------------- | --------------- | 1337e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1338e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1339e41f4b71Sopenharmony_ci 1340e41f4b71Sopenharmony_ci**示例:** 1341e41f4b71Sopenharmony_ci 1342e41f4b71Sopenharmony_ci```ts 1343e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1344e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1345e41f4b71Sopenharmony_ci 1346e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1347e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1348e41f4b71Sopenharmony_ci// mediaKeyResponse是从DRM服务获取的媒体密钥响应,按实际值填入 1349e41f4b71Sopenharmony_cilet mediaKeyResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 1350e41f4b71Sopenharmony_cimediaKeySession.processMediaKeyResponse(mediaKeyResponse).then((mediaKeyId: Uint8Array) => { 1351e41f4b71Sopenharmony_ci console.log('processMediaKeyResponse:' + mediaKeyId); 1352e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 1353e41f4b71Sopenharmony_ci console.error(`processMediaKeyResponse: ERROR: ${err}`); 1354e41f4b71Sopenharmony_ci}); 1355e41f4b71Sopenharmony_citry { 1356e41f4b71Sopenharmony_ci mediaKeySession.clearMediaKeys(); 1357e41f4b71Sopenharmony_ci} catch (err) { 1358e41f4b71Sopenharmony_ci let error = err as BusinessError; 1359e41f4b71Sopenharmony_ci console.error(`clearMediaKeys ERROR: ${error}`); 1360e41f4b71Sopenharmony_ci} 1361e41f4b71Sopenharmony_ci``` 1362e41f4b71Sopenharmony_ci 1363e41f4b71Sopenharmony_ci### generateOfflineReleaseRequest 1364e41f4b71Sopenharmony_ci 1365e41f4b71Sopenharmony_cigenerateOfflineReleaseRequest(mediaKeyId: Uint8Array): Promise<Uint8Array\> 1366e41f4b71Sopenharmony_ci 1367e41f4b71Sopenharmony_ci生成离线媒体密钥释放请求。 1368e41f4b71Sopenharmony_ci 1369e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1370e41f4b71Sopenharmony_ci 1371e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1372e41f4b71Sopenharmony_ci 1373e41f4b71Sopenharmony_ci**参数:** 1374e41f4b71Sopenharmony_ci 1375e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1376e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1377e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array | 是 | 离线媒体密钥标识 | 1378e41f4b71Sopenharmony_ci 1379e41f4b71Sopenharmony_ci**返回值:** 1380e41f4b71Sopenharmony_ci 1381e41f4b71Sopenharmony_ci| 类型 | 说明 | 1382e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1383e41f4b71Sopenharmony_ci| Promise<Uint8Array\> | Promise对象,设备上的DRM解决方案支持离线媒体密钥释放处理,则返回离线媒体密钥释放请求。 | 1384e41f4b71Sopenharmony_ci 1385e41f4b71Sopenharmony_ci**错误码:** 1386e41f4b71Sopenharmony_ci 1387e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1388e41f4b71Sopenharmony_ci 1389e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1390e41f4b71Sopenharmony_ci| --------------- | --------------- | 1391e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1392e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1393e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1394e41f4b71Sopenharmony_ci 1395e41f4b71Sopenharmony_ci**示例:** 1396e41f4b71Sopenharmony_ci 1397e41f4b71Sopenharmony_ci```ts 1398e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1399e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1400e41f4b71Sopenharmony_ci 1401e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1402e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1403e41f4b71Sopenharmony_ci// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入 1404e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 1405e41f4b71Sopenharmony_cimediaKeySession.generateOfflineReleaseRequest(mediaKeyId).then((offlineReleaseRequest: Uint8Array) => { 1406e41f4b71Sopenharmony_ci console.log('generateOfflineReleaseRequest:' + offlineReleaseRequest); 1407e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 1408e41f4b71Sopenharmony_ci console.error(`generateOfflineReleaseRequest: ERROR: ${err}`); 1409e41f4b71Sopenharmony_ci}); 1410e41f4b71Sopenharmony_ci``` 1411e41f4b71Sopenharmony_ci 1412e41f4b71Sopenharmony_ci### processOfflineReleaseResponse 1413e41f4b71Sopenharmony_ci 1414e41f4b71Sopenharmony_ciprocessOfflineReleaseResponse(mediaKeyId: Uint8Array, response: Uint8Array): Promise<void\> 1415e41f4b71Sopenharmony_ci 1416e41f4b71Sopenharmony_ci处理离线媒体密钥释放响应。 1417e41f4b71Sopenharmony_ci 1418e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1419e41f4b71Sopenharmony_ci 1420e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1421e41f4b71Sopenharmony_ci 1422e41f4b71Sopenharmony_ci**参数:** 1423e41f4b71Sopenharmony_ci 1424e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1425e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1426e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array | 是 | 离线媒体密钥标识。 | 1427e41f4b71Sopenharmony_ci| response | Uint8Array | 是 | 离线媒体密钥释放响应。 | 1428e41f4b71Sopenharmony_ci 1429e41f4b71Sopenharmony_ci**返回值:** 1430e41f4b71Sopenharmony_ci 1431e41f4b71Sopenharmony_ci| 类型 | 说明 | 1432e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1433e41f4b71Sopenharmony_ci| Promise<void\> | Promise对象,设备上的DRM解决方案支持离线媒体密钥释放处理,则返回。 | 1434e41f4b71Sopenharmony_ci 1435e41f4b71Sopenharmony_ci**错误码:** 1436e41f4b71Sopenharmony_ci 1437e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1438e41f4b71Sopenharmony_ci 1439e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1440e41f4b71Sopenharmony_ci| --------------- | --------------- | 1441e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1442e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1443e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1444e41f4b71Sopenharmony_ci 1445e41f4b71Sopenharmony_ci**示例:** 1446e41f4b71Sopenharmony_ci 1447e41f4b71Sopenharmony_ci```ts 1448e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1449e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1450e41f4b71Sopenharmony_ci 1451e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1452e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1453e41f4b71Sopenharmony_ci// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际长度申请内存 1454e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 1455e41f4b71Sopenharmony_cimediaKeySession.generateOfflineReleaseRequest(mediaKeyId).then((offlineReleaseRequest: Uint8Array) => { 1456e41f4b71Sopenharmony_ci console.log('generateOfflineReleaseRequest:' + offlineReleaseRequest); 1457e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 1458e41f4b71Sopenharmony_ci console.error(`generateOfflineReleaseRequest: ERROR: ${err}`); 1459e41f4b71Sopenharmony_ci}); 1460e41f4b71Sopenharmony_ci// offlineReleaseResponse是从DRM服务获取的离线媒体密钥释放响应,请按实际长度申请内存 1461e41f4b71Sopenharmony_cilet offlineReleaseResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 1462e41f4b71Sopenharmony_cimediaKeySession.processOfflineReleaseResponse(mediaKeyId, offlineReleaseResponse).then(() => { 1463e41f4b71Sopenharmony_ci console.log('processOfflineReleaseResponse'); 1464e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 1465e41f4b71Sopenharmony_ci console.error(`processOfflineReleaseResponse: ERROR: ${err}`); 1466e41f4b71Sopenharmony_ci}); 1467e41f4b71Sopenharmony_ci``` 1468e41f4b71Sopenharmony_ci 1469e41f4b71Sopenharmony_ci### restoreOfflineMediaKeys 1470e41f4b71Sopenharmony_ci 1471e41f4b71Sopenharmony_cirestoreOfflineMediaKeys(mediaKeyId: Uint8Array): Promise<void\> 1472e41f4b71Sopenharmony_ci 1473e41f4b71Sopenharmony_ci恢复离线媒体密钥。 1474e41f4b71Sopenharmony_ci 1475e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1476e41f4b71Sopenharmony_ci 1477e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1478e41f4b71Sopenharmony_ci 1479e41f4b71Sopenharmony_ci**参数:** 1480e41f4b71Sopenharmony_ci 1481e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1482e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1483e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array | 是 | 离线媒体密钥标识。 | 1484e41f4b71Sopenharmony_ci 1485e41f4b71Sopenharmony_ci**返回值:** 1486e41f4b71Sopenharmony_ci 1487e41f4b71Sopenharmony_ci| 类型 | 说明 | 1488e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1489e41f4b71Sopenharmony_ci| Promise<void\> | Promise对象。 | 1490e41f4b71Sopenharmony_ci 1491e41f4b71Sopenharmony_ci**错误码:** 1492e41f4b71Sopenharmony_ci 1493e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1494e41f4b71Sopenharmony_ci 1495e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1496e41f4b71Sopenharmony_ci| --------------- | --------------- | 1497e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1498e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1499e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1500e41f4b71Sopenharmony_ci 1501e41f4b71Sopenharmony_ci**示例:** 1502e41f4b71Sopenharmony_ci 1503e41f4b71Sopenharmony_ci```ts 1504e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1505e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1506e41f4b71Sopenharmony_ci 1507e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1508e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1509e41f4b71Sopenharmony_ci// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际数据传入 1510e41f4b71Sopenharmony_cilet mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 1511e41f4b71Sopenharmony_cimediaKeySession.restoreOfflineMediaKeys(mediaKeyId).then(() => { 1512e41f4b71Sopenharmony_ci console.log("restoreOfflineMediaKeys"); 1513e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 1514e41f4b71Sopenharmony_ci console.error(`restoreOfflineMediaKeys: ERROR: ${err}`); 1515e41f4b71Sopenharmony_ci}); 1516e41f4b71Sopenharmony_ci``` 1517e41f4b71Sopenharmony_ci 1518e41f4b71Sopenharmony_ci### getContentProtectionLevel 1519e41f4b71Sopenharmony_ci 1520e41f4b71Sopenharmony_cigetContentProtectionLevel(): ContentProtectionLevel 1521e41f4b71Sopenharmony_ci 1522e41f4b71Sopenharmony_ci获取当前会话的内容保护级别。 1523e41f4b71Sopenharmony_ci 1524e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1525e41f4b71Sopenharmony_ci 1526e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1527e41f4b71Sopenharmony_ci 1528e41f4b71Sopenharmony_ci**返回值:** 1529e41f4b71Sopenharmony_ci 1530e41f4b71Sopenharmony_ci| 类型 | 说明 | 1531e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1532e41f4b71Sopenharmony_ci| [ContentProtectionLevel](#contentprotectionlevel) | 返回当前会话内容保护级别。 | 1533e41f4b71Sopenharmony_ci 1534e41f4b71Sopenharmony_ci**错误码:** 1535e41f4b71Sopenharmony_ci 1536e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1537e41f4b71Sopenharmony_ci 1538e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1539e41f4b71Sopenharmony_ci| --------------- | --------------- | 1540e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1541e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1542e41f4b71Sopenharmony_ci 1543e41f4b71Sopenharmony_ci**示例:** 1544e41f4b71Sopenharmony_ci 1545e41f4b71Sopenharmony_ci```ts 1546e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1547e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1548e41f4b71Sopenharmony_ci 1549e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1550e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1551e41f4b71Sopenharmony_citry { 1552e41f4b71Sopenharmony_ci let contentProtectionLevel: drm.ContentProtectionLevel = mediaKeySession.getContentProtectionLevel(); 1553e41f4b71Sopenharmony_ci} catch (err) { 1554e41f4b71Sopenharmony_ci let error = err as BusinessError; 1555e41f4b71Sopenharmony_ci console.error(`getContentProtectionLevel ERROR: ${error}`); 1556e41f4b71Sopenharmony_ci} 1557e41f4b71Sopenharmony_ci``` 1558e41f4b71Sopenharmony_ci 1559e41f4b71Sopenharmony_ci### requireSecureDecoderModule 1560e41f4b71Sopenharmony_ci 1561e41f4b71Sopenharmony_cirequireSecureDecoderModule(mimeType: string): boolean 1562e41f4b71Sopenharmony_ci 1563e41f4b71Sopenharmony_ci是否需要安全解码。 1564e41f4b71Sopenharmony_ci 1565e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1566e41f4b71Sopenharmony_ci 1567e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1568e41f4b71Sopenharmony_ci 1569e41f4b71Sopenharmony_ci**参数:** 1570e41f4b71Sopenharmony_ci 1571e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1572e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1573e41f4b71Sopenharmony_ci| mimeType | string | 是 | 媒体类型,由DRM解决方案决定具体的支持类型。 | 1574e41f4b71Sopenharmony_ci 1575e41f4b71Sopenharmony_ci**返回值:** 1576e41f4b71Sopenharmony_ci 1577e41f4b71Sopenharmony_ci| 类型 | 说明 | 1578e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1579e41f4b71Sopenharmony_ci| boolean | 是否需要安全解码,true表示需要安全解码,false表示不需要安全解码。 | 1580e41f4b71Sopenharmony_ci 1581e41f4b71Sopenharmony_ci**错误码:** 1582e41f4b71Sopenharmony_ci 1583e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1584e41f4b71Sopenharmony_ci 1585e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1586e41f4b71Sopenharmony_ci| --------------- | --------------- | 1587e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1588e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1589e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1590e41f4b71Sopenharmony_ci 1591e41f4b71Sopenharmony_ci**示例:** 1592e41f4b71Sopenharmony_ci 1593e41f4b71Sopenharmony_ci```ts 1594e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1595e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1596e41f4b71Sopenharmony_ci 1597e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1598e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1599e41f4b71Sopenharmony_citry { 1600e41f4b71Sopenharmony_ci let status: boolean = mediaKeySession.requireSecureDecoderModule("video/avc"); 1601e41f4b71Sopenharmony_ci} catch (err) { 1602e41f4b71Sopenharmony_ci let error = err as BusinessError; 1603e41f4b71Sopenharmony_ci console.error(`requireSecureDecoderModule ERROR: ${error}`); 1604e41f4b71Sopenharmony_ci} 1605e41f4b71Sopenharmony_ci``` 1606e41f4b71Sopenharmony_ci 1607e41f4b71Sopenharmony_ci### on('keyRequired') 1608e41f4b71Sopenharmony_ci 1609e41f4b71Sopenharmony_cion(type: 'keyRequired', callback: (eventInfo: EventInfo) => void): void 1610e41f4b71Sopenharmony_ci 1611e41f4b71Sopenharmony_ci监听密钥请求事件。 1612e41f4b71Sopenharmony_ci 1613e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1614e41f4b71Sopenharmony_ci 1615e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1616e41f4b71Sopenharmony_ci 1617e41f4b71Sopenharmony_ci**参数:** 1618e41f4b71Sopenharmony_ci 1619e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1620e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1621e41f4b71Sopenharmony_ci| type | string | 是 | 事件类型,固定为'keyRequired',当播放DRM节目需要获取媒体密钥时触发。 | 1622e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 是 | 回调函数,返回事件信息。 | 1623e41f4b71Sopenharmony_ci 1624e41f4b71Sopenharmony_ci**错误码:** 1625e41f4b71Sopenharmony_ci 1626e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1627e41f4b71Sopenharmony_ci 1628e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1629e41f4b71Sopenharmony_ci| --------------- | --------------- | 1630e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1631e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1632e41f4b71Sopenharmony_ci 1633e41f4b71Sopenharmony_ci**示例:** 1634e41f4b71Sopenharmony_ci 1635e41f4b71Sopenharmony_ci```ts 1636e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1637e41f4b71Sopenharmony_ci 1638e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1639e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1640e41f4b71Sopenharmony_cimediaKeySession.on('keyRequired', (eventInfo: drm.EventInfo) => { 1641e41f4b71Sopenharmony_ci console.log('keyRequired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info); 1642e41f4b71Sopenharmony_ci}); 1643e41f4b71Sopenharmony_ci``` 1644e41f4b71Sopenharmony_ci 1645e41f4b71Sopenharmony_ci### off('keyRequired') 1646e41f4b71Sopenharmony_ci 1647e41f4b71Sopenharmony_cioff(type: 'keyRequired', callback?: (eventInfo: EventInfo) => void): void 1648e41f4b71Sopenharmony_ci 1649e41f4b71Sopenharmony_ci注销密钥请求事件监听。 1650e41f4b71Sopenharmony_ci 1651e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1652e41f4b71Sopenharmony_ci 1653e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1654e41f4b71Sopenharmony_ci 1655e41f4b71Sopenharmony_ci**参数:** 1656e41f4b71Sopenharmony_ci 1657e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1658e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1659e41f4b71Sopenharmony_ci| type | string | 是 | 监听事件类型,固定为'keyRequired'。 | 1660e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 否 | 回调函数,返回事件信息。可选。 | 1661e41f4b71Sopenharmony_ci 1662e41f4b71Sopenharmony_ci**错误码:** 1663e41f4b71Sopenharmony_ci 1664e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1665e41f4b71Sopenharmony_ci 1666e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1667e41f4b71Sopenharmony_ci| --------------- | --------------- | 1668e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1669e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1670e41f4b71Sopenharmony_ci 1671e41f4b71Sopenharmony_ci**示例:** 1672e41f4b71Sopenharmony_ci 1673e41f4b71Sopenharmony_ci```ts 1674e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1675e41f4b71Sopenharmony_ci 1676e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1677e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1678e41f4b71Sopenharmony_cimediaKeySession.off('keyRequired'); 1679e41f4b71Sopenharmony_ci``` 1680e41f4b71Sopenharmony_ci 1681e41f4b71Sopenharmony_ci### on('keyExpired') 1682e41f4b71Sopenharmony_ci 1683e41f4b71Sopenharmony_cion(type: 'keyExpired', callback: (eventInfo: EventInfo) => void): void 1684e41f4b71Sopenharmony_ci 1685e41f4b71Sopenharmony_ci监听密钥过期事件。 1686e41f4b71Sopenharmony_ci 1687e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1688e41f4b71Sopenharmony_ci 1689e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1690e41f4b71Sopenharmony_ci 1691e41f4b71Sopenharmony_ci**参数:** 1692e41f4b71Sopenharmony_ci 1693e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1694e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1695e41f4b71Sopenharmony_ci| type | string | 是 | 监听事件类型,固定为'keyExpired'。密钥过期时触发。 | 1696e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 是 | 回调函数,返回事件信息。 | 1697e41f4b71Sopenharmony_ci 1698e41f4b71Sopenharmony_ci**错误码:** 1699e41f4b71Sopenharmony_ci 1700e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1701e41f4b71Sopenharmony_ci 1702e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1703e41f4b71Sopenharmony_ci| --------------- | --------------- | 1704e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1705e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1706e41f4b71Sopenharmony_ci 1707e41f4b71Sopenharmony_ci**示例:** 1708e41f4b71Sopenharmony_ci 1709e41f4b71Sopenharmony_ci```ts 1710e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1711e41f4b71Sopenharmony_ci 1712e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1713e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1714e41f4b71Sopenharmony_cimediaKeySession.on('keyExpired', (eventInfo: drm.EventInfo) => { 1715e41f4b71Sopenharmony_ci console.log('keyExpired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info); 1716e41f4b71Sopenharmony_ci}); 1717e41f4b71Sopenharmony_ci``` 1718e41f4b71Sopenharmony_ci 1719e41f4b71Sopenharmony_ci### off('keyExpired') 1720e41f4b71Sopenharmony_ci 1721e41f4b71Sopenharmony_cioff(type: 'keyExpired', callback?: (eventInfo: EventInfo) => void): void 1722e41f4b71Sopenharmony_ci 1723e41f4b71Sopenharmony_ci注销密钥过期事件监听。 1724e41f4b71Sopenharmony_ci 1725e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1726e41f4b71Sopenharmony_ci 1727e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1728e41f4b71Sopenharmony_ci 1729e41f4b71Sopenharmony_ci**参数:** 1730e41f4b71Sopenharmony_ci 1731e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1732e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1733e41f4b71Sopenharmony_ci| type | string | 是 | 监听事件类型,固定为'keyExpired'。 | 1734e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 否 | 回调函数,返回事件信息。可选。 | 1735e41f4b71Sopenharmony_ci 1736e41f4b71Sopenharmony_ci**错误码:** 1737e41f4b71Sopenharmony_ci 1738e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1739e41f4b71Sopenharmony_ci 1740e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1741e41f4b71Sopenharmony_ci| --------------- | --------------- | 1742e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1743e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1744e41f4b71Sopenharmony_ci 1745e41f4b71Sopenharmony_ci**示例:** 1746e41f4b71Sopenharmony_ci 1747e41f4b71Sopenharmony_ci```ts 1748e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1749e41f4b71Sopenharmony_ci 1750e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1751e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1752e41f4b71Sopenharmony_cimediaKeySession.off('keyExpired'); 1753e41f4b71Sopenharmony_ci``` 1754e41f4b71Sopenharmony_ci 1755e41f4b71Sopenharmony_ci### on('vendorDefined') 1756e41f4b71Sopenharmony_ci 1757e41f4b71Sopenharmony_cion(type: 'vendorDefined', callback: (eventInfo: EventInfo) => void): void 1758e41f4b71Sopenharmony_ci 1759e41f4b71Sopenharmony_ci监听DRM解决方案自定义事件。 1760e41f4b71Sopenharmony_ci 1761e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1762e41f4b71Sopenharmony_ci 1763e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1764e41f4b71Sopenharmony_ci 1765e41f4b71Sopenharmony_ci**参数:** 1766e41f4b71Sopenharmony_ci 1767e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1768e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1769e41f4b71Sopenharmony_ci| type | string | 是 | 监听事件,固定为'vendorDefined'。自定义事件发生时触发。 | 1770e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 是 | 回调函数,返回事件信息。 | 1771e41f4b71Sopenharmony_ci 1772e41f4b71Sopenharmony_ci**错误码:** 1773e41f4b71Sopenharmony_ci 1774e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1775e41f4b71Sopenharmony_ci 1776e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1777e41f4b71Sopenharmony_ci| --------------- | --------------- | 1778e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1779e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1780e41f4b71Sopenharmony_ci 1781e41f4b71Sopenharmony_ci**示例:** 1782e41f4b71Sopenharmony_ci 1783e41f4b71Sopenharmony_ci```ts 1784e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1785e41f4b71Sopenharmony_ci 1786e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1787e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1788e41f4b71Sopenharmony_cimediaKeySession.on('vendorDefined', (eventInfo: drm.EventInfo) => { 1789e41f4b71Sopenharmony_ci console.log('vendorDefined ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info); 1790e41f4b71Sopenharmony_ci}); 1791e41f4b71Sopenharmony_ci``` 1792e41f4b71Sopenharmony_ci 1793e41f4b71Sopenharmony_ci### off('vendorDefined') 1794e41f4b71Sopenharmony_ci 1795e41f4b71Sopenharmony_cioff(type: 'vendorDefined', callback?: (eventInfo: EventInfo) => void): void 1796e41f4b71Sopenharmony_ci 1797e41f4b71Sopenharmony_ci注销DRM解决方案自定义事件监听。 1798e41f4b71Sopenharmony_ci 1799e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1800e41f4b71Sopenharmony_ci 1801e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1802e41f4b71Sopenharmony_ci 1803e41f4b71Sopenharmony_ci**参数:** 1804e41f4b71Sopenharmony_ci 1805e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1806e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1807e41f4b71Sopenharmony_ci| type | string | 是 | 监听事件,固定为'vendorDefined'。 | 1808e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 否 | 回调函数,返回事件信息。可选。 | 1809e41f4b71Sopenharmony_ci 1810e41f4b71Sopenharmony_ci**错误码:** 1811e41f4b71Sopenharmony_ci 1812e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1813e41f4b71Sopenharmony_ci 1814e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1815e41f4b71Sopenharmony_ci| --------------- | --------------- | 1816e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1817e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1818e41f4b71Sopenharmony_ci 1819e41f4b71Sopenharmony_ci**示例:** 1820e41f4b71Sopenharmony_ci 1821e41f4b71Sopenharmony_ci```ts 1822e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1823e41f4b71Sopenharmony_ci 1824e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1825e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1826e41f4b71Sopenharmony_cimediaKeySession.off('vendorDefined'); 1827e41f4b71Sopenharmony_ci``` 1828e41f4b71Sopenharmony_ci 1829e41f4b71Sopenharmony_ci### on('expirationUpdate') 1830e41f4b71Sopenharmony_ci 1831e41f4b71Sopenharmony_cion(type: 'expirationUpdate', callback: (eventInfo: EventInfo) => void): void 1832e41f4b71Sopenharmony_ci 1833e41f4b71Sopenharmony_ci监听密钥过期更新事件。 1834e41f4b71Sopenharmony_ci 1835e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1836e41f4b71Sopenharmony_ci 1837e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1838e41f4b71Sopenharmony_ci 1839e41f4b71Sopenharmony_ci**参数:** 1840e41f4b71Sopenharmony_ci 1841e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1842e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1843e41f4b71Sopenharmony_ci| type | string | 是 | 监听事件类型,固定为'expirationUpdate'。密钥过期更新时触发。 | 1844e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 是 | 回调函数,返回事件信息。 | 1845e41f4b71Sopenharmony_ci 1846e41f4b71Sopenharmony_ci**错误码:** 1847e41f4b71Sopenharmony_ci 1848e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1849e41f4b71Sopenharmony_ci 1850e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1851e41f4b71Sopenharmony_ci| --------------- | --------------- | 1852e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1853e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1854e41f4b71Sopenharmony_ci 1855e41f4b71Sopenharmony_ci**示例:** 1856e41f4b71Sopenharmony_ci 1857e41f4b71Sopenharmony_ci```ts 1858e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1859e41f4b71Sopenharmony_ci 1860e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1861e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1862e41f4b71Sopenharmony_cimediaKeySession.on('expirationUpdate', (eventInfo: drm.EventInfo) => { 1863e41f4b71Sopenharmony_ci console.log('expirationUpdate ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info); 1864e41f4b71Sopenharmony_ci}); 1865e41f4b71Sopenharmony_ci``` 1866e41f4b71Sopenharmony_ci 1867e41f4b71Sopenharmony_ci### off('expirationUpdate') 1868e41f4b71Sopenharmony_ci 1869e41f4b71Sopenharmony_cioff(type: 'expirationUpdate', callback?: (eventInfo: EventInfo) => void): void 1870e41f4b71Sopenharmony_ci 1871e41f4b71Sopenharmony_ci注销过期更新事件监听。 1872e41f4b71Sopenharmony_ci 1873e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1874e41f4b71Sopenharmony_ci 1875e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1876e41f4b71Sopenharmony_ci 1877e41f4b71Sopenharmony_ci**参数:** 1878e41f4b71Sopenharmony_ci 1879e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1880e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1881e41f4b71Sopenharmony_ci| type | string | 是 | 监听事件类型,固定为'expirationUpdate'。 | 1882e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | 否 | 回调函数,返回事件信息。可选。 | 1883e41f4b71Sopenharmony_ci 1884e41f4b71Sopenharmony_ci**错误码:** 1885e41f4b71Sopenharmony_ci 1886e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1887e41f4b71Sopenharmony_ci 1888e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1889e41f4b71Sopenharmony_ci| --------------- | --------------- | 1890e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1891e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1892e41f4b71Sopenharmony_ci 1893e41f4b71Sopenharmony_ci**示例:** 1894e41f4b71Sopenharmony_ci 1895e41f4b71Sopenharmony_ci```ts 1896e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1897e41f4b71Sopenharmony_ci 1898e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1899e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1900e41f4b71Sopenharmony_cimediaKeySession.off('expirationUpdate'); 1901e41f4b71Sopenharmony_ci``` 1902e41f4b71Sopenharmony_ci 1903e41f4b71Sopenharmony_ci### on('keysChange') 1904e41f4b71Sopenharmony_ci 1905e41f4b71Sopenharmony_cion(type: 'keysChange', callback: (keyInfo: KeysInfo[], newKeyAvailable: boolean) => void): void 1906e41f4b71Sopenharmony_ci 1907e41f4b71Sopenharmony_ci监听密钥变化事件。 1908e41f4b71Sopenharmony_ci 1909e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1910e41f4b71Sopenharmony_ci 1911e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1912e41f4b71Sopenharmony_ci 1913e41f4b71Sopenharmony_ci**参数:** 1914e41f4b71Sopenharmony_ci 1915e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1916e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1917e41f4b71Sopenharmony_ci| type | string | 是 | 监听事件类型,固定为'keysChange'。密钥变化时触发。 | 1918e41f4b71Sopenharmony_ci| callback | Callback\<[KeysInfo[]](#keysinfo), boolean\> | 是 | 回调函数,返回事件信息,包含密钥标识和密钥状态描述的列表及密钥是否可用。 | 1919e41f4b71Sopenharmony_ci 1920e41f4b71Sopenharmony_ci**错误码:** 1921e41f4b71Sopenharmony_ci 1922e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1923e41f4b71Sopenharmony_ci 1924e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1925e41f4b71Sopenharmony_ci| --------------- | --------------- | 1926e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1927e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1928e41f4b71Sopenharmony_ci 1929e41f4b71Sopenharmony_ci**示例:** 1930e41f4b71Sopenharmony_ci 1931e41f4b71Sopenharmony_ci```ts 1932e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1933e41f4b71Sopenharmony_ci 1934e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1935e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1936e41f4b71Sopenharmony_cimediaKeySession.on('keysChange', (keyInfo: drm.KeysInfo[], newKeyAvailable: boolean) => { 1937e41f4b71Sopenharmony_ci for (let i = 0; i < keyInfo.length; i++) { 1938e41f4b71Sopenharmony_ci console.log('keysChange' + 'keyId:' + keyInfo[i].keyId + ' data:' + keyInfo[i].value); 1939e41f4b71Sopenharmony_ci } 1940e41f4b71Sopenharmony_ci}); 1941e41f4b71Sopenharmony_ci``` 1942e41f4b71Sopenharmony_ci 1943e41f4b71Sopenharmony_ci### off('keysChange') 1944e41f4b71Sopenharmony_ci 1945e41f4b71Sopenharmony_cioff(type: 'keysChange', callback?: (keyInfo: KeysInfo[], newKeyAvailable: boolean) => void): void 1946e41f4b71Sopenharmony_ci 1947e41f4b71Sopenharmony_ci注销密钥变化事件监听。 1948e41f4b71Sopenharmony_ci 1949e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1950e41f4b71Sopenharmony_ci 1951e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1952e41f4b71Sopenharmony_ci 1953e41f4b71Sopenharmony_ci**参数:** 1954e41f4b71Sopenharmony_ci 1955e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1956e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1957e41f4b71Sopenharmony_ci| type | string | 是 | 监听事件类型,固定为'keysChange'。 | 1958e41f4b71Sopenharmony_ci| callback | Callback\<[KeysInfo[]](#keysinfo), boolean\> | 否 | 回调函数,返回事件信息,包含密钥标识和密钥状态描述的列表及密钥是否可用。 | 1959e41f4b71Sopenharmony_ci 1960e41f4b71Sopenharmony_ci**错误码:** 1961e41f4b71Sopenharmony_ci 1962e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1963e41f4b71Sopenharmony_ci 1964e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1965e41f4b71Sopenharmony_ci| --------------- | --------------- | 1966e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified or too many parameters. 2.Incorrect parameter types. 3.Parameter verification failed. | 1967e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1968e41f4b71Sopenharmony_ci 1969e41f4b71Sopenharmony_ci**示例:** 1970e41f4b71Sopenharmony_ci 1971e41f4b71Sopenharmony_ci```ts 1972e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1973e41f4b71Sopenharmony_ci 1974e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 1975e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 1976e41f4b71Sopenharmony_cimediaKeySession.off('keysChange'); 1977e41f4b71Sopenharmony_ci``` 1978e41f4b71Sopenharmony_ci 1979e41f4b71Sopenharmony_ci### destroy 1980e41f4b71Sopenharmony_ci 1981e41f4b71Sopenharmony_cidestroy(): void 1982e41f4b71Sopenharmony_ci 1983e41f4b71Sopenharmony_ci销毁MediaKeySession实例。 1984e41f4b71Sopenharmony_ci 1985e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1986e41f4b71Sopenharmony_ci 1987e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Drm.Core 1988e41f4b71Sopenharmony_ci 1989e41f4b71Sopenharmony_ci**错误码:** 1990e41f4b71Sopenharmony_ci 1991e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 1992e41f4b71Sopenharmony_ci 1993e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1994e41f4b71Sopenharmony_ci| --------------- | --------------- | 1995e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1996e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1997e41f4b71Sopenharmony_ci 1998e41f4b71Sopenharmony_ci**示例:** 1999e41f4b71Sopenharmony_ci 2000e41f4b71Sopenharmony_ci```ts 2001e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 2002e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 2003e41f4b71Sopenharmony_ci 2004e41f4b71Sopenharmony_cilet mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 2005e41f4b71Sopenharmony_cilet mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(); 2006e41f4b71Sopenharmony_citry { 2007e41f4b71Sopenharmony_ci mediaKeySession.destroy(); 2008e41f4b71Sopenharmony_ci} catch (err) { 2009e41f4b71Sopenharmony_ci let error = err as BusinessError; 2010e41f4b71Sopenharmony_ci console.error(`mediaKeySession destroy ERROR: ${error}`); 2011e41f4b71Sopenharmony_ci} 2012e41f4b71Sopenharmony_ci 2013e41f4b71Sopenharmony_ci```