harmony 鸿蒙@ohos.multimedia.drm (数字版权保护)

  • 2025-06-12
  • 浏览 (1)

@ohos.multimedia.drm (数字版权保护)

DRM(Digital Rights Management)框架组件支持音视频媒体业务数字版权管理功能的开发。开发者可以调用系统提供的DRM插件,完成以下功能:

  • DRM证书管理:生成证书请求、设置证书响应,实现对证书Provision(下载)功能。
  • DRM媒体密钥管理:生成媒体密钥请求、设置媒体密钥响应、管理离线媒体密钥功能。
  • DRM节目授权:支持DRM插件根据媒体密钥权限对DRM节目授权。
  • DRM节目解密:支持媒体播放功能的解密调用,实现对DRM节目的解密。

说明: 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import { drm } from '@kit.DrmKit';

DrmErrorCode

枚举,错误码。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 说明
ERROR_UNKNOWN 24700101 未知错误。
MAX_SYSTEM_NUM_REACHED 24700103 MediaKeySystem实例数量超过上限(64个)。
MAX_SESSION_NUM_REACHED 24700104 MediaKeySession实例数量超过上限(64个)。
SERVICE_FATAL_ERROR 24700201 DRM服务异常。

PreDefinedConfigName

枚举,预定义的配置属性。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 说明
CONFIG_DEVICE_VENDOR ‘vendor’ 插件厂商名,通过getConfigurationString接口获取vendor对应配置值。
CONFIG_DEVICE_VERSION ‘version’ 插件版本号,通过getConfigurationString接口获取version对应配置值。
CONFIG_DEVICE_DESCRIPTION ‘description’ 设备描述符,通过getConfigurationString接口获取description对应配置值。
CONFIG_DEVICE_ALGORITHMS ‘algorithms’ 支持的算法,通过getConfigurationString接口获取algorithms对应配置值。
CONFIG_DEVICE_UNIQUE_ID ‘deviceUniqueId’ 设备唯一标识,通过getConfigurationByteArray接口获取deviceUniqueId对应配置值。
CONFIG_SESSION_MAX ‘maxSessionNum’ 设备支持的最大会话数,通过getConfigurationString接口获取maxSessionNum对应配置值。
CONFIG_SESSION_CURRENT ‘currentSessionNum’ 当前会话数量,通过getConfigurationString接口获取currentSessionNum对应配置值。

MediaKeyType

枚举,媒体密钥类型。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 说明
MEDIA_KEY_TYPE_OFFLINE 0 离线。
MEDIA_KEY_TYPE_ONLINE 1 在线。

OfflineMediaKeyStatus

枚举,离线媒体密钥状态。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 说明
OFFLINE_MEDIA_KEY_STATUS_UNKNOWN 0 未知状态。
OFFLINE_MEDIA_KEY_STATUS_USABLE 1 可用状态。
OFFLINE_MEDIA_KEY_STATUS_INACTIVE 2 失活状态。

CertificateStatus

枚举,设备证书状态。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 说明
CERT_STATUS_PROVISIONED 0 设备已安装设备证书。
CERT_STATUS_NOT_PROVISIONED 1 设备未安装设备证书。
CERT_STATUS_EXPIRED 2 设备证书过期。
CERT_STATUS_INVALID 3 设备证书无效。
CERT_STATUS_UNAVAILABLE 4 设备证书不可用。

MediaKeyRequestType

枚举,媒体密钥请求类型。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 说明
MEDIA_KEY_REQUEST_TYPE_UNKNOWN 0 未知请求类型。
MEDIA_KEY_REQUEST_TYPE_INITIAL 1 初始化请求。
MEDIA_KEY_REQUEST_TYPE_RENEWAL 2 续订请求。
MEDIA_KEY_REQUEST_TYPE_RELEASE 3 释放请求。
MEDIA_KEY_REQUEST_TYPE_NONE 4 无请求。
MEDIA_KEY_REQUEST_TYPE_UPDATE 5 更新请求。

