1e41f4b71Sopenharmony_ci# @ohos.multimedia.drm (Digital Rights Management) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciThe Digital Rights Management (DRM) framework provides APIs for you to develop digital rights management for your audio and video applications. You can call the DRM schemes (which exist as DRM plug-ins) provided by the system to implement the following features: 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci* DRM certificate management: generates provision requests and processes responses to these requests. Such a request/response exchange occurs between an application and a provisioning server to retrieve a DRM certificate. 6e41f4b71Sopenharmony_ci* DRM media key management: generates media key requests, processes responses to these requests, and manages offline media keys. Such a request/response exchange occurs between an application and a license server to obtain or release a media key, which is used to decrypt DRM-protected content. 7e41f4b71Sopenharmony_ci* DRM authorization: authorizes access to DRM-protected content based on media keys. 8e41f4b71Sopenharmony_ci* DRM decryption: decrypts DRM-protected content. 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci> **NOTE** 11e41f4b71Sopenharmony_ci> The initial APIs of this module are supported since API version 11. Newly added APIs will be marked with a superscript to indicate their earliest API version. 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci## Modules to Import 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci```ts 16e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 17e41f4b71Sopenharmony_ci``` 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci## DrmErrorCode 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ciEnumerates the DRM error codes. 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci| Name | Value | Description | 26e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 27e41f4b71Sopenharmony_ci| ERROR_UNKNOWN | 24700101 | Unknown error. | 28e41f4b71Sopenharmony_ci| MAX_SYSTEM_NUM_REACHED | 24700103 | The number of **MediaKeySystem** instances reaches the upper limit (64). | 29e41f4b71Sopenharmony_ci| MAX_SESSION_NUM_REACHED | 24700104 | The number of **MediaKeySession** instances reaches the upper limit (64). | 30e41f4b71Sopenharmony_ci| SERVICE_FATAL_ERROR | 24700201 | DRM service error. | 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci## PreDefinedConfigName 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ciEnumerates the names of predefined configuration items. 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci| Name | Value | Description | 39e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 40e41f4b71Sopenharmony_ci| CONFIG_DEVICE_VENDOR | 'vendor' | Plug-in vendor name, which corresponds to the value of **vendor** in the return value of [getConfigurationString](#getconfigurationstring). | 41e41f4b71Sopenharmony_ci| CONFIG_DEVICE_VERSION | 'version' | Plug-in version number, which corresponds to the value of **version** in the return value of [getConfigurationString](#getconfigurationstring). | 42e41f4b71Sopenharmony_ci| CONFIG_DEVICE_DESCRIPTION | 'description' | Device descriptor, which corresponds to the value of **description** in the return value of [getConfigurationString](#getconfigurationstring). | 43e41f4b71Sopenharmony_ci| CONFIG_DEVICE_ALGORITHMS | 'algorithms' | Supported algorithm names, which correspond to the value of **algorithms** in the return value of [getConfigurationString](#getconfigurationstring). | 44e41f4b71Sopenharmony_ci| CONFIG_DEVICE_UNIQUE_ID | 'deviceUniqueId' | Unique device ID, which corresponds to the value of **deviceUniqueId** in the return value of [getConfigurationByteArray](#getconfigurationbytearray). | 45e41f4b71Sopenharmony_ci| CONFIG_SESSION_MAX | 'maxSessionNum' | Maximum number of sessions supported by the device, which corresponds to the value of **maxSessionNum** in the return value of [getConfigurationString](#getconfigurationstring). | 46e41f4b71Sopenharmony_ci| CONFIG_SESSION_CURRENT | 'currentSessionNum' | Number of existing sessions, which corresponds to the value of **currentSessionNum** in the return value of [getConfigurationString](#getconfigurationstring). | 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci## MediaKeyType 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ciEnumerates the types of media keys. 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ci| Name | Value | Description | 55e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 56e41f4b71Sopenharmony_ci| MEDIA_KEY_TYPE_OFFLINE | 0 | Offline. | 57e41f4b71Sopenharmony_ci| MEDIA_KEY_TYPE_ONLINE | 1 | Online. | 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci## OfflineMediaKeyStatus 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ciEnumerates the statuses of offline media keys. 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci| Name | Value | Description | 66e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 67e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_UNKNOWN | 0 | Unknown status. | 68e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_USABLE | 1 | The media key is available. | 69e41f4b71Sopenharmony_ci| OFFLINE_MEDIA_KEY_STATUS_INACTIVE | 2 | The media key is inactive. | 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci## CertificateStatus 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ciEnumerates the statuses of DRM certificates. 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci| Name | Value | Description | 78e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 79e41f4b71Sopenharmony_ci| CERT_STATUS_PROVISIONED | 0 | A DRM certificate has been installed on the device. | 80e41f4b71Sopenharmony_ci| CERT_STATUS_NOT_PROVISIONED | 1 | No DRM certificate is installed on the device. | 81e41f4b71Sopenharmony_ci| CERT_STATUS_EXPIRED | 2 | The DRM certificate has expired. | 82e41f4b71Sopenharmony_ci| CERT_STATUS_INVALID | 3 | The DRM certificate is invalid. | 83e41f4b71Sopenharmony_ci| CERT_STATUS_UNAVAILABLE | 4 | The DRM certificate is unavailable. | 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci## MediaKeyRequestType 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ciEnumerates the types of media key requests. 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 90e41f4b71Sopenharmony_ci 91e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci| Name | Value | Description | 94e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 95e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_UNKNOWN | 0 | Unknown type. | 96e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_INITIAL | 1 | Initial request. | 97e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_RENEWAL | 2 | Renewal request. | 98e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_RELEASE | 3 | Release request. | 99e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_NONE | 4 | None. | 100e41f4b71Sopenharmony_ci| MEDIA_KEY_REQUEST_TYPE_UPDATE | 5 | Update request. | 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci## ContentProtectionLevel 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ciEnumerates the content protection levels. 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci| Name | Value | Description | 111e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------ | 112e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_UNKNOWN | 0 | Unknown content protection level. | 113e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_SW_CRYPTO | 1 | Software content protection level. | 114e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_HW_CRYPTO | 2 | Hardware content protection level. | 115e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_ENHANCED_HW | 3 | Enhanced hardware content protection level. | 116e41f4b71Sopenharmony_ci| CONTENT_PROTECTION_LEVEL_MAX | 4 | Highest content protection level. | 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci## ProvisionRequest 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ciDescribes a provision request, which is used to request a DRM certificate from a provisioning server. 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 125e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 126e41f4b71Sopenharmony_ci| data | Uint8Array | Yes | Data carried in the provision request. | 127e41f4b71Sopenharmony_ci| defaultURL | string | Yes | URL of the provisioning server (which provisions DRM certificates). | 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci## OptionsData 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ciDescribes the optional data carried in a media key request. 132e41f4b71Sopenharmony_ci 133e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 134e41f4b71Sopenharmony_ci 135e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 136e41f4b71Sopenharmony_ci 137e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 138e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 139e41f4b71Sopenharmony_ci| name | string | Yes | Name of the optional data. | 140e41f4b71Sopenharmony_ci| value | string | Yes | Value of the optional data. | 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci## MediaKeyRequest 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ciDescribes a media key request. 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 151e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 152e41f4b71Sopenharmony_ci| mediaKeyRequestType | [MediaKeyRequestType](#mediakeyrequesttype) | Yes | Type of the media key request. | 153e41f4b71Sopenharmony_ci| data | Uint8Array | Yes | Data carried in the media key request. | 154e41f4b71Sopenharmony_ci| defaultURL | string | Yes | URL of the license server (which provisions media keys). | 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci## EventInfo 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ciDescribes the event information. 159e41f4b71Sopenharmony_ci 160e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 165e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 166e41f4b71Sopenharmony_ci| info | Uint8Array | Yes | Event information. | 167e41f4b71Sopenharmony_ci| extraInfo | string | Yes | Extended event information. | 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci## StatisticKeyValue 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_ciDescribes the statistical information. 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 176e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 177e41f4b71Sopenharmony_ci| name | string | Yes | Name of the statistical item. | 178e41f4b71Sopenharmony_ci| value | string | Yes | Value of the statistical item. | 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ci## MediaKeyStatus 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ciDescribes the media key status. 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 189e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 190e41f4b71Sopenharmony_ci| name | string | Yes | Name of the media key status (such as the media key expiration time and content protection level). | 191e41f4b71Sopenharmony_ci| value | string | Yes | Value of the media key status. | 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ci## KeysInfo 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ciDescribes the information about media keys. 196e41f4b71Sopenharmony_ci 197e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 202e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 203e41f4b71Sopenharmony_ci| keyId | Uint8Array | Yes | Media key ID. | 204e41f4b71Sopenharmony_ci| value | string | Yes | Media key status. | 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci## MediaKeySystemInfo 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ciDescribes the DRM information, which is used to encrypt content. 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 215e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 216e41f4b71Sopenharmony_ci| uuid | string | Yes | UUID of the DRM content protection system. | 217e41f4b71Sopenharmony_ci| pssh | Uint8Array | Yes | Protection System Specific Header (PSSH) in the DRM information. | 218e41f4b71Sopenharmony_ci 219e41f4b71Sopenharmony_ci## MediaKeySystemDescription<sup>12+</sup> 220e41f4b71Sopenharmony_ci 221e41f4b71Sopenharmony_ciDescribes the plug-in information. 222e41f4b71Sopenharmony_ci 223e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 224e41f4b71Sopenharmony_ci 225e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 226e41f4b71Sopenharmony_ci| -------- | ----------------------------- |---- | ------------- | 227e41f4b71Sopenharmony_ci| name | string | Yes | Name of the plug-in. | 228e41f4b71Sopenharmony_ci| uuid | string | Yes | UUID of the plug-in. | 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci## drm.createMediaKeySystem 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_cicreateMediaKeySystem(name: string): MediaKeySystem 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ciCreates a **MediaKeySystem** instance. 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci**Parameters** 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 241e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 242e41f4b71Sopenharmony_ci| name | string | Yes | DRM scheme name. | 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_ci**Return value** 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ci| Type | Description | 247e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 248e41f4b71Sopenharmony_ci| [MediaKeySystem](#mediakeysystem) | **MediaKeySystem** instance. | 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci**Error codes** 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciChecks whether the device supports the specified DRM scheme. 279e41f4b71Sopenharmony_ci 280e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 281e41f4b71Sopenharmony_ci 282e41f4b71Sopenharmony_ci**Parameters** 283e41f4b71Sopenharmony_ci 284e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 285e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 286e41f4b71Sopenharmony_ci| name | string | Yes | DRM scheme name. | 287e41f4b71Sopenharmony_ci 288e41f4b71Sopenharmony_ci**Return value** 289e41f4b71Sopenharmony_ci 290e41f4b71Sopenharmony_ci| Type | Description | 291e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 292e41f4b71Sopenharmony_ci| boolean | Returns **true** if the device supports the DRM scheme; returns **false** otherwise. | 293e41f4b71Sopenharmony_ci 294e41f4b71Sopenharmony_ci**Error codes** 295e41f4b71Sopenharmony_ci 296e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 297e41f4b71Sopenharmony_ci 298e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciChecks whether the device supports the combination of the DRM scheme and MIME type. 324e41f4b71Sopenharmony_ci 325e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 326e41f4b71Sopenharmony_ci 327e41f4b71Sopenharmony_ci**Parameters** 328e41f4b71Sopenharmony_ci 329e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 330e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 331e41f4b71Sopenharmony_ci| name | string | Yes | DRM scheme name. | 332e41f4b71Sopenharmony_ci| mimeType | string | Yes | MIME type, which is determined by the DRM scheme. | 333e41f4b71Sopenharmony_ci 334e41f4b71Sopenharmony_ci**Return value** 335e41f4b71Sopenharmony_ci 336e41f4b71Sopenharmony_ci| Type | Description | 337e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 338e41f4b71Sopenharmony_ci| boolean | Returns **true** if the device supports the combination; returns **false** otherwise. | 339e41f4b71Sopenharmony_ci 340e41f4b71Sopenharmony_ci**Error codes** 341e41f4b71Sopenharmony_ci 342e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 343e41f4b71Sopenharmony_ci 344e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciChecks whether the device supports the combination of the DRM scheme, MIME type, and content protection level. 370e41f4b71Sopenharmony_ci 371e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 372e41f4b71Sopenharmony_ci 373e41f4b71Sopenharmony_ci**Parameters** 374e41f4b71Sopenharmony_ci 375e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 376e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 377e41f4b71Sopenharmony_ci| name | string | Yes | DRM scheme name. | 378e41f4b71Sopenharmony_ci| mimeType | string | Yes | MIME type, which is determined by the DRM scheme. | 379e41f4b71Sopenharmony_ci| level | [ContentProtectionLevel](#contentprotectionlevel) | Yes | Content protection level. | 380e41f4b71Sopenharmony_ci 381e41f4b71Sopenharmony_ci**Return value** 382e41f4b71Sopenharmony_ci 383e41f4b71Sopenharmony_ci| Type | Description | 384e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 385e41f4b71Sopenharmony_ci| boolean | Returns **true** if the device supports the combination; returns **false** otherwise. | 386e41f4b71Sopenharmony_ci 387e41f4b71Sopenharmony_ci**Error codes** 388e41f4b71Sopenharmony_ci 389e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 390e41f4b71Sopenharmony_ci 391e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciObtains the UUID of the DRM content protection system supported by the specified DRM scheme. 417e41f4b71Sopenharmony_ci 418e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 419e41f4b71Sopenharmony_ci 420e41f4b71Sopenharmony_ci**Parameters** 421e41f4b71Sopenharmony_ci 422e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 423e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 424e41f4b71Sopenharmony_ci| name | string | Yes | DRM scheme name. | 425e41f4b71Sopenharmony_ci 426e41f4b71Sopenharmony_ci**Return value** 427e41f4b71Sopenharmony_ci 428e41f4b71Sopenharmony_ci| Type | Description | 429e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 430e41f4b71Sopenharmony_ci| uuid | string | Yes | UUID of the DRM content protection system. | 431e41f4b71Sopenharmony_ci 432e41f4b71Sopenharmony_ci**Error codes** 433e41f4b71Sopenharmony_ci 434e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 435e41f4b71Sopenharmony_ci 436e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciObtains the list of plug-ins supported by the device. 461e41f4b71Sopenharmony_ci 462e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 463e41f4b71Sopenharmony_ci 464e41f4b71Sopenharmony_ci**Return value** 465e41f4b71Sopenharmony_ci 466e41f4b71Sopenharmony_ci| Type | Description | 467e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 468e41f4b71Sopenharmony_ci| [MediaKeySystemDescription[]](#mediakeysystemdescription12) | Array of the supported plug-ins. | 469e41f4b71Sopenharmony_ci 470e41f4b71Sopenharmony_ci**Error codes** 471e41f4b71Sopenharmony_ci 472e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 473e41f4b71Sopenharmony_ci 474e41f4b71Sopenharmony_ci| ID | Error Message | 475e41f4b71Sopenharmony_ci| --------------- | --------------- | 476e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 477e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 478e41f4b71Sopenharmony_ci 479e41f4b71Sopenharmony_ci**Example** 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_ciImplements **MediaKeySystem** instance management. Specifically, it provides APIs to request and process DRM certificates, creates session, manages offline media key, obtain DRM statistical information, and obtain device configuration information. Before calling any API in **MediaKeySystem**, you must use [createMediaKeySystem](#drmcreatemediakeysystem) to create a **MediaKeySystem** instance. 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ci### setConfigurationString 496e41f4b71Sopenharmony_ci 497e41f4b71Sopenharmony_cisetConfigurationString(configName: string, value: string): void 498e41f4b71Sopenharmony_ci 499e41f4b71Sopenharmony_ciSets a configuration item in the form of a string. 500e41f4b71Sopenharmony_ci 501e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 502e41f4b71Sopenharmony_ci 503e41f4b71Sopenharmony_ci**Parameters** 504e41f4b71Sopenharmony_ci 505e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 506e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 507e41f4b71Sopenharmony_ci| configName | string | Yes | Name of the configuration item. For details about available options, see [PreDefinedConfigName](#predefinedconfigname). | 508e41f4b71Sopenharmony_ci| value | string | Yes | Value of the configuration item. | 509e41f4b71Sopenharmony_ci 510e41f4b71Sopenharmony_ci**Error codes** 511e41f4b71Sopenharmony_ci 512e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 513e41f4b71Sopenharmony_ci 514e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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"); // Ensure that stringConfigName is configurable. 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_ciObtains the value of a configuration item in the form of a string. 540e41f4b71Sopenharmony_ci 541e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 542e41f4b71Sopenharmony_ci 543e41f4b71Sopenharmony_ci**Parameters** 544e41f4b71Sopenharmony_ci 545e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 546e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 547e41f4b71Sopenharmony_ci| configName | string | Yes | Name of the configuration item, which is determined by the DRM scheme on the device. For details about available options, see [PreDefinedConfigName](#predefinedconfigname). | 548e41f4b71Sopenharmony_ci 549e41f4b71Sopenharmony_ci**Return value** 550e41f4b71Sopenharmony_ci 551e41f4b71Sopenharmony_ci| Type | Description | 552e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 553e41f4b71Sopenharmony_ci| string | Value of the configuration item in the form of a string. | 554e41f4b71Sopenharmony_ci 555e41f4b71Sopenharmony_ci**Error codes** 556e41f4b71Sopenharmony_ci 557e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 558e41f4b71Sopenharmony_ci 559e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciSets a configuration item in the form of a byte array. 585e41f4b71Sopenharmony_ci 586e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 587e41f4b71Sopenharmony_ci 588e41f4b71Sopenharmony_ci**Parameters** 589e41f4b71Sopenharmony_ci 590e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 591e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 592e41f4b71Sopenharmony_ci| configName | string | Yes | Name of the configuration item, which is determined by the DRM scheme on the device. For details about available options, see [PreDefinedConfigName](#predefinedconfigname). | 593e41f4b71Sopenharmony_ci| value | Uint8Array | Yes | Value of the configuration item in the form of an array. | 594e41f4b71Sopenharmony_ci 595e41f4b71Sopenharmony_ci**Error codes** 596e41f4b71Sopenharmony_ci 597e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 598e41f4b71Sopenharmony_ci 599e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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// Set configValue based on project requirements. 613e41f4b71Sopenharmony_cilet configValue: Uint8Array = new Uint8Array([0x00, 0x00, 0x00, 0x00]); 614e41f4b71Sopenharmony_citry { 615e41f4b71Sopenharmony_ci // Ensure that byteArrayConfigName of the current DRM scheme is configurable. 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_ciObtains the value of a configuration item in the form of a byte array. 628e41f4b71Sopenharmony_ci 629e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 630e41f4b71Sopenharmony_ci 631e41f4b71Sopenharmony_ci**Parameters** 632e41f4b71Sopenharmony_ci 633e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 634e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 635e41f4b71Sopenharmony_ci| configName | string | Yes | Name of the configuration item, which is determined by the DRM scheme on the device. For details about available options, see [PreDefinedConfigName](#predefinedconfigname). | 636e41f4b71Sopenharmony_ci 637e41f4b71Sopenharmony_ci**Return value** 638e41f4b71Sopenharmony_ci 639e41f4b71Sopenharmony_ci| Type | Description | 640e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 641e41f4b71Sopenharmony_ci| Uint8Array | Value of the configuration item in the form of an array. | 642e41f4b71Sopenharmony_ci 643e41f4b71Sopenharmony_ci**Error codes** 644e41f4b71Sopenharmony_ci 645e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 646e41f4b71Sopenharmony_ci 647e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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"); // Ensure that deviceUniqueId exists. 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_ciObtains the statistical information, including the number of current sessions, plug-in version, maximum decryption duration for each session, number of decryption times, and number of decryption failures. 673e41f4b71Sopenharmony_ci 674e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 675e41f4b71Sopenharmony_ci 676e41f4b71Sopenharmony_ci**Return value** 677e41f4b71Sopenharmony_ci 678e41f4b71Sopenharmony_ci| Type | Description | 679e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 680e41f4b71Sopenharmony_ci| [StatisticKeyValue[]](#statistickeyvalue) | Statistical information. | 681e41f4b71Sopenharmony_ci 682e41f4b71Sopenharmony_ci**Error codes** 683e41f4b71Sopenharmony_ci 684e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 685e41f4b71Sopenharmony_ci 686e41f4b71Sopenharmony_ci| ID | Error Message | 687e41f4b71Sopenharmony_ci| --------------- | --------------- | 688e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 689e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 690e41f4b71Sopenharmony_ci 691e41f4b71Sopenharmony_ci**Example** 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_ciObtains the maximum content protection level supported by the current DRM scheme. 711e41f4b71Sopenharmony_ci 712e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 713e41f4b71Sopenharmony_ci 714e41f4b71Sopenharmony_ci**Return value** 715e41f4b71Sopenharmony_ci 716e41f4b71Sopenharmony_ci| Type | Description | 717e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 718e41f4b71Sopenharmony_ci| [ContentProtectionLevel](#contentprotectionlevel) | Maximum content protection level. | 719e41f4b71Sopenharmony_ci 720e41f4b71Sopenharmony_ci**Error codes** 721e41f4b71Sopenharmony_ci 722e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 723e41f4b71Sopenharmony_ci 724e41f4b71Sopenharmony_ci| ID | Error Message | 725e41f4b71Sopenharmony_ci| --------------- | --------------- | 726e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 727e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 728e41f4b71Sopenharmony_ci 729e41f4b71Sopenharmony_ci**Example** 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_ciGenerates a provision request. 749e41f4b71Sopenharmony_ci 750e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 751e41f4b71Sopenharmony_ci 752e41f4b71Sopenharmony_ci**Return value** 753e41f4b71Sopenharmony_ci 754e41f4b71Sopenharmony_ci| Type | Description | 755e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 756e41f4b71Sopenharmony_ci| Promise<[ProvisionRequest](#provisionrequest)\> | Promise used to return the provision request obtained. If a DRM certificate already exists on the device, a failure message is returned. | 757e41f4b71Sopenharmony_ci 758e41f4b71Sopenharmony_ci**Error codes** 759e41f4b71Sopenharmony_ci 760e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 761e41f4b71Sopenharmony_ci 762e41f4b71Sopenharmony_ci| ID | Error Message | 763e41f4b71Sopenharmony_ci| --------------- | --------------- | 764e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 765e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 766e41f4b71Sopenharmony_ci 767e41f4b71Sopenharmony_ci**Example** 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// Do not call this API if a DRM certificate already exists on the device. 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_ciProcesses a provision response. 787e41f4b71Sopenharmony_ci 788e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 789e41f4b71Sopenharmony_ci 790e41f4b71Sopenharmony_ci**Parameters** 791e41f4b71Sopenharmony_ci 792e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 793e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 794e41f4b71Sopenharmony_ci| response | Uint8Array | Yes | Provision response. | 795e41f4b71Sopenharmony_ci 796e41f4b71Sopenharmony_ci**Return value** 797e41f4b71Sopenharmony_ci 798e41f4b71Sopenharmony_ci| Type | Description | 799e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 800e41f4b71Sopenharmony_ci| Promise<void\> | Promise | 801e41f4b71Sopenharmony_ci 802e41f4b71Sopenharmony_ci**Error codes** 803e41f4b71Sopenharmony_ci 804e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 805e41f4b71Sopenharmony_ci 806e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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 is the response obtained from the DRM service. Pass in the actual data obtained. 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_ciObtains the status of the DRM certificate. 833e41f4b71Sopenharmony_ci 834e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 835e41f4b71Sopenharmony_ci 836e41f4b71Sopenharmony_ci**Return value** 837e41f4b71Sopenharmony_ci 838e41f4b71Sopenharmony_ci| Type | Description | 839e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 840e41f4b71Sopenharmony_ci| [CertificateStatus](#certificatestatus) | Certificate status. | 841e41f4b71Sopenharmony_ci 842e41f4b71Sopenharmony_ci**Error codes** 843e41f4b71Sopenharmony_ci 844e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 845e41f4b71Sopenharmony_ci 846e41f4b71Sopenharmony_ci| ID | Error Message | 847e41f4b71Sopenharmony_ci| --------------- | --------------- | 848e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 849e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 850e41f4b71Sopenharmony_ci 851e41f4b71Sopenharmony_ci**Example** 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_ciSubscribes to events indicating that the application requests a DRM certificate. 871e41f4b71Sopenharmony_ci 872e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 873e41f4b71Sopenharmony_ci 874e41f4b71Sopenharmony_ci**Parameters** 875e41f4b71Sopenharmony_ci 876e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 877e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 878e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The event can be listened for when a **MediaKeySystem** instance is created. This event is triggered when the application requires a DRM certificate.| 879e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | Yes | Callback used to return the event information. If this event callback is returned, a DRM certificate must be requested. | 880e41f4b71Sopenharmony_ci 881e41f4b71Sopenharmony_ci**Error codes** 882e41f4b71Sopenharmony_ci 883e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 884e41f4b71Sopenharmony_ci 885e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciUnsubscribes from events indicating that the application requests a DRM certificate. 906e41f4b71Sopenharmony_ci 907e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 908e41f4b71Sopenharmony_ci 909e41f4b71Sopenharmony_ci**Parameters** 910e41f4b71Sopenharmony_ci 911e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 912e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 913e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The event can be listened for when a **MediaKeySystem** instance is created.| 914e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | No | Callback used to return the event information. | 915e41f4b71Sopenharmony_ci 916e41f4b71Sopenharmony_ci**Error codes** 917e41f4b71Sopenharmony_ci 918e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 919e41f4b71Sopenharmony_ci 920e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciCreates a **MediaKeySession** instance with the specified content protection level. 937e41f4b71Sopenharmony_ci 938e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 939e41f4b71Sopenharmony_ci 940e41f4b71Sopenharmony_ci**Parameters** 941e41f4b71Sopenharmony_ci 942e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 943e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 944e41f4b71Sopenharmony_ci| level | [ContentProtectionLevel](#contentprotectionlevel) | Yes | Content protection level. | 945e41f4b71Sopenharmony_ci 946e41f4b71Sopenharmony_ci**Return value** 947e41f4b71Sopenharmony_ci 948e41f4b71Sopenharmony_ci| Type | Description | 949e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 950e41f4b71Sopenharmony_ci| [MediaKeySession](#mediakeysession) | **MediaKeySession** instance. | 951e41f4b71Sopenharmony_ci 952e41f4b71Sopenharmony_ci**Error codes** 953e41f4b71Sopenharmony_ci 954e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 955e41f4b71Sopenharmony_ci 956e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciCreates a **MediaKeySession** instance with the default content protection level of the DRM scheme. 983e41f4b71Sopenharmony_ci 984e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 985e41f4b71Sopenharmony_ci 986e41f4b71Sopenharmony_ci**Return value** 987e41f4b71Sopenharmony_ci 988e41f4b71Sopenharmony_ci| Type | Description | 989e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 990e41f4b71Sopenharmony_ci| [MediaKeySession](#mediakeysession) | **MediaKeySession** instance. | 991e41f4b71Sopenharmony_ci 992e41f4b71Sopenharmony_ci**Error codes** 993e41f4b71Sopenharmony_ci 994e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 995e41f4b71Sopenharmony_ci 996e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciObtains the IDs of offline media keys. 1022e41f4b71Sopenharmony_ci 1023e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1024e41f4b71Sopenharmony_ci 1025e41f4b71Sopenharmony_ci 1026e41f4b71Sopenharmony_ci**Return value** 1027e41f4b71Sopenharmony_ci 1028e41f4b71Sopenharmony_ci| Type | Description | 1029e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1030e41f4b71Sopenharmony_ci| Uint8Array[] | Array holding the IDs of offline media keys. | 1031e41f4b71Sopenharmony_ci 1032e41f4b71Sopenharmony_ci**Error codes** 1033e41f4b71Sopenharmony_ci 1034e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1035e41f4b71Sopenharmony_ci 1036e41f4b71Sopenharmony_ci| ID | Error Message | 1037e41f4b71Sopenharmony_ci| --------------- | --------------- | 1038e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1039e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1040e41f4b71Sopenharmony_ci 1041e41f4b71Sopenharmony_ci**Example** 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_ciObtains the status of offline media keys with the specified IDs. 1061e41f4b71Sopenharmony_ci 1062e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1063e41f4b71Sopenharmony_ci 1064e41f4b71Sopenharmony_ci**Parameters** 1065e41f4b71Sopenharmony_ci 1066e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1067e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1068e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array | Yes | Array holding the IDs of offline media keys. | 1069e41f4b71Sopenharmony_ci 1070e41f4b71Sopenharmony_ci**Return value** 1071e41f4b71Sopenharmony_ci 1072e41f4b71Sopenharmony_ci| Type | Description | 1073e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1074e41f4b71Sopenharmony_ci| [OfflineMediaKeyStatus](#offlinemediakeystatus) | Status of the offline media keys. | 1075e41f4b71Sopenharmony_ci 1076e41f4b71Sopenharmony_ci**Error codes** 1077e41f4b71Sopenharmony_ci 1078e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1079e41f4b71Sopenharmony_ci 1080e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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 is the return value of processMediaKeyResponse or getOfflineMediaKeyIds. Pass in the actual data returned. 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_ciClears offline media keys by ID. 1108e41f4b71Sopenharmony_ci 1109e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1110e41f4b71Sopenharmony_ci 1111e41f4b71Sopenharmony_ci**Parameters** 1112e41f4b71Sopenharmony_ci 1113e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1114e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1115e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array | Yes | Array holding the IDs of offline media keys. | 1116e41f4b71Sopenharmony_ci 1117e41f4b71Sopenharmony_ci**Error codes** 1118e41f4b71Sopenharmony_ci 1119e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1120e41f4b71Sopenharmony_ci 1121e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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 is the return value of processMediaKeyResponse or getOfflineMediaKeyIds. Pass in the actual data returned. 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_ciDestroys this **MediaKeySystem** instance. 1149e41f4b71Sopenharmony_ci 1150e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1151e41f4b71Sopenharmony_ci 1152e41f4b71Sopenharmony_ci**Error codes** 1153e41f4b71Sopenharmony_ci 1154e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1155e41f4b71Sopenharmony_ci 1156e41f4b71Sopenharmony_ci| ID | Error Message | 1157e41f4b71Sopenharmony_ci| --------------- | --------------- | 1158e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1159e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1160e41f4b71Sopenharmony_ci 1161e41f4b71Sopenharmony_ci**Example** 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_ciImplements media key management. Before calling any API in **MediaKeySession**, you must use [createMediaKeySession](#createmediakeysession) to create a **MediaKeySession** instance. 1178e41f4b71Sopenharmony_ci 1179e41f4b71Sopenharmony_ci### generateMediaKeyRequest 1180e41f4b71Sopenharmony_ci 1181e41f4b71Sopenharmony_cigenerateMediaKeyRequest(mimeType: string, initData: Uint8Array, mediaKeyType: number, options?: OptionsData[]): Promise<MediaKeyRequest\> 1182e41f4b71Sopenharmony_ci 1183e41f4b71Sopenharmony_ciGenerates a media key request. 1184e41f4b71Sopenharmony_ci 1185e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1186e41f4b71Sopenharmony_ci 1187e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1188e41f4b71Sopenharmony_ci 1189e41f4b71Sopenharmony_ci**Parameters** 1190e41f4b71Sopenharmony_ci 1191e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1192e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1193e41f4b71Sopenharmony_ci| mimeType | string | Yes | MIME type, which is determined by the DRM scheme. | 1194e41f4b71Sopenharmony_ci| initData | Uint8Array | Yes | Initial data. | 1195e41f4b71Sopenharmony_ci| mediaKeyType| number | Yes | Type of the media key. | The value **0** means an online media key, and **1** means an offline media key.| 1196e41f4b71Sopenharmony_ci| options | [OptionsData[]](#optionsdata) | No | Optional data. | 1197e41f4b71Sopenharmony_ci 1198e41f4b71Sopenharmony_ci**Return value** 1199e41f4b71Sopenharmony_ci 1200e41f4b71Sopenharmony_ci| Type | Description | 1201e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1202e41f4b71Sopenharmony_ci| Promise<[MediaKeyRequest](#mediakeyrequest)\> | Promise used to return the media key request generated. | 1203e41f4b71Sopenharmony_ci 1204e41f4b71Sopenharmony_ci**Error codes** 1205e41f4b71Sopenharmony_ci 1206e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1207e41f4b71Sopenharmony_ci 1208e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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 data is the descriptive header of the copyright protection system and is encapsulated in encrypted streams. Specifically, in MP4 file, the PSSH data is found within the PSSH box; for DASH streams, the PSSH data is located in the MPD and MP4 PSSH box; for HLS+TS streams, the PSSH data is located in the M3U8 file and each TS segment. Pass in the actual value. 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_ciProcesses a media key response. 1236e41f4b71Sopenharmony_ci 1237e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1238e41f4b71Sopenharmony_ci 1239e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1240e41f4b71Sopenharmony_ci 1241e41f4b71Sopenharmony_ci**Parameters** 1242e41f4b71Sopenharmony_ci 1243e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1244e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1245e41f4b71Sopenharmony_ci| response | Uint8Array | Yes | Media key response. | 1246e41f4b71Sopenharmony_ci 1247e41f4b71Sopenharmony_ci**Return value** 1248e41f4b71Sopenharmony_ci 1249e41f4b71Sopenharmony_ci| Type | Description | 1250e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1251e41f4b71Sopenharmony_ci| Promise<Uint8Array\> | Promise used to return the media key IDs. | 1252e41f4b71Sopenharmony_ci 1253e41f4b71Sopenharmony_ci**Error codes** 1254e41f4b71Sopenharmony_ci 1255e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1256e41f4b71Sopenharmony_ci 1257e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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 is obtained from the DRM service. Pass in the actual value obtained. 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_ciChecks the status of the media keys in use. 1285e41f4b71Sopenharmony_ci 1286e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1287e41f4b71Sopenharmony_ci 1288e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1289e41f4b71Sopenharmony_ci 1290e41f4b71Sopenharmony_ci**Return value** 1291e41f4b71Sopenharmony_ci 1292e41f4b71Sopenharmony_ci| Type | Description | 1293e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1294e41f4b71Sopenharmony_ci| [MediaKeyStatus[]](#mediakeystatus) | Media key status. | 1295e41f4b71Sopenharmony_ci 1296e41f4b71Sopenharmony_ci**Error codes** 1297e41f4b71Sopenharmony_ci 1298e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1299e41f4b71Sopenharmony_ci 1300e41f4b71Sopenharmony_ci| ID | Error Message | 1301e41f4b71Sopenharmony_ci| --------------- | --------------- | 1302e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1303e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1304e41f4b71Sopenharmony_ci 1305e41f4b71Sopenharmony_ci**Example** 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_ciClears the media keys in use. 1326e41f4b71Sopenharmony_ci 1327e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1328e41f4b71Sopenharmony_ci 1329e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1330e41f4b71Sopenharmony_ci 1331e41f4b71Sopenharmony_ci**Error codes** 1332e41f4b71Sopenharmony_ci 1333e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1334e41f4b71Sopenharmony_ci 1335e41f4b71Sopenharmony_ci| ID | Error Message | 1336e41f4b71Sopenharmony_ci| --------------- | --------------- | 1337e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1338e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1339e41f4b71Sopenharmony_ci 1340e41f4b71Sopenharmony_ci**Example** 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 is obtained from the DRM service. Pass in the actual value obtained. 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_ciGenerates a request to release offline media keys. 1368e41f4b71Sopenharmony_ci 1369e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1370e41f4b71Sopenharmony_ci 1371e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1372e41f4b71Sopenharmony_ci 1373e41f4b71Sopenharmony_ci**Parameters** 1374e41f4b71Sopenharmony_ci 1375e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1376e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1377e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array | Yes | Array holding the IDs of offline media keys. | 1378e41f4b71Sopenharmony_ci 1379e41f4b71Sopenharmony_ci**Return value** 1380e41f4b71Sopenharmony_ci 1381e41f4b71Sopenharmony_ci| Type | Description | 1382e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1383e41f4b71Sopenharmony_ci| Promise<Uint8Array\> | Promise used to return the request generated. | 1384e41f4b71Sopenharmony_ci 1385e41f4b71Sopenharmony_ci**Error codes** 1386e41f4b71Sopenharmony_ci 1387e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1388e41f4b71Sopenharmony_ci 1389e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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 is the return value of processMediaKeyResponse or getOfflineMediaKeyIds. Pass in the actual data returned. 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_ciProcesses a response to a request for releasing offline media keys. 1417e41f4b71Sopenharmony_ci 1418e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1419e41f4b71Sopenharmony_ci 1420e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1421e41f4b71Sopenharmony_ci 1422e41f4b71Sopenharmony_ci**Parameters** 1423e41f4b71Sopenharmony_ci 1424e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1425e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1426e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array | Yes | Array holding the IDs of offline media keys. | 1427e41f4b71Sopenharmony_ci| response | Uint8Array | Yes | Response to the request for releasing offline media keys. | 1428e41f4b71Sopenharmony_ci 1429e41f4b71Sopenharmony_ci**Return value** 1430e41f4b71Sopenharmony_ci 1431e41f4b71Sopenharmony_ci| Type | Description | 1432e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1433e41f4b71Sopenharmony_ci| Promise<void\> | Promise | 1434e41f4b71Sopenharmony_ci 1435e41f4b71Sopenharmony_ci**Error codes** 1436e41f4b71Sopenharmony_ci 1437e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1438e41f4b71Sopenharmony_ci 1439e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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 is the return value of processMediaKeyResponse or getOfflineMediaKeyIds. Apply for memory based on the actual length. 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 is obtained from the DRM service. Apply for memory based on the actual length. 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_ciRestores offline media keys. 1474e41f4b71Sopenharmony_ci 1475e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1476e41f4b71Sopenharmony_ci 1477e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1478e41f4b71Sopenharmony_ci 1479e41f4b71Sopenharmony_ci**Parameters** 1480e41f4b71Sopenharmony_ci 1481e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1482e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1483e41f4b71Sopenharmony_ci| mediaKeyId | Uint8Array | Yes | Array holding the IDs of offline media keys. | 1484e41f4b71Sopenharmony_ci 1485e41f4b71Sopenharmony_ci**Return value** 1486e41f4b71Sopenharmony_ci 1487e41f4b71Sopenharmony_ci| Type | Description | 1488e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1489e41f4b71Sopenharmony_ci| Promise<void\> | Promise | 1490e41f4b71Sopenharmony_ci 1491e41f4b71Sopenharmony_ci**Error codes** 1492e41f4b71Sopenharmony_ci 1493e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1494e41f4b71Sopenharmony_ci 1495e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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 is the return value of processMediaKeyResponse or getOfflineMediaKeyIds. Pass in the actual data returned. 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_ciObtains the content protection level of this media key session. 1523e41f4b71Sopenharmony_ci 1524e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1525e41f4b71Sopenharmony_ci 1526e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1527e41f4b71Sopenharmony_ci 1528e41f4b71Sopenharmony_ci**Return value** 1529e41f4b71Sopenharmony_ci 1530e41f4b71Sopenharmony_ci| Type | Description | 1531e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1532e41f4b71Sopenharmony_ci| [ContentProtectionLevel](#contentprotectionlevel) | Content protection level. | 1533e41f4b71Sopenharmony_ci 1534e41f4b71Sopenharmony_ci**Error codes** 1535e41f4b71Sopenharmony_ci 1536e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1537e41f4b71Sopenharmony_ci 1538e41f4b71Sopenharmony_ci| ID | Error Message | 1539e41f4b71Sopenharmony_ci| --------------- | --------------- | 1540e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1541e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1542e41f4b71Sopenharmony_ci 1543e41f4b71Sopenharmony_ci**Example** 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_ciChecks whether secure decoding is required. 1564e41f4b71Sopenharmony_ci 1565e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1566e41f4b71Sopenharmony_ci 1567e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1568e41f4b71Sopenharmony_ci 1569e41f4b71Sopenharmony_ci**Parameters** 1570e41f4b71Sopenharmony_ci 1571e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1572e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ---------------------------- | 1573e41f4b71Sopenharmony_ci| mimeType | string | Yes | MIME type, which is determined by the DRM scheme. | 1574e41f4b71Sopenharmony_ci 1575e41f4b71Sopenharmony_ci**Return value** 1576e41f4b71Sopenharmony_ci 1577e41f4b71Sopenharmony_ci| Type | Description | 1578e41f4b71Sopenharmony_ci| ----------------------------------------------- | ---------------------------- | 1579e41f4b71Sopenharmony_ci| boolean | Whether secure decoding is required. The value **true** means that secure decoding is required, and **false** means the opposite. | 1580e41f4b71Sopenharmony_ci 1581e41f4b71Sopenharmony_ci**Error codes** 1582e41f4b71Sopenharmony_ci 1583e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1584e41f4b71Sopenharmony_ci 1585e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciSubscribes to events indicating that the application requests a media key. 1612e41f4b71Sopenharmony_ci 1613e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1614e41f4b71Sopenharmony_ci 1615e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1616e41f4b71Sopenharmony_ci 1617e41f4b71Sopenharmony_ci**Parameters** 1618e41f4b71Sopenharmony_ci 1619e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1620e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1621e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The value is fixed at **'keyRequired'**. This event is triggered when the application requires a media key.| 1622e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | Yes | Callback used to return the event information. | 1623e41f4b71Sopenharmony_ci 1624e41f4b71Sopenharmony_ci**Error codes** 1625e41f4b71Sopenharmony_ci 1626e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1627e41f4b71Sopenharmony_ci 1628e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciUnsubscribes from events indicating that the application requests a media key. 1650e41f4b71Sopenharmony_ci 1651e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1652e41f4b71Sopenharmony_ci 1653e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1654e41f4b71Sopenharmony_ci 1655e41f4b71Sopenharmony_ci**Parameters** 1656e41f4b71Sopenharmony_ci 1657e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1658e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1659e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The value is fixed at **'keyRequired'**.| 1660e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | No | Callback used to return the event information. | 1661e41f4b71Sopenharmony_ci 1662e41f4b71Sopenharmony_ci**Error codes** 1663e41f4b71Sopenharmony_ci 1664e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1665e41f4b71Sopenharmony_ci 1666e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciSubscribes to events indicating that a media key expires. 1686e41f4b71Sopenharmony_ci 1687e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1688e41f4b71Sopenharmony_ci 1689e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1690e41f4b71Sopenharmony_ci 1691e41f4b71Sopenharmony_ci**Parameters** 1692e41f4b71Sopenharmony_ci 1693e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1694e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1695e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The value is fixed at **'keyExpired'**. This event is triggered when a media key expires.| 1696e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | Yes | Callback used to return the event information. | 1697e41f4b71Sopenharmony_ci 1698e41f4b71Sopenharmony_ci**Error codes** 1699e41f4b71Sopenharmony_ci 1700e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1701e41f4b71Sopenharmony_ci 1702e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciUnsubscribes from events indicating that a media key expires. 1724e41f4b71Sopenharmony_ci 1725e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1726e41f4b71Sopenharmony_ci 1727e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1728e41f4b71Sopenharmony_ci 1729e41f4b71Sopenharmony_ci**Parameters** 1730e41f4b71Sopenharmony_ci 1731e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1732e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1733e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The value is fixed at **'keyExpired'**.| 1734e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | No | Callback used to return the event information. | 1735e41f4b71Sopenharmony_ci 1736e41f4b71Sopenharmony_ci**Error codes** 1737e41f4b71Sopenharmony_ci 1738e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1739e41f4b71Sopenharmony_ci 1740e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciSubscribes to vendor-defined events. 1760e41f4b71Sopenharmony_ci 1761e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1762e41f4b71Sopenharmony_ci 1763e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1764e41f4b71Sopenharmony_ci 1765e41f4b71Sopenharmony_ci**Parameters** 1766e41f4b71Sopenharmony_ci 1767e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1768e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1769e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The value is fixed at **'vendorDefined'**. This event is triggered when a vendor-defined event occurs.| 1770e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | Yes | Callback used to return the event information. | 1771e41f4b71Sopenharmony_ci 1772e41f4b71Sopenharmony_ci**Error codes** 1773e41f4b71Sopenharmony_ci 1774e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1775e41f4b71Sopenharmony_ci 1776e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciUnsubscribes from vendor-defined events. 1798e41f4b71Sopenharmony_ci 1799e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1800e41f4b71Sopenharmony_ci 1801e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1802e41f4b71Sopenharmony_ci 1803e41f4b71Sopenharmony_ci**Parameters** 1804e41f4b71Sopenharmony_ci 1805e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1806e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1807e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The value is fixed at **'vendorDefined'**.| 1808e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | No | Callback used to return the event information. | 1809e41f4b71Sopenharmony_ci 1810e41f4b71Sopenharmony_ci**Error codes** 1811e41f4b71Sopenharmony_ci 1812e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1813e41f4b71Sopenharmony_ci 1814e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciSubscribes to events indicating that a media key updates on expiry. 1834e41f4b71Sopenharmony_ci 1835e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1836e41f4b71Sopenharmony_ci 1837e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1838e41f4b71Sopenharmony_ci 1839e41f4b71Sopenharmony_ci**Parameters** 1840e41f4b71Sopenharmony_ci 1841e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1842e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1843e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The value is fixed at **'expirationUpdate'**. This event is triggered when a media key updates on expiry.| 1844e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | Yes | Callback used to return the event information. | 1845e41f4b71Sopenharmony_ci 1846e41f4b71Sopenharmony_ci**Error codes** 1847e41f4b71Sopenharmony_ci 1848e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1849e41f4b71Sopenharmony_ci 1850e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciUnsubscribes from events indicating that a media key updates on expiry. 1872e41f4b71Sopenharmony_ci 1873e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1874e41f4b71Sopenharmony_ci 1875e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1876e41f4b71Sopenharmony_ci 1877e41f4b71Sopenharmony_ci**Parameters** 1878e41f4b71Sopenharmony_ci 1879e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1880e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1881e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The value is fixed at **'expirationUpdate'**.| 1882e41f4b71Sopenharmony_ci| callback | Callback\<[EventInfo](#eventinfo)\> | No | Callback used to return the event information. | 1883e41f4b71Sopenharmony_ci 1884e41f4b71Sopenharmony_ci**Error codes** 1885e41f4b71Sopenharmony_ci 1886e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1887e41f4b71Sopenharmony_ci 1888e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciSubscribes to events indicating that a media key changes. 1908e41f4b71Sopenharmony_ci 1909e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1910e41f4b71Sopenharmony_ci 1911e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1912e41f4b71Sopenharmony_ci 1913e41f4b71Sopenharmony_ci**Parameters** 1914e41f4b71Sopenharmony_ci 1915e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1916e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1917e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The value is fixed at **'keysChange'**. This event is triggered when a media key changes.| 1918e41f4b71Sopenharmony_ci| callback | Callback\<[KeysInfo[]](#keysinfo), boolean\> | Yes | Callback used to return the event information, including the lists of key IDs, statuses, and availability. | 1919e41f4b71Sopenharmony_ci 1920e41f4b71Sopenharmony_ci**Error codes** 1921e41f4b71Sopenharmony_ci 1922e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1923e41f4b71Sopenharmony_ci 1924e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciUnsubscribes from events indicating that a media key changes. 1948e41f4b71Sopenharmony_ci 1949e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1950e41f4b71Sopenharmony_ci 1951e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1952e41f4b71Sopenharmony_ci 1953e41f4b71Sopenharmony_ci**Parameters** 1954e41f4b71Sopenharmony_ci 1955e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1956e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------- | 1957e41f4b71Sopenharmony_ci| type | string | Yes | Event type. The value is fixed at **'keysChange'**.| 1958e41f4b71Sopenharmony_ci| callback | Callback\<[KeysInfo[]](#keysinfo), boolean\> | No | Callback used to return the event information, including the lists of key IDs, statuses, and availability. | 1959e41f4b71Sopenharmony_ci 1960e41f4b71Sopenharmony_ci**Error codes** 1961e41f4b71Sopenharmony_ci 1962e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1963e41f4b71Sopenharmony_ci 1964e41f4b71Sopenharmony_ci| ID | Error Message | 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**Example** 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_ciDestroys this **MediaKeySession** instance. 1984e41f4b71Sopenharmony_ci 1985e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1986e41f4b71Sopenharmony_ci 1987e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Drm.Core 1988e41f4b71Sopenharmony_ci 1989e41f4b71Sopenharmony_ci**Error codes** 1990e41f4b71Sopenharmony_ci 1991e41f4b71Sopenharmony_ciFor details about the error codes, see [DRM Error Codes](errorcode-drm.md). 1992e41f4b71Sopenharmony_ci 1993e41f4b71Sopenharmony_ci| ID | Error Message | 1994e41f4b71Sopenharmony_ci| --------------- | --------------- | 1995e41f4b71Sopenharmony_ci| 24700101 | All unknown errors | 1996e41f4b71Sopenharmony_ci| 24700201 | Fatal service error, for example, service died | 1997e41f4b71Sopenharmony_ci 1998e41f4b71Sopenharmony_ci**Example** 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``` 2014