harmony 鸿蒙Multimedia_Drm

2025-06-12 浏览 (1)

Multimedia_Drm

概述

三方应用自行实现媒体解封装,可使用本模块提供的接口设置解密参数, 且当DRM实例和会话创建完成后,以实现DRM加密节目的解密功能。

对应的开发指南及样例可参考媒体数据解析

系统能力: SystemCapability.Multimedia.Media.Spliter

起始版本: 12

汇总

文件

名称描述
native_cencinfo.h声明用于设置解密参数的Native API。

结构体

名称描述
struct DrmSubsampleSubsample结构类型定义。

宏定义

名称描述
DRM_KEY_ID_SIZE 16Key id长度为16字节。
DRM_KEY_IV_SIZE 16Iv长度为16字节。
DRM_KEY_MAX_SUB_SAMPLE_NUM 64最大的Subsample数量为64个。

类型定义

名称描述
typedef struct OH_AVBuffer OH_AVBufferAVBuffer结构。
typedef struct OH_AVCencInfo OH_AVCencInfoAVCencInfo结构。
typedef enum DrmCencAlgorithm DrmCencAlgorithmDrm CENC算法类型。
typedef enum DrmCencInfoMode DrmCencInfoMode枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。
typedef struct DrmSubsample DrmSubsampleSubsample结构类型定义。

枚举

名称描述
DrmCencAlgorithm {
DRM_ALG_CENC_UNENCRYPTED = 0x0, DRM_ALG_CENC_AES_CTR = 0x1,
DRM_ALG_CENC_AES_WV = 0x2, DRM_ALG_CENC_AES_CBC = 0x3,
DRM_ALG_CENC_SM4_CBC = 0x4, DRM_ALG_CENC_SM4_CTR = 0x5
}
Drm CENC算法类型。
DrmCencInfoMode {
DRM_CENC_INFO_KEY_IV_SUBSAMPLES_SET = 0x0,
DRM_CENC_INFO_KEY_IV_SUBSAMPLES_NOT_SET = 0x1 }
枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。

函数

名称描述
OH_AVCencInfo * OH_AVCencInfo_Create ()创建用于设置cencInfo的OH_AVCencInfo实例。
OH_AVErrCode OH_AVCencInfo_Destroy (OH_AVCencInfo *cencInfo)销毁OH_AVCencInfo实例并释放内部资源。
OH_AVErrCode OH_AVCencInfo_SetAlgorithm (OH_AVCencInfo *cencInfo, enum DrmCencAlgorithm algo)设置cencInfo加密算法。
OH_AVErrCode OH_AVCencInfo_SetKeyIdAndIv (OH_AVCencInfo *cencInfo, uint8_t *keyId, uint32_t keyIdLen, uint8_t *iv, uint32_t ivLen)设置cencInfo的keyId和iv。
OH_AVErrCode OH_AVCencInfo_SetSubsampleInfo (OH_AVCencInfo *cencInfo, uint32_t encryptedBlockCount, uint32_t skippedBlockCount, uint32_t firstEncryptedOffset, uint32_t subsampleCount, DrmSubsample *subsamples)设置cencInfo的subsamples信息。
OH_AVErrCode OH_AVCencInfo_SetMode (OH_AVCencInfo *cencInfo, enum DrmCencInfoMode mode)设置cencInfo的模式。
OH_AVErrCode OH_AVCencInfo_SetAVBuffer (OH_AVCencInfo *cencInfo, OH_AVBuffer *buffer)将cencInfo设置到AVBuffer。

宏定义说明

DRM_KEY_ID_SIZE

#define DRM_KEY_ID_SIZE   16

描述

Key id长度为16字节。

起始版本: 12

DRM_KEY_IV_SIZE

#define DRM_KEY_IV_SIZE   16

描述

Iv长度为16字节。

起始版本: 12

DRM_KEY_MAX_SUB_SAMPLE_NUM

#define DRM_KEY_MAX_SUB_SAMPLE_NUM   64

描述

最大的Subsample数量为64个。

起始版本: 12

类型定义说明

DrmCencAlgorithm

typedef enum DrmCencAlgorithm DrmCencAlgorithm

描述

Drm CENC算法类型。

起始版本: 12

DrmCencInfoMode

typedef enum DrmCencInfoMode DrmCencInfoMode

描述

枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。

起始版本: 12

DrmSubsample

typedef struct DrmSubsample DrmSubsample

描述

Subsample结构类型定义。

起始版本: 12

OH_AVBuffer

typedef struct OH_AVBuffer OH_AVBuffer

描述

AVBuffer结构。

起始版本: 12

OH_AVCencInfo

typedef struct OH_AVCencInfo OH_AVCencInfo

描述

AVCencInfo结构。

起始版本: 12

枚举类型说明

DrmCencAlgorithm

enum DrmCencAlgorithm

描述

Drm CENC算法类型。

起始版本: 12

枚举值描述
DRM_ALG_CENC_UNENCRYPTED不加密算法。
DRM_ALG_CENC_AES_CTRAES CTR算法。
DRM_ALG_CENC_AES_WVAES WV算法。
DRM_ALG_CENC_AES_CBCAES CBC算法。
DRM_ALG_CENC_SM4_CBCSM4 CBC算法。
DRM_ALG_CENC_SM4_CTRSM4 CTR算法。

DrmCencInfoMode

enum DrmCencInfoMode

描述

枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。

起始版本: 12

枚举值描述
DRM_CENC_INFO_KEY_IV_SUBSAMPLES_SETkeyId/iv/subsample信息已设置。
DRM_CENC_INFO_KEY_IV_SUBSAMPLES_NOT_SETkeyId/iv/subsample信息未设置。

函数说明