ContentProtectionLevel

枚举,内容保护级别。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 说明
CONTENT_PROTECTION_LEVEL_UNKNOWN 0 未知内容保护级别。
CONTENT_PROTECTION_LEVEL_SW_CRYPTO 1 软件内容保护级别。
CONTENT_PROTECTION_LEVEL_HW_CRYPTO 2 硬件内容保护级别。
CONTENT_PROTECTION_LEVEL_ENHANCED_HW 3 硬件增强内容保护级别。
CONTENT_PROTECTION_LEVEL_MAX 4 最高内容保护级别。

ProvisionRequest

设备证书请求。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 类型 必填 说明
data Uint8Array 设备证书请求数据。
defaultURL string Provision服务(设备证书请求服务)URL。

OptionsData

设备证书请求的可选数据。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 类型 必填 说明
name string 可选数据名。
value string 可选数据值。

MediaKeyRequest

媒体密钥请求参数。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 类型 必填 说明
mediaKeyRequestType MediaKeyRequestType 媒体密钥请求类型。
data Uint8Array 媒体密钥请求数据。
defaultURL string 媒体密钥服务URL。

EventInfo

事件信息。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 类型 必填 说明
info Uint8Array 事件信息数据。
extraInfo string 事件扩展信息。

StatisticKeyValue

度量记录。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 类型 必填 说明
name string 度量记录名。
value string 度量记录值。

MediaKeyStatus

媒体密钥状态。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 类型 必填 说明
name string 媒体密钥状态名称(如媒体密钥过期时间、内容保护安全级别等)。
value string 媒体密钥状态值。

KeysInfo

媒体密钥中密钥信息。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 类型 必填 说明
keyId Uint8Array 媒体密钥标识。
value string 媒体密钥状态值。

MediaKeySystemInfo

加密媒体内容的DRM信息。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 类型 必填 说明
uuid string DRM内容保护系统的唯一标识。
pssh Uint8Array DRM内容保护系统专用头(Protection System Specific Header)。

MediaKeySystemDescription12+

插件信息。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

名称 类型 必填 说明
name string 插件名称。
uuid string 插件唯一标识码。

drm.createMediaKeySystem

createMediaKeySystem(name: string): MediaKeySystem

创建MediaKeySystem实例。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
name string DRM解决方案名称。

返回值:

类型 说明
MediaKeySystem MediaKeySystem实例。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed.
24700101 All unknown errors
24700103 Meet max MediaKeySystem num limit
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';
try {
  let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
} catch (err) {
  let error = err as BusinessError;
  console.error(`createMediaKeySystem ERROR: ${error}`);  
}

drm.isMediaKeySystemSupported

isMediaKeySystemSupported(name: string): boolean

判断设备是否支持指定的DRM解决方案。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
name string DRM解决方案名称。

返回值:

类型 说明
boolean 返回是否支持。true表示支持指定的DRM解决方案,false表示不支持指定的DRM解决方案。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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).
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm");
  console.log("isMediaKeySystemSupported: ", supported);
} catch (err) {
  let error = err as BusinessError;
  console.error(`isMediaKeySystemSupported ERROR: ${error}`);
}

drm.isMediaKeySystemSupported

isMediaKeySystemSupported(name: string, mimeType: string): boolean

判断设备是否支持指定DRM解决方案及媒体类型。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
name string DRM解决方案名称。
mimeType string 媒体类型,由DRM解决方案决定具体的支持类型。

返回值:

类型 说明
boolean 返回是否支持。true表示支持指定DRM解决方案及媒体类型,false表示不支持指定DRM解决方案及媒体类型。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm", "video/avc");
  console.log("isMediaKeySystemSupported: ", supported);
} catch (err) {
  let error = err as BusinessError;
  console.error(`isMediaKeySystemSupported ERROR: ${error}`);
}

drm.isMediaKeySystemSupported

isMediaKeySystemSupported(name: string, mimeType: string, level: ContentProtectionLevel): boolean

