1# Functions 2<!--Kit: Drm Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @qin_wei_jie--> 5<!--Designer: @chris2981--> 6<!--Tester: @xdlinc--> 7<!--Adviser: @zengyawen--> 8> **说明:** 9> 10> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 11 12## 导入模块 13 14```ts 15import { drm } from '@kit.DrmKit'; 16``` 17 18## drm.createMediaKeySystem 19 20createMediaKeySystem(name: string): MediaKeySystem 21 22创建MediaKeySystem实例。 23 24**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 25 26**系统能力:** SystemCapability.Multimedia.Drm.Core 27 28**参数:** 29 30| 参数名 | 类型 | 必填 | 说明 | 31| -------- | ----------------------------------------------- | ---- | ---------------------------- | 32| name | string | 是 | DRM解决方案名称,如"com.clearplay.drm"。 | 33 34**返回值:** 35 36| 类型 | 说明 | 37| ----------------------------------------------- | ---------------------------- | 38| [MediaKeySystem](arkts-apis-drm-MediaKeySystem.md) | MediaKeySystem实例。 | 39 40**错误码:** 41 42以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 43 44| 错误码ID | 错误信息 | 45| --------------- | --------------- | 46| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. | 47| 24700101 | All unknown errors | 48| 24700103 | Meet max MediaKeySystem num limit | 49| 24700201 | Fatal service error, for example, service died | 50 51**示例:** 52 53```ts 54import { drm } from '@kit.DrmKit'; 55import { BusinessError } from '@kit.BasicServicesKit'; 56try { 57 let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); 58} catch (err) { 59 let error = err as BusinessError; 60 console.error(`createMediaKeySystem ERROR: ${error}`); 61} 62``` 63 64## drm.isMediaKeySystemSupported 65 66isMediaKeySystemSupported(name: string): boolean 67 68判断设备是否支持指定的DRM解决方案。 69 70**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 71 72**系统能力:** SystemCapability.Multimedia.Drm.Core 73 74**参数:** 75 76| 参数名 | 类型 | 必填 | 说明 | 77| -------- | ----------------------------------------------- | ---- | ---------------------------- | 78| name | string | 是 | DRM解决方案名称,如"com.clearplay.drm"。 | 79 80**返回值:** 81 82| 类型 | 说明 | 83| ----------------------------------------------- | ---------------------------- | 84| boolean | 返回是否支持。true表示支持指定的DRM解决方案,false表示不支持指定的DRM解决方案。 | 85 86**错误码:** 87 88以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 89 90| 错误码ID | 错误信息 | 91| --------------- | --------------- | 92| 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). | 93| 24700101 | All unknown errors | 94| 24700201 | Fatal service error, for example, service died | 95 96**示例:** 97 98```ts 99import { drm } from '@kit.DrmKit'; 100import { BusinessError } from '@kit.BasicServicesKit'; 101 102try { 103 let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm"); 104 console.log("isMediaKeySystemSupported: ", supported); 105} catch (err) { 106 let error = err as BusinessError; 107 console.error(`isMediaKeySystemSupported ERROR: ${error}`); 108} 109``` 110 111## drm.isMediaKeySystemSupported 112 113isMediaKeySystemSupported(name: string, mimeType: string): boolean 114 115判断设备是否支持指定DRM解决方案及媒体类型。 116 117**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 118 119**系统能力:** SystemCapability.Multimedia.Drm.Core 120 121**参数:** 122 123| 参数名 | 类型 | 必填 | 说明 | 124| -------- | ----------------------------------------------- | ---- |-------------------------------------------------------------------------------------------------------------| 125| name | string | 是 | DRM解决方案名称。建议先调用[isMediaKeySystemSupported](arkts-apis-drm-f.md#drmismediakeysystemsupported)判断是否是支持的解决方案名称。 | 126| mimeType | string | 是 | 媒体类型,支持的媒体类型取决于DRM解决方案,如:video/avc、video/hev。 | 127 128**返回值:** 129 130| 类型 | 说明 | 131| ----------------------------------------------- | ---------------------------- | 132| boolean | 返回是否支持。true表示支持指定DRM解决方案及媒体类型,false表示不支持指定DRM解决方案及媒体类型。 | 133 134**错误码:** 135 136以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 137 138| 错误码ID | 错误信息 | 139| --------------- | --------------- | 140| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. | 141| 24700101 | All unknown errors | 142| 24700201 | Fatal service error, for example, service died | 143 144**示例:** 145 146```ts 147import { drm } from '@kit.DrmKit'; 148import { BusinessError } from '@kit.BasicServicesKit'; 149 150try { 151 let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm", "video/avc"); 152 console.log("isMediaKeySystemSupported: ", supported); 153} catch (err) { 154 let error = err as BusinessError; 155 console.error(`isMediaKeySystemSupported ERROR: ${error}`); 156} 157``` 158 159## drm.isMediaKeySystemSupported 160 161isMediaKeySystemSupported(name: string, mimeType: string, level: ContentProtectionLevel): boolean 162 163判断设备是否支持指定DRM解决方案、媒体类型以及内容保护级别。 164 165**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 166 167**系统能力:** SystemCapability.Multimedia.Drm.Core 168 169**参数:** 170 171| 参数名 | 类型 | 必填 | 说明 | 172| -------- | ----------------------------------------------- | ---- |-------------------------------------------------------------------------------------------------------------------------------| 173| name | string | 是 | DRM解决方案名称。建议先调用[isMediaKeySystemSupported](arkts-apis-drm-f.md#drmismediakeysystemsupported)判断是否是支持的解决方案名称。 | 174| mimeType | string | 是 | 媒体类型,支持的媒体类型取决于DRM解决方案。建议先调用[isMediaKeySystemSupported](arkts-apis-drm-f.md#drmismediakeysystemsupported-1)判断是否是DRM解决方案支持的类型。 | 175| level | [ContentProtectionLevel](arkts-apis-drm-e.md#contentprotectionlevel) | 是 | 内容保护级别。 | 176 177**返回值:** 178 179| 类型 | 说明 | 180| ----------------------------------------------- | ---------------------------- | 181| boolean | 返回是否支持。true表示支持指定DRM解决方案、媒体类型以及内容保护级别,false表示不支持指定DRM解决方案、媒体类型以及内容保护级别。 | 182 183**错误码:** 184 185以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 186 187| 错误码ID | 错误信息 | 188| --------------- | --------------- | 189| 401 | The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. | 190| 24700101 | All unknown errors | 191| 24700201 | Fatal service error, for example, service died | 192 193**示例:** 194 195```ts 196import { drm } from '@kit.DrmKit'; 197import { BusinessError } from '@kit.BasicServicesKit'; 198 199try { 200 let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm", "video/avc", drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO); 201 console.log("isMediaKeySystemSupported: ", supported); 202} catch (err) { 203 let error = err as BusinessError; 204 console.error(`isMediaKeySystemSupported ERROR: ${error}`); 205} 206``` 207 208## drm.getMediaKeySystemUuid<sup>12+</sup> 209 210getMediaKeySystemUuid(name: string): string; 211 212获取DRM解决方案支持的DRM内容保护系统唯一标识。 213 214**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 215 216**系统能力:** SystemCapability.Multimedia.Drm.Core 217 218**参数:** 219 220| 参数名 | 类型 | 必填 | 说明 | 221| -------- | ----------------------------------------------- | ---- | ---------------------------- | 222| name | string | 是 | DRM解决方案名称,支持的解决方案名称可通过[isMediaKeySystemSupported](arkts-apis-drm-f.md#drmismediakeysystemsupported)判断。 | 223 224**返回值:** 225 226| 类型 | 说明 | 227| ----------------------------------------------- | ---------------------------- | 228| string | DRM内容保护系统的唯一标识。 | 229 230**错误码:** 231 232以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 233 234| 错误码ID | 错误信息 | 235| --------------- | --------------- | 236| 401 | The parameter check failed.Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed. | 237| 24700101 | All unknown errors | 238| 24700201 | Fatal service error, for example, service died | 239 240**示例:** 241 242```ts 243import { drm } from '@kit.DrmKit'; 244import { BusinessError } from '@kit.BasicServicesKit'; 245try { 246 let uuid: String = drm.getMediaKeySystemUuid("com.clearplay.drm"); 247 console.log("getMediaKeySystemUuid: ", uuid); 248} catch (err) { 249 let error = err as BusinessError; 250 console.error(`getMediaKeySystemUuid ERROR: ${error}`); 251} 252``` 253 254## drm.getMediaKeySystems<sup>12+</sup> 255 256getMediaKeySystems(): MediaKeySystemDescription[] 257 258获取设备支持的插件信息列表。 259 260**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 261 262**系统能力:** SystemCapability.Multimedia.Drm.Core 263 264**返回值:** 265 266| 类型 | 说明 | 267| ----------------------------------------------- | ---------------------------- | 268| [MediaKeySystemDescription[]](arkts-apis-drm-i.md#mediakeysystemdescription12) | 设备支持的插件信息列表。 | 269 270**错误码:** 271 272以下错误码的详细介绍请参见[DRM错误码](errorcode-drm.md)。 273 274| 错误码ID | 错误信息 | 275| --------------- | --------------- | 276| 24700101 | All unknown errors | 277| 24700201 | Fatal service error, for example, service died | 278 279**示例:** 280 281```ts 282import { drm } from '@kit.DrmKit'; 283import { BusinessError } from '@kit.BasicServicesKit'; 284try { 285 let description: drm.MediaKeySystemDescription[] = drm.getMediaKeySystems(); 286} catch (err) { 287 let error = err as BusinessError; 288 console.error(`getMediaKeySystems ERROR: ${error}`); 289} 290``` 291