harmony 鸿蒙@ohos.multimedia.drm (数字版权保护)
@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_MediaKeyRequestInfo
harmony 鸿蒙DRM_MediaKeySystemDescription
harmony 鸿蒙DRM_MediaKeySystemInfo
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