判断设备是否支持指定DRM解决方案、媒体类型以及内容保护级别。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
name string DRM解决方案名称。
mimeType string 媒体类型,由DRM解决方案决定具体的支持类型。
level ContentProtectionLevel 内容保护级别。

返回值:

类型 说明
boolean 返回是否支持。true表示支持指定DRM解决方案、媒体类型以及内容保护级别,false表示不支持指定DRM解决方案、媒体类型以及内容保护级别。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  let supported: boolean = drm.isMediaKeySystemSupported("com.clearplay.drm", "video/avc", drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
  console.log("isMediaKeySystemSupported: ", supported);
} catch (err) {
  let error = err as BusinessError;
  console.error(`isMediaKeySystemSupported ERROR: ${error}`);
}

drm.getMediaKeySystemUuid12+

getMediaKeySystemUuid(name: string): string;

获取DRM解决方案支持的DRM内容保护系统唯一标识。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
name string DRM解决方案名称。

返回值:

类型 说明
string DRM内容保护系统的唯一标识。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed.Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';
try {
  let uuid: String = drm.getMediaKeySystemUuid("com.clearplay.drm");
  console.log("getMediaKeySystemUuid: ", uuid);
} catch (err) {
  let error = err as BusinessError;
  console.error(`getMediaKeySystemUuid ERROR: ${error}`);  
}

drm.getMediaKeySystems12+

getMediaKeySystems(): MediaKeySystemDescription[]

获取设备支持的插件信息列表。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

返回值:

类型 说明
MediaKeySystemDescription[] 设备支持的插件信息列表。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';
try {
  let description: drm.MediaKeySystemDescription[] = drm.getMediaKeySystems();
} catch (err) {
  let error = err as BusinessError;
  console.error(`getMediaKeySystems ERROR: ${error}`);  
}

MediaKeySystem

支持MediaKeySystem实例管理、设备证书申请与处理、会话创建、离线媒体密钥管理、获取DRM度量记录、设备属性等。在调用MediaKeySystem方法之前,必须使用createMediaKeySystem创建一个MediaKeySystem实例。

setConfigurationString

setConfigurationString(configName: string, value: string): void

设置字符串类型的配置信息。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
configName string 配置属性名,不能为空,属性名参考PreDefinedConfigName,具体支持的属性名由设备上DRM解决方案决定。
value string 配置属性值。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
try {
  mediaKeySystem.setConfigurationString("stringConfigName", "stringConfigValue"); // 确保stringConfigName是可配置的。
} catch (err) {
  let error = err as BusinessError;
  console.error(`setConfigurationString ERROR: ${error}`);
}

getConfigurationString

getConfigurationString(configName: string): string

获取字符串类型的配置属性值。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
configName string 配置属性名,不能为空,属性名参考PreDefinedConfigName,具体支持的属性名由设备上DRM解决方案决定。

返回值:

类型 说明
string 返回字符串类型的配置属性值。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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).
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
try {
  let configValue: string = mediaKeySystem.getConfigurationString("vendor");
} catch (err) {
  let error = err as BusinessError;
  console.error(`getConfigurationString ERROR: ${error}`);  
}

setConfigurationByteArray

setConfigurationByteArray(configName: string, value: Uint8Array): void

设置数组类型的配置信息。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
configName string 配置属性名,不能为空,属性名参考PreDefinedConfigName,具体支持的属性名由设备上DRM解决方案决定。
value Uint8Array 数组类型的配置属性值,具体属性值由设备上DRM解决方案决定。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.
24700101 All unknown errors.
24700201 Fatal service error, for example, service died.

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
// 按实际需求填写configValue属性值,请按实际值传入。
let configValue: Uint8Array = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
try {
  // 需确认当前DRM解决方案的byteArrayConfigName属性是可配置的。
  mediaKeySystem.setConfigurationByteArray("byteArrayConfigName", configValue);
} catch (err) {
  let error = err as BusinessError;
  console.error(`setConfigurationByteArray ERROR: ${error}`);  
}