OH_AVCencInfo_Create()

OH_AVCencInfo* OH_AVCencInfo_Create ()

描述

创建用于设置cencInfo的OH_AVCencInfo实例。

系统能力: SystemCapability.Multimedia.Media.Spliter

起始版本: 12

返回:

返回新创建的OH_AVCencInfo对象。如果返回nullptr,则表示创建对象失败。

可能失败的原因:应用程序地址空间已满,或者对象中的数据初始化失败。

OH_AVCencInfo_Destroy()

OH_AVErrCode OH_AVCencInfo_Destroy (OH_AVCencInfo * cencInfo)

描述

销毁OH_AVCencInfo实例并释放内部资源。

同一个实例只能销毁一次。在再次创建实例之前,不应使用该实例。 建议在实例销毁成功后立即将实例指针设置为nullptr。

系统能力: SystemCapability.Multimedia.Media.Spliter

起始版本: 12

参数:

名称描述
cencInfo指向OH_AVCencInfo实例的指针。

返回:

参考OH_AVErrCode:

AV_ERR_OK 0 - 执行成功。

AV_ERR_INVALID_VAL 3 - cencInfo为空。

OH_AVCencInfo_SetAlgorithm()

OH_AVErrCode OH_AVCencInfo_SetAlgorithm (OH_AVCencInfo * cencInfo, enum DrmCencAlgorithm algo )

描述

设置cencInfo加密算法。

系统能力: SystemCapability.Multimedia.Media.Spliter

起始版本: 12

参数:

名称描述
cencInfo指向OH_AVCencInfo实例的指针。
algo加密算法模式。

返回:

参考OH_AVErrCode:

AV_ERR_OK 0 - 执行成功。

AV_ERR_INVALID_VAL 3 - cencInfo为空。

OH_AVCencInfo_SetAVBuffer()

OH_AVErrCode OH_AVCencInfo_SetAVBuffer (OH_AVCencInfo * cencInfo, OH_AVBuffer * buffer )

描述

将cencInfo设置到AVBuffer。

系统能力: SystemCapability.Multimedia.Media.Spliter

起始版本: 12

参数:

名称描述
cencInfo指向OH_AVCencInfo实例的指针。
buffer携带数据的帧buffer。

返回:

参考OH_AVErrCode:

AV_ERR_OK 0 - 执行成功。

AV_ERR_INVALID_VAL 3 - 如果cencInfo为空,或者buffer为空, 或者buffer->buffer_为空,或者buffer->buffer_->meta_为空,则返回此错误码。

OH_AVCencInfo_SetKeyIdAndIv()

OH_AVErrCode OH_AVCencInfo_SetKeyIdAndIv (OH_AVCencInfo * cencInfo, uint8_t * keyId, uint32_t keyIdLen, uint8_t * iv, uint32_t ivLen )

描述

设置cencInfo的keyId和iv。

系统能力: SystemCapability.Multimedia.Media.Spliter

起始版本: 12

参数:

名称描述
cencInfo指向OH_AVCencInfo实例的指针。
keyIdKey标识。
keyIdLenKey标识长度。
iv初始化向量。
ivLen初始化向量长度。

返回:

参考OH_AVErrCode:

AV_ERR_OK 0 - 执行成功。

AV_ERR_INVALID_VAL 3 - 如果cencInfo为空,或者keyId为空,或者keyIdLen != DRM_KEY_ID_SIZE,或者iv是空,或者ivLen != DRM_KEY_IV_SIZE,或者keyId拷贝失败,或者iv拷贝失败,则返回此错误码。

OH_AVCencInfo_SetMode()

OH_AVErrCode OH_AVCencInfo_SetMode (OH_AVCencInfo * cencInfo, enum DrmCencInfoMode mode )

描述

设置cencInfo的模式。

系统能力: SystemCapability.Multimedia.Media.Spliter

起始版本: 12

参数:

名称描述
cencInfo指向OH_AVCencInfo实例的指针。
modecencInfo模式,指示是否设置了keyId/iv/subsample。

返回:

参考OH_AVErrCode:

AV_ERR_OK 0 - 执行成功。

AV_ERR_INVALID_VAL 3 - cencInfo为空。

OH_AVCencInfo_SetSubsampleInfo()

OH_AVErrCode OH_AVCencInfo_SetSubsampleInfo (OH_AVCencInfo * cencInfo, uint32_t encryptedBlockCount, uint32_t skippedBlockCount, uint32_t firstEncryptedOffset, uint32_t subsampleCount, DrmSubsample * subsamples )

描述

设置cencInfo的subsamples信息。

系统能力: SystemCapability.Multimedia.Media.Spliter

起始版本: 12

参数:

名称描述
cencInfo指向OH_AVCencInfo实例的指针。
encryptedBlockCount加密块的数量。
skippedBlockCount不加密块的数量。
firstEncryptedOffset第一个加密有效负载的偏移量。
subsampleCountSubsample数量。
subsamplesSubsample内容集。

返回:

参考OH_AVErrCode:

AV_ERR_OK 0 - 执行成功。

AV_ERR_INVALID_VAL 3 - 如果cencInfo为空, 或者subsampleCount > DRM_KEY_MAX_SUB_SAMPLE_NUM,或者subsamples为空, 则返回此错误码。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙AVCodec Kit(音视频编解码服务)

harmony 鸿蒙AVCapability

harmony 鸿蒙AVDemuxer

harmony 鸿蒙AVMuxer

harmony 鸿蒙AVSource

harmony 鸿蒙AudioCodec

harmony 鸿蒙AudioDecoder

harmony 鸿蒙AudioEncoder

harmony 鸿蒙CodecBase

harmony 鸿蒙Core

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/4SiJ7C