diff --git a/zh-cn/application-dev/media/drm/drm-mediakeysession-management.md b/zh-cn/application-dev/media/drm/drm-mediakeysession-management.md index 0de9dba072fe58f53f6dfaa442e3239759cf9db4..f0fca7a911cee59607ff5a50f10d376cf9972f53 100644 --- a/zh-cn/application-dev/media/drm/drm-mediakeysession-management.md +++ b/zh-cn/application-dev/media/drm/drm-mediakeysession-management.md @@ -12,14 +12,20 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 import drm from '@ohos.multimedia.drm'; ``` -2. 调用MediaKeySession类中的generateMediaKeyRequest方法,生成许可证请求。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 +2. 导入BusinessError模块,用于获取drm模块相关接口抛出的错误码。 ```ts - function generateMediaKeyRequest(mimeType: string, initData: Uint8Array, mediakeyType: number, optionalData: OptionalData[]): Promise { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + import {BusinessError} from '@ohos.base'; + ``` + +3. 调用MediaKeySession类中的generateMediaKeyRequest方法,生成许可证请求。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 + + ```ts + function generateMediaKeyRequest(mimeType: string, initData: Uint8Array, mediakeyType: number, optionalData: drm.OptionalData[]): Promise { + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(); - var uint8pssh = new Uint8Array([0x00, 0x00, 0x00, 0x00]); - var optionalData = [ + let uint8pssh = new Uint8Array([0x00, 0x00, 0x00, 0x00]); + let optionalData = [ {name : "optionalDataNameA", value : "optionalDataValueA"}, {name : "optionalDataNameB", value : "optionalDataValueB"}, ]; @@ -32,11 +38,11 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 } ``` -3. 调用MediaKeySession类中的processMediaKeyResponse方法,处理许可证响应报文。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 +4. 调用MediaKeySession类中的processMediaKeyResponse方法,处理许可证响应报文。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts function processMediaKeyResponse(response: Uint8Array): Promise { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(); mediaKeySession.processMediaKeyResponse(response).then((mediaKeyId: Uint8Array) => { console.log('processMediaKeyResponse:' + mediaKeyId); @@ -47,11 +53,11 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 } ``` -4. 调用MediaKeySession类中的checkMediaKeyStatus方法,检查当前会话的许可证状态。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 +5. 调用MediaKeySession类中的checkMediaKeyStatus方法,检查当前会话的许可证状态。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts - function checkMediaKeyStatus(): MediaKeyStatus[] { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + function checkMediaKeyStatus(): drm.MediaKeyStatus[] { + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(); try { let mediakeyStatus: drm.MediaKeyStatus[] = mediaKeySession.checkMediaKeyStatus(); @@ -63,11 +69,11 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 } ``` -5. 调用MediaKeySession类中的clearMediaKeys方法,删除当前会话的许可证。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 +6. 调用MediaKeySession类中的clearMediaKeys方法,删除当前会话的许可证。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts function clearMediaKeys(): void { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(); try { mediaKeySession.clearMediaKeys(); @@ -78,13 +84,13 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 } ``` -6. 调用MediaKeySession类中的generateOfflineReleaseRequest方法,生成离线许可证释放请求。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 +7. 调用MediaKeySession类中的generateOfflineReleaseRequest方法,生成离线许可证释放请求。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts function generateOfflineReleaseRequest(mediakeyId: Uint8Array): Promise { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(); - var offlineReleaseRequest = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); + let offlineReleaseRequest = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); mediaKeySession.processMediaKeyResponse(offlineReleaseRequest).then((mediaKeyId: Uint8Array) => { console.log('processMediaKeyResponse:' + mediaKeyId); }).catch((err: BusinessError) => { @@ -99,15 +105,15 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 } ``` -7. 处理离线许可证释放响应。 +8. 处理离线许可证释放响应。 调用MediaKeySession类中的processOfflineReleaseResponse方法,处理离线许可证释放响应。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts function processOfflineReleaseResponse(response: Uint8Array): Promise { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(); - var offlineReleaseRequest = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); + let offlineReleaseRequest = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); mediaKeySession.processMediaKeyResponse(offlineReleaseRequest).then((mediaKeyId: Uint8Array) => { console.log('processMediaKeyResponse:' + mediaKeyId); }).catch((err: BusinessError) => { @@ -121,15 +127,15 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 } ``` -8. 恢复离线许可证。 +9. 恢复离线许可证。 调用MediaKeySession类中的restoreOfflineMediaKeys方法,恢复离线许可证。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts function restoreOfflineMediaKeys(mediakeyId: Uint8Array): Promise { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(); - var response = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); + let response = new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); mediaKeySession.processOfflineReleaseResponse(mediakeyId, response).then(() => { console.log('processOfflineReleaseResponse'); }).catch((err: BusinessError) => { @@ -143,13 +149,13 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 } ``` -9. 获取当前会话的安全级别。 +10. 获取当前会话的安全级别。 调用MediaKeySession类中的getContentProtectionLevel方法,获取当前会话的安全级别。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts - function getContentProtectionLevel(): ContentProtectionLevel { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + function getContentProtectionLevel(): drm.ContentProtectionLevel { + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(); try { let contentProtectionLevel: drm.ContentProtectionLevel = mediaKeySession.getContentProtectionLevel(); @@ -161,13 +167,13 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 } ``` -10. 查询安全解码模块状态。 +11. 查询安全解码模块状态。 调用MediaKeySession类中的requireSecureDecoderModule方法,查询安全解码模块状态。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts function requireSecureDecoderModule(mimeType: string): boolean { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(); try { let status: boolean = mediaKeySession.requireSecureDecoderModule(mimeType); @@ -179,18 +185,18 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 } ``` -11. 销毁MediaKeySession实例。 +12. 销毁MediaKeySession实例。 调用MediaKeySession类中的destroy方法,销毁MediaKeySession实例。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts - function destroy(mediaKeySession: MediaKeySession): void { + function destroy(mediaKeySession: drm.MediaKeySession): void { mediaKeySession.destroy(); return; } ``` -12. 状态监听。 +13. 状态监听。 在播放器应用开发过程中,可以随时监听MediaKeySession信息状态,包括密钥请求事件监听、密钥过期事件监听、第三方自定义事件监听、密钥过期更新事件监听、密钥变化事件监听。 @@ -198,7 +204,7 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 ```ts function onRegisterkeyRequired(mediaKeysession: drm.MediaKeysession): void { - mediaKeysession.on('keyRequired', (eventInfo: EventInfo) => { + mediaKeysession.on('keyRequired', (eventInfo: drm.EventInfo) => { console.log('keyRequired' + 'info:' + eventInfo.info + ' extraInfo:' + eventInfo.extraInfo); }); return; @@ -216,7 +222,7 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 ```ts function onRegisterkeyExpired(mediaKeysession: drm.MediaKeysession): void { - mediaKeysession.on('keyExpired', (eventInfo: EventInfo) => { + mediaKeysession.on('keyExpired', (eventInfo: drm.EventInfo) => { console.log('keyExpired' + 'info:' + eventInfo.info + ' extraInfo:' + eventInfo.extraInfo); }); return; @@ -234,7 +240,7 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 ```ts function onRegisterVendorDefined(mediaKeysession: drm.MediaKeysession): void { - mediaKeysession.on('vendorDefined', (eventInfo: EventInfo) => { + mediaKeysession.on('vendorDefined', (eventInfo: drm.EventInfo) => { console.log('vendorDefined' + 'info:' + eventInfo.info + ' extraInfo:' + eventInfo.extraInfo); }); return; @@ -252,7 +258,7 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 ```ts function onRegisterExpirationUpdated(mediaKeysession: drm.MediaKeysession): void { - mediaKeysession.on('expirationUpdate', (eventInfo: EventInfo) => { + mediaKeysession.on('expirationUpdate', (eventInfo: drm.EventInfo) => { console.log('expirationUpdate' + 'info:' + eventInfo.info + ' extraInfo:' + eventInfo.extraInfo); }); return; @@ -270,7 +276,7 @@ DRM会话管理(MediaKeySession)支持MediaKeySession实例管理、许可 ```ts function onRegisterKeyChanged(mediaKeysession: drm.MediaKeysession): void { - mediaKeysession.on('keysChange', (eventInfo: EventInfo) => { + mediaKeysession.on('keysChange', (eventInfo: drm.EventInfo) => { console.log('keysChange' + 'info:' + eventInfo.info + ' extraInfo:' + eventInfo.extraInfo); }); return; diff --git a/zh-cn/application-dev/media/drm/drm-mediakeysystem-management.md b/zh-cn/application-dev/media/drm/drm-mediakeysystem-management.md index 8300aa3f468a674d51a6a070acdfc9cd44a5730c..469bd47441dcbb828e695f1a148de9724d2a1d98 100644 --- a/zh-cn/application-dev/media/drm/drm-mediakeysystem-management.md +++ b/zh-cn/application-dev/media/drm/drm-mediakeysystem-management.md @@ -12,11 +12,17 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 import drm from '@ohos.multimedia.drm'; ``` -2. 调用MediaKeySystem类中的setConfigurationString方法,设置当前设备支持的字符串类型的属性值。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 +2. 导入BusinessError模块,用于获取drm模块相关接口抛出的错误码。 + + ```ts + import {BusinessError} from '@ohos.base'; + ``` + +3. 调用MediaKeySystem类中的setConfigurationString方法,设置当前设备支持的字符串类型的属性值。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts function setConfigurationString(configName: string, value: string): void { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); try { mediaKeysystem.setConfigurationString(configName, value); } catch (err) { @@ -27,11 +33,11 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -3. 调用MediaKeySystem类中的getConfigurationString方法,获取字符串类型的设备相关设备属性。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 +4. 调用MediaKeySystem类中的getConfigurationString方法,获取字符串类型的设备相关设备属性。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts function getConfigurationString(configName: string): string { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); try { let configValue: string = mediaKeysystem.getConfigurationString(configName); } catch (err) { @@ -42,11 +48,11 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -4. 调用MediaKeySystem类中的setConfigurationByteArray方法,设置当前设备支持的字符数组类型的属性值。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 +5. 调用MediaKeySystem类中的setConfigurationByteArray方法,设置当前设备支持的字符数组类型的属性值。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts function setConfigurationByteArray(configName: string, value: Uint8Array): void { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); try { mediaKeysystem.setConfigurationByteArray(configName, value); } catch (err) { @@ -57,11 +63,11 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -5. 调用MediaKeySystem类中的getConfigurationByteArray方法,获取字符数组类型的设备相关设备属性值。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 +6. 调用MediaKeySystem类中的getConfigurationByteArray方法,获取字符数组类型的设备相关设备属性值。接口调用失败时,会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts function getConfigurationByteArray(configName: string): Uint8Array { - let mediaKeysystem: drm.mediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); + let mediaKeysystem: drm.MediaKeySystem = drm.createMediaKeySystem("com.clearplay.drm"); try { let configValue: Uint8Array = mediaKeysystem.getConfigurationByteArray(configName); } catch (err) { @@ -72,12 +78,12 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -6. 调用MediaKeySystem类中的getMetrics()方法,获取系统统计信息。其中包括当前会话数、插件版本信息、解密次数和解密失败次数。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 +7. 调用MediaKeySystem类中的getMetrics()方法,获取系统统计信息。其中包括当前会话数、插件版本信息、解密次数和解密失败次数。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts - function getStatistics(): StatisticKeyValue[] { + function getStatistics(): drm.StatisticKeyValue[] { try { - let statisticKeyValue: StatisticKeyValue[] = mediaKeysystem.getStatistics(); + let statisticKeyValue: drm.StatisticKeyValue[] = mediaKeysystem.getStatistics(); } catch (err) { let error = err as BusinessError; console.error(`getConfigurationByteArray ERROR: ${error}`); @@ -86,12 +92,12 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -7. 获取设备最大安全级别。 +8. 获取设备最大安全级别。 调用MediaKeySystem类中的getMaxContentProtectionLevel方法,获取设备支持的安全级别。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts - function getMaxContentProtectionLevel(): ContentProtectionLevel { + function getMaxContentProtectionLevel(): drm.ContentProtectionLevel { try { let contentProtectionLevel: drm.ContentProtectionLevel = mediaKeysystem.getMaxContentProtectionLevel(); } catch (err) { @@ -102,7 +108,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -8. 生成设备证书请求。 +9. 生成设备证书请求。 调用MediaKeySystem类中的generateKeySystemRequest方法,获取设备证书请求。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 @@ -117,7 +123,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -9. 处理设备证书响应。 +10. 处理设备证书响应。 调用MediaKeySystem类中的processKeySystemResponse方法,处理设备证书响应。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 @@ -132,12 +138,12 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -10. 获取设备证书状态。 +11. 获取设备证书状态。 调用MediaKeySystem类中的getCertificateStatus方法,获取设备证书状态。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts - function getCertificateStatus(): CertificateStatus { + function getCertificateStatus(): drm.CertificateStatus { try { let certificateStatus: drm.CertificateStatus = mediaKeysystem.getCertificateStatus(); } catch (err) { @@ -148,14 +154,14 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -11. 创建DRM会话。 +12. 创建DRM会话。 调用MediaKeySystem类中的createMediaKeySession方法,按指定安全级别进行创建会话。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts - function createMediaKeySession(level: ContentProtectionLevel): MediaKeySession { + function createMediaKeySession(level: drm.ContentProtectionLevel): drm.MediaKeySession { try { - let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(drm.level.CONTENT_PROTECTION_LEVEL_SW_CRYPTO); + let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(level.CONTENT_PROTECTION_LEVEL_SW_CRYPTO); } catch (err) { let error = err as BusinessError; console.error(`getCertificateStatus ERROR: ${error}`); @@ -164,12 +170,12 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -12. 创建DRM会话。 +13. 创建DRM会话。 调用MediaKeySystem类中的createMediaKeySession方法,创建会话。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts - function createMediaKeySession(): MediaKeySession { + function createMediaKeySession(): drm.MediaKeySession { try { let mediaKeySession: drm.MediaKeySession = mediaKeysystem.createMediaKeySession(); } catch (err) { @@ -180,7 +186,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -13. 获取离线许可证Id。 +14. 获取离线许可证Id。 调用MediaKeySystem类中的getOfflineMediaKeyIds方法,获取离线许可证Id。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 @@ -196,12 +202,12 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -14. 获取离线许可证状态。 +15. 获取离线许可证状态。 调用MediaKeySystem类中的getOfflineMediaKeyStatus方法,获取离线许可证状态。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts - function getOfflineMediaKeyStatus(mediakeyId: Uint8Array): OfflineMediaKeyStatus { + function getOfflineMediaKeyStatus(mediakeyId: Uint8Array): drm.OfflineMediaKeyStatus { try { let offlineMediaKeyStatus: drm.OfflineMediaKeyStatus = mediaKeysystem.getOfflineMediaKeyStatus(mediakeyId); } catch (err) { @@ -212,7 +218,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -15. 移除离线许可证。 +16. 移除离线许可证。 调用MediaKeySystem类中的clearOfflineMediaKeys方法,移除离线许可证。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 @@ -228,12 +234,12 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -16. 销毁MediaKeySystem实例。 +17. 销毁MediaKeySystem实例。 调用MediaKeySystem类中的destroy方法,销毁MediaKeySystem实例。接口调用失败会返回相应错误码,错误码类型参见[DrmErrorCode](../../reference/apis-drm-kit/js-apis-drm.md#drmerrorcode)。 ```ts - function destroy(mediaKeySyste: MediaKeySyste): void { + function destroy(mediaKeySyste: drm.MediaKeySyste): void { try { mediaKeysystem.destroy(); } catch (err) { @@ -244,7 +250,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -17. 状态监听。 +18. 状态监听。 在播放器应用开发过程中,可以随时监听MediaKeySystem信息状态,包括设备证书请求事件监听。 @@ -252,7 +258,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 ```ts function onRegisterkeySystemRequired(mediaKeysystem: drm.MediaKeySystem): void { - mediaKeysystem.on('keySystemRequired', (eventInfo: EventInfo) => { + mediaKeysystem.on('keySystemRequired', (eventInfo: drm.EventInfo) => { console.log('keySystemRequired' + 'extra:' + eventInfo.extraInfo + ' data:' + eventInfo.info); }); } diff --git a/zh-cn/application-dev/media/drm/drm-plugin-management.md b/zh-cn/application-dev/media/drm/drm-plugin-management.md index 29f90910f7d1970076ee316513697a364b12227c..892f08479922cdee209b33febd50f6ad5f885325 100644 --- a/zh-cn/application-dev/media/drm/drm-plugin-management.md +++ b/zh-cn/application-dev/media/drm/drm-plugin-management.md @@ -13,15 +13,19 @@ ```ts import drm from '@ohos.multimedia.drm'; ``` +2. 导入BusinessError模块,用于获取drm模块相关接口抛出的错误码。 -2. 通过isMediaKeySystemSupported方法,查询设备是否支持对应的插件类型。 + ```ts + import {BusinessError} from '@ohos.base'; + ``` +3. 通过isMediaKeySystemSupported方法,查询设备是否支持对应的插件类型。 > **说明:** > > 如果查询为false,说明该设备不支持对应的DRM方案。 ```ts - function isMediaKeySystemSupported(name: string, mimeType: string, level: ContentProtectionLevel): boolean { + function isMediaKeySystemSupported(name: string, mimeType: string, level: drm.ContentProtectionLevel): boolean { let isSupported = drm.isMediaKeySystemSupported(name); isSupported = drm.isMediaKeySystemSupported(name, mimeType); isSupported = drm.isMediaKeySystemSupported(name, mimeType, level); @@ -29,17 +33,34 @@ } ``` -3. 通过drm的createMediaKeySystem(name: string)方法,创建MediaKeySystem实例,同步返回结果,创建失败,不可继续后续操作。 +4. 通过drm的createMediaKeySystem(name: string)方法,创建MediaKeySystem实例,同步返回结果,创建失败,不可继续后续操作。 > **说明:** > > 如果如果创建失败则返回undefined,说明该设备不支持DRM能力。 ```ts - function createMediaKeySystem(name: string): MediaKeySystem { + function createMediaKeySystem(name: string): drm.MediaKeySystem { let mediaKeySystem = drm.createMediaKeySystem(name); if (mediaKeySystem === undefined) { return undefined; } } ``` + +5. 通过getMediaKeySystemName方法,获取设备支持对应的插件类型的name和uuid。 + + > **说明:** + > + > 如果查询出的map的size为null,说明该设备中不存在支持的插件。 + + ```ts + function getMediaKeySystemName(name: string): drm.MediaKeySystem { + try { + let description : drm.MediaKeySystemDescripion[] = drm.getMediaKeySystemName(); + } catch (err) { + let error = err as BusinessError; + console.error('getMediaKeySystemName ERROR: ${error}') + } + } + ``` diff --git a/zh-cn/application-dev/media/drm/native-drm-mediakeysystem-management.md b/zh-cn/application-dev/media/drm/native-drm-mediakeysystem-management.md index 47a6dc8a1825875b5c06d96d49a96857cedda952..2138e3c5235e7affc9a4afdeaab95727201957dc 100644 --- a/zh-cn/application-dev/media/drm/native-drm-mediakeysystem-management.md +++ b/zh-cn/application-dev/media/drm/native-drm-mediakeysystem-management.md @@ -41,7 +41,20 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -4. 调用MediaKeySystem类中的OH_MediaKeySystem_Create方法创建MediaKeySystem实例。 +4. 调用MediaKeySystem类中的OH_MediaKeySystem_GetMediaKeySystems方法获取设备支持对应的插件类型的name和uuid。 + + ```c++ + uint32_t count = 10; + DRM_MediaKeySystemDescription infos[10]; + memset(infos, 0, sizeof(infos)); + Drm_ErrCode ret = OH_MediaKeySystem_GetMediaKeySystems(infos, &count); + if (ret != DRM_OK) { + OH_LOG_ERROR(LOG_APP, "OH_MediaKeySystem_GetMediaKeySystems failed."); + return ret; + } + ``` + +5. 调用MediaKeySystem类中的OH_MediaKeySystem_Create方法创建MediaKeySystem实例。 ```c++ MediaKeySystem *keySystem = NULL; @@ -57,7 +70,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -5. 调用MediaKeySystem类中的OH_MediaKeySystem_SetConfigurationString和OH_MediaKeySystem_GetConfigurationString方法设置和获取设备的配置属性信息,不同的DRM方案的配置属性信息可能存在差别,一般分为三类:设备属性、会话属性、输出保护状态属性。 +6. 调用MediaKeySystem类中的OH_MediaKeySystem_SetConfigurationString和OH_MediaKeySystem_GetConfigurationString方法设置和获取设备的配置属性信息,不同的DRM方案的配置属性信息可能存在差别,一般分为三类:设备属性、会话属性、输出保护状态属性。 属性名一般包含:"vendor"、"version"、"description"、"algorithms"、"maxSessionNum"、"maxHDCPLevel"、"currentHDCPLevel"、"maxADCPLevel"、"currentADCPLevel"等。 @@ -109,7 +122,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -6. 调用MediaKeySystem类中的OH_MediaKeySystem_GetMaxContentProtectionLevel方法获取最大的内容保护级别。 +7. 调用MediaKeySystem类中的OH_MediaKeySystem_GetMaxContentProtectionLevel方法获取最大的内容保护级别。 ```c++ MediaKeySystem *keySystem = NULL; @@ -130,7 +143,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -7. 调用MediaKeySystem类中的OH_MediaKeySystem_SetMediaKeySystemCallback方法设置MediaKeySystem监听回调。 +8. 调用MediaKeySystem类中的OH_MediaKeySystem_SetMediaKeySystemCallback方法设置MediaKeySystem监听回调。 ```c++ DRM_ErrCode TestSystemCallBack(DRM_EventType eventType, uint8_t *info, @@ -160,7 +173,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -8. 调用MediaKeySystem类中的OH_MediaKeySystem_CreateMediaKeySession方法创建MediaKeySession会话实例。 +9. 调用MediaKeySystem类中的OH_MediaKeySystem_CreateMediaKeySession方法创建MediaKeySession会话实例。 ```c++ MediaKeySystem *keySystem = NULL; @@ -187,7 +200,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -9. 调用MediaKeySystem类中的OH_MediaKeySystem_GenerateKeySystemRequest方法生成设备证书请求,调用MediaKeySystem类中的OH_MediaKeySystem_ProcessKeySystemResponse方法生成设备证书响应。 +10. 调用MediaKeySystem类中的OH_MediaKeySystem_GenerateKeySystemRequest方法生成设备证书请求,调用MediaKeySystem类中的OH_MediaKeySystem_ProcessKeySystemResponse方法生成设备证书响应。 ```c++ DRM_ErrCode MediaKeySystem_SetAndProcessMediaKeySystem() @@ -225,7 +238,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -10. 调用MediaKeySystem类中的OH_MediaKeySystem_GetOfflineMediaKeyIds方法获取离线许可证Id。 +11. 调用MediaKeySystem类中的OH_MediaKeySystem_GetOfflineMediaKeyIds方法获取离线许可证Id。 ```c++ MediaKeySystem *keySystem = NULL; @@ -244,7 +257,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -11. 调用MediaKeySystem类中的OH_MediaKeySystem_GetOfflineMediaKeyStatus方法获取对应离线许可证状态。 +12. 调用MediaKeySystem类中的OH_MediaKeySystem_GetOfflineMediaKeyStatus方法获取对应离线许可证状态。 ```c++ MediaKeySystem *keySystem = NULL; @@ -268,7 +281,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -12. 调用MediaKeySystem类中的OH_MediaKeySystem_ClearOfflineMediaKeys方法清理离线许可证。 +13. 调用MediaKeySystem类中的OH_MediaKeySystem_ClearOfflineMediaKeys方法清理离线许可证。 ```c++ MediaKeySystem *keySystem = NULL; @@ -292,7 +305,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -13. 调用MediaKeySystem类中的OH_MediaKeySystem_GetCertificateStatus方法获取设备证书状态。 +14. 调用MediaKeySystem类中的OH_MediaKeySystem_GetCertificateStatus方法获取设备证书状态。 ```c++ MediaKeySystem *keySystem = NULL; @@ -316,7 +329,7 @@ DRM系统管理(MediaKeySystem)支持MediaKeySystem实例管理、设备证 } ``` -14. 调用MediaKeySystem类中的OH_MediaKeySystem_Destroy方法销毁MediaKeySystem实例。 +15. 调用MediaKeySystem类中的OH_MediaKeySystem_Destroy方法销毁MediaKeySystem实例。 ```c++ MediaKeySystem *keySystem = NULL;