getConfigurationByteArray

getConfigurationByteArray(configName: string): Uint8Array

获取数组类型的配置信息。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
configName string 配置属性名,不能为空,属性名参考PreDefinedConfigName,具体支持的属性名由设备上DRM解决方案决定。

返回值:

类型 说明
Uint8Array 数组类型的配置属性值。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Parameter verification failed.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
try {
  let configValue: Uint8Array = mediaKeySystem.getConfigurationByteArray("deviceUniqueId"); // 确保deviceUniqueId属性是存在的。
} catch (err) {
  let error = err as BusinessError;
  console.error(`getConfigurationByteArray ERROR: ${error}`);  
}

getStatistics

getStatistics(): StatisticKeyValue[]

获取性能度量记录。其中包括当前会话数、插件版本信息、每个会话最大三次解密耗时、解密次数和解密失败次数。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

返回值:

类型 说明
StatisticKeyValue[] 度量记录。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
try {
  let statisticKeyValue: drm.StatisticKeyValue[] = mediaKeySystem.getStatistics();
} catch (err) {
  let error = err as BusinessError;
  console.error(`getConfigurationByteArray ERROR: ${error}`);
}

getMaxContentProtectionLevel

getMaxContentProtectionLevel(): ContentProtectionLevel

获取当前DRM解决方案支持的最大内容保护级别。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

返回值:

类型 说明
ContentProtectionLevel 返回设备支持的最大内容保护级别。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
try {
  let maxLevel: drm.ContentProtectionLevel = mediaKeySystem.getMaxContentProtectionLevel();
} catch (err) {
  let error = err as BusinessError;
  console.error(`getConfigurationByteArray ERROR: ${error}`);
}

generateKeySystemRequest

generateKeySystemRequest(): Promise

生成获取mediaKeySystem设备证书的请求。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

返回值:

类型 说明
Promise<ProvisionRequest> Promise对象,mediaKeySystem设备证书的请求。设备上如果已存在设备证书,会返回失败。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
// 设备上已有设备证书的情况下不需要调用。
mediaKeySystem.generateKeySystemRequest().then((ProvisionRequest: drm.ProvisionRequest) => {
  console.log("generateKeySystemRequest");
}).catch((err: BusinessError) => {
  console.error(`generateKeySystemRequest: ERROR: ${err}`);
});

processKeySystemResponse

processKeySystemResponse(response: Uint8Array): Promise

处理获得的设备证书请求的响应。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
response Uint8Array 设备证书响应。

返回值:

类型 说明
Promise Promise对象。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
// keySystemResponse是从DRM服务获取的设备证书响应,请按实际值传入;
let keySystemResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
mediaKeySystem.processKeySystemResponse(keySystemResponse).then(() => {
  console.log("processKeySystemResponse");
}).catch((err: BusinessError) => {
  console.error(`processKeySystemResponse: ERROR: ${err}`);
});

getCertificateStatus

getCertificateStatus():CertificateStatus

获取设备证书状态值。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

返回值:

类型 说明
CertificateStatus 设备证书状态值。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
try {
  let certificateStatus: drm.CertificateStatus = mediaKeySystem.getCertificateStatus();
} catch (err) {
  let error = err as BusinessError;
  console.error(`getCertificateStatus ERROR: ${error}`);
}

on(‘keySystemRequired’)

on(type: ‘keySystemRequired’, callback: (eventInfo: EventInfo) => void): void

监听设备证书请求事件,获取事件信息。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 事件类型,MediaKeySystem实例创建成功后可监听,需要设备证书时触发该事件。
callback Callback<EventInfo> 回调函数,返回事件信息。只要有该事件返回就证明需请求设备证书。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
mediaKeySystem.on('keySystemRequired', (eventInfo: drm.EventInfo) => {
  console.log('keySystemRequired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
});

off(‘keySystemRequired’)

off(type: ‘keySystemRequired’, callback?: (eventInfo: EventInfo) => void): void

注销设备证书请求事件的监听。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 监听事件类型,MediaKeySystem实例创建成功后可监听。
callback Callback<EventInfo> 回调函数,返回事件信息。可选。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.
24700101 All unknown errors

示例:

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
mediaKeySystem.off('keySystemRequired');

createMediaKeySession

createMediaKeySession(level: ContentProtectionLevel): MediaKeySession

创建指定内容保护级别的MediaKeySession实例。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
level ContentProtectionLevel 内容保护级别。

返回值:

类型 说明
MediaKeySession MediaKeySession实例。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors
24700104 Meet max MediaKeySession num limit
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
try {
  let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
} catch (err) {
  let error = err as BusinessError;
  console.error(`createMediaKeySession ERROR: ${error}`);
}

createMediaKeySession

createMediaKeySession(): MediaKeySession

创建DRM解决方案默认内容保护级别的MediaKeySession实例。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

返回值:

类型 说明
MediaKeySession MediaKeySession实例。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700104 Meet max MediaKeySession num limit
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
try {
  let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
} catch (err) {
  let error = err as BusinessError;
  console.error(`createMediaKeySession ERROR: ${error}`);
}

getOfflineMediaKeyIds

getOfflineMediaKeyIds(): Uint8Array[]

获取离线媒体密钥标识列表。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

返回值:

类型 说明
Uint8Array[] 离线媒体密钥标识列表。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
try {
  let offlineMediaKeyIds: Uint8Array[] = mediaKeySystem.getOfflineMediaKeyIds();
} catch (err) {
  let error = err as BusinessError;
  console.error(`getOfflineMediaKeyIds ERROR: ${error}`);
}

getOfflineMediaKeyStatus

getOfflineMediaKeyStatus(mediaKeyId: Uint8Array): OfflineMediaKeyStatus

获取指定离线媒体密钥标识的媒体密钥的状态值。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
mediaKeyId Uint8Array 离线媒体密钥标识。

返回值:

类型 说明
OfflineMediaKeyStatus 离线媒体密钥状态值。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入。
let mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
try {
  let configValue: drm.OfflineMediaKeyStatus = mediaKeySystem.getOfflineMediaKeyStatus(mediaKeyId);
} catch (err) {
  let error = err as BusinessError;
  console.error(`getOfflineMediaKeyStatus ERROR: ${error}`);
}

clearOfflineMediaKeys

clearOfflineMediaKeys(mediaKeyId: Uint8Array): void

删除指定媒体密钥标识的离线媒体密钥。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
mediaKeyId Uint8Array 离线媒体密钥标识。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed.Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入。
let mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
try {
  mediaKeySystem.clearOfflineMediaKeys(mediaKeyId);
} catch (err) {
  let error = err as BusinessError;
  console.error(`clearOfflineMediaKeys ERROR: ${error}`);
}

destroy

destroy(): void

销毁MediaKeySystem实例。

原子化服务API: 从API version 14开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
try {
  mediaKeySystem.destroy();
} catch (err) {
  let error = err as BusinessError;
  console.error(`mediaKeySystem destroy ERROR: ${error}`);
}

MediaKeySession

支持媒体密钥管理。在调用MediaKeySession方法之前,必须使用createMediaKeySession获取一个MediaKeySession实例。

generateMediaKeyRequest

generateMediaKeyRequest(mimeType: string, initData: Uint8Array, mediaKeyType: number, options?: OptionsData[]): Promise

生成媒体密钥请求。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
mimeType string 媒体类型,由DRM解决方案决定具体的支持类型。
initData Uint8Array 初始数据。
mediaKeyType number 媒体密钥类型。0表示在线,1表示离线。
options OptionsData[] 可选数据。

返回值:

类型 说明
Promise<MediaKeyRequest> Promise对象,媒体密钥请求。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
// pssh数据为版权保护系统描述头,封装在加密码流中,mp4文件中位于pssh box、dash码流中位于mpd及mp4的pssh box、hls+ts的码流位于m3u8及每个ts片段中,请按实际值传入。
let uint8pssh = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
mediaKeySession.generateMediaKeyRequest("video/avc", uint8pssh, drm.MediaKeyType.MEDIA_KEY_TYPE_ONLINE).then((mediaKeyRequest: drm.MediaKeyRequest) =>{
  console.log('generateMediaKeyRequest' + mediaKeyRequest);
}).catch((err: BusinessError) => {
  console.error(`generateMediaKeyRequest: ERROR: ${err}`);
});

processMediaKeyResponse

processMediaKeyResponse(response: Uint8Array): Promise

处理媒体密钥响应。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
response Uint8Array 媒体密钥响应。

返回值:

类型 说明
Promise Promise对象,媒体密钥标识。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
401 The parameter check failed. Possibly because: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
// mediaKeyResponse是从DRM服务获取的媒体密钥响应,按实际值填入。
let mediaKeyResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
mediaKeySession.processMediaKeyResponse(mediaKeyResponse).then((mediaKeyId: Uint8Array) => {
  console.log('processMediaKeyResponse:' + mediaKeyId);
}).catch((err: BusinessError) => {
  console.error(`processMediaKeyResponse: ERROR: ${err}`);
});

checkMediaKeyStatus

checkMediaKeyStatus(): MediaKeyStatus[]

检查当前媒体密钥状态。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

返回值:

类型 说明
MediaKeyStatus[] 当前媒体密钥状态值。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
try {
  let keyStatus: drm.MediaKeyStatus[] =  mediaKeySession.checkMediaKeyStatus();
} catch (err) {
  let error = err as BusinessError;
  console.error(`checkMediaKeyStatus ERROR: ${error}`);
}

clearMediaKeys

clearMediaKeys(): void

清除当前媒体密钥。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
// mediaKeyResponse是从DRM服务获取的媒体密钥响应,按实际值填入。
let mediaKeyResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
mediaKeySession.processMediaKeyResponse(mediaKeyResponse).then((mediaKeyId: Uint8Array) => {
  console.log('processMediaKeyResponse:' + mediaKeyId);
}).catch((err: BusinessError) => {
  console.error(`processMediaKeyResponse: ERROR: ${err}`);
});
try {
  mediaKeySession.clearMediaKeys();
} catch (err) {
  let error = err as BusinessError;
  console.error(`clearMediaKeys ERROR: ${error}`);
}

generateOfflineReleaseRequest

generateOfflineReleaseRequest(mediaKeyId: Uint8Array): Promise

生成离线媒体密钥释放请求。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
mediaKeyId Uint8Array 离线媒体密钥标识。

返回值:

类型 说明
Promise Promise对象,设备上的DRM解决方案支持离线媒体密钥释放处理,则返回离线媒体密钥释放请求。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际值传入。
let mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
mediaKeySession.generateOfflineReleaseRequest(mediaKeyId).then((offlineReleaseRequest: Uint8Array) => {
  console.log('generateOfflineReleaseRequest:' + offlineReleaseRequest);
}).catch((err: BusinessError) => {
  console.error(`generateOfflineReleaseRequest: ERROR: ${err}`);
});

processOfflineReleaseResponse

processOfflineReleaseResponse(mediaKeyId: Uint8Array, response: Uint8Array): Promise

处理离线媒体密钥释放响应。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
mediaKeyId Uint8Array 离线媒体密钥标识。
response Uint8Array 离线媒体密钥释放响应。

返回值:

类型 说明
Promise Promise对象,设备上的DRM解决方案支持离线媒体密钥释放处理,则返回。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际长度申请内存。
let mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
mediaKeySession.generateOfflineReleaseRequest(mediaKeyId).then((offlineReleaseRequest: Uint8Array) => {
  console.log('generateOfflineReleaseRequest:' + offlineReleaseRequest);
}).catch((err: BusinessError) => {
  console.error(`generateOfflineReleaseRequest: ERROR: ${err}`);
});
// offlineReleaseResponse是从DRM服务获取的离线媒体密钥释放响应,请按实际长度申请内存。
let offlineReleaseResponse = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
mediaKeySession.processOfflineReleaseResponse(mediaKeyId, offlineReleaseResponse).then(() => {
  console.log('processOfflineReleaseResponse');
}).catch((err: BusinessError) => {
  console.error(`processOfflineReleaseResponse: ERROR: ${err}`);
});

restoreOfflineMediaKeys

restoreOfflineMediaKeys(mediaKeyId: Uint8Array): Promise

恢复离线媒体密钥。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
mediaKeyId Uint8Array 离线媒体密钥标识。

返回值:

类型 说明
Promise Promise对象。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
// mediaKeyId是processMediaKeyResponse或getOfflineMediaKeyIds接口返回的媒体密钥标识,请按实际数据传入。
let mediaKeyId = new Uint8Array([0x00, 0x00, 0x00, 0x00]);
mediaKeySession.restoreOfflineMediaKeys(mediaKeyId).then(() => {
  console.log("restoreOfflineMediaKeys");
}).catch((err: BusinessError) => {
  console.error(`restoreOfflineMediaKeys: ERROR: ${err}`);
});

getContentProtectionLevel

getContentProtectionLevel(): ContentProtectionLevel

获取当前会话的内容保护级别。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

返回值:

类型 说明
ContentProtectionLevel 返回当前会话内容保护级别。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
try {
  let contentProtectionLevel: drm.ContentProtectionLevel = mediaKeySession.getContentProtectionLevel();
} catch (err) {
  let error = err as BusinessError;
  console.error(`getContentProtectionLevel ERROR: ${error}`);
}

requireSecureDecoderModule

requireSecureDecoderModule(mimeType: string): boolean

是否需要安全解码。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
mimeType string 媒体类型,由DRM解决方案决定具体的支持类型。

返回值:

类型 说明
boolean 是否需要安全解码,true表示需要安全解码,false表示不需要安全解码。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
try {
  let status: boolean = mediaKeySession.requireSecureDecoderModule("video/avc");
} catch (err) {
  let error = err as BusinessError;
  console.error(`requireSecureDecoderModule ERROR: ${error}`);
} 

on(‘keyRequired’)

on(type: ‘keyRequired’, callback: (eventInfo: EventInfo) => void): void

监听密钥请求事件。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 事件类型,固定为’keyRequired’,当播放DRM节目需要获取媒体密钥时触发。
callback Callback<EventInfo> 回调函数,返回事件信息。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
mediaKeySession.on('keyRequired', (eventInfo: drm.EventInfo) => {
  console.log('keyRequired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
});

off(‘keyRequired’)

off(type: ‘keyRequired’, callback?: (eventInfo: EventInfo) => void): void

注销密钥请求事件监听。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 监听事件类型,固定为’keyRequired’。
callback Callback<EventInfo> 回调函数,返回事件信息。可选。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
mediaKeySession.off('keyRequired');

on(‘keyExpired’)

on(type: ‘keyExpired’, callback: (eventInfo: EventInfo) => void): void

监听密钥过期事件。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 监听事件类型,固定为’keyExpired’。密钥过期时触发。
callback Callback<EventInfo> 回调函数,返回事件信息。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
mediaKeySession.on('keyExpired', (eventInfo: drm.EventInfo) => {
  console.log('keyExpired ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
});

off(‘keyExpired’)

off(type: ‘keyExpired’, callback?: (eventInfo: EventInfo) => void): void

注销密钥过期事件监听。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 监听事件类型,固定为’keyExpired’。
callback Callback<EventInfo> 回调函数,返回事件信息。可选。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
mediaKeySession.off('keyExpired');

on(‘vendorDefined’)

on(type: ‘vendorDefined’, callback: (eventInfo: EventInfo) => void): void

监听DRM解决方案自定义事件。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 监听事件,固定为’vendorDefined’。自定义事件发生时触发。
callback Callback<EventInfo> 回调函数,返回事件信息。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
mediaKeySession.on('vendorDefined', (eventInfo: drm.EventInfo) => {
  console.log('vendorDefined ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
});

off(‘vendorDefined’)

off(type: ‘vendorDefined’, callback?: (eventInfo: EventInfo) => void): void

注销DRM解决方案自定义事件监听。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 监听事件,固定为’vendorDefined’。
callback Callback<EventInfo> 回调函数,返回事件信息。可选。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
mediaKeySession.off('vendorDefined');

on(‘expirationUpdate’)

on(type: ‘expirationUpdate’, callback: (eventInfo: EventInfo) => void): void

监听密钥过期更新事件。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 监听事件类型,固定为’expirationUpdate’。密钥过期更新时触发。
callback Callback<EventInfo> 回调函数,返回事件信息。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
mediaKeySession.on('expirationUpdate', (eventInfo: drm.EventInfo) => {
  console.log('expirationUpdate ' + 'extra: ' + eventInfo.extraInfo + 'data: ' + eventInfo.info);
});

off(‘expirationUpdate’)

off(type: ‘expirationUpdate’, callback?: (eventInfo: EventInfo) => void): void

注销过期更新事件监听。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 监听事件类型,固定为’expirationUpdate’。
callback Callback<EventInfo> 回调函数,返回事件信息。可选。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
mediaKeySession.off('expirationUpdate');

on(‘keysChange’)

on(type: ‘keysChange’, callback: (keyInfo: KeysInfo[], newKeyAvailable: boolean) => void): void

监听密钥变化事件。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 监听事件类型,固定为’keysChange’。密钥变化时触发。
callback Callback<KeysInfo[], boolean> 回调函数,返回事件信息,包含密钥标识和密钥状态描述的列表及密钥是否可用。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
mediaKeySession.on('keysChange', (keyInfo: drm.KeysInfo[], newKeyAvailable: boolean) => {
  for (let i = 0; i < keyInfo.length; i++) {
    console.log('keysChange' + 'keyId:' + keyInfo[i].keyId + ' data:' + keyInfo[i].value);
  }
});

off(‘keysChange’)

off(type: ‘keysChange’, callback?: (keyInfo: KeysInfo[], newKeyAvailable: boolean) => void): void

注销密钥变化事件监听。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

参数:

参数名 类型 必填 说明
type string 监听事件类型,固定为’keysChange’。
callback Callback<KeysInfo[], boolean> 回调函数,返回事件信息,包含密钥标识和密钥状态描述的列表及密钥是否可用。

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
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.
24700101 All unknown errors

示例:

import { drm } from '@kit.DrmKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
mediaKeySession.off('keysChange');

destroy

destroy(): void

销毁MediaKeySession实例。

原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。

系统能力: SystemCapability.Multimedia.Drm.Core

错误码:

以下错误码的详细介绍请参见DRM错误码

错误码ID 错误信息
24700101 All unknown errors
24700201 Fatal service error, for example, service died

示例:

import { drm } from '@kit.DrmKit';
import { BusinessError } from '@kit.BasicServicesKit';

let mediaKeySystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm");
let mediaKeySession: drm.MediaKeySession = mediaKeySystem.createMediaKeySession();
try {
  mediaKeySession.destroy();
} catch (err) {
  let error = err as BusinessError;
  console.error(`mediaKeySession destroy ERROR: ${error}`);
}

你可能感兴趣的鸿蒙文章

harmony 鸿蒙DRM Kit(数字版权保护服务)

harmony 鸿蒙DRM_KeysInfo

harmony 鸿蒙DRM_MediaKeyRequest

harmony 鸿蒙DRM_MediaKeyRequestInfo

harmony 鸿蒙DRM_MediaKeyStatus

harmony 鸿蒙DRM_MediaKeySystemDescription

harmony 鸿蒙DRM_MediaKeySystemInfo

harmony 鸿蒙DRM_OfflineMediakeyIdArray

harmony 鸿蒙DRM_PsshInfo

harmony 鸿蒙DRM_Statistics

0  赞