1# CodecBase 2 3## 概述 4 5CodecBase模块提供用于音视频封装、解封装、编解码基础功能的变量、属性以及函数。 6 7**系统能力:** SystemCapability.Multimedia.Media.CodecBase 8 9**起始版本:** 9 10 11## 文件汇总 12 13| 名称 | 描述 | 14| -- | -- | 15| [avcodec_audio_channel_layout.h](capi-avcodec-audio-channel-layout-h.md) | 音频编解码枚举的声明。 | 16| [native_avcodec_base.h](capi-native-avcodec-base-h.md) | 声明用于音视频封装、解封装、编解码基础功能的Native API。 | 17 18## 媒体编解码格式 19 20用于描述媒体编解码格式的名字如下表。类型是常量字符串。 21 22| 名称 | 描述 | 23| ------------------------------------------------------------ | ------------------------------------------------------ | 24| OH_AVCODEC_MIMETYPE_AUDIO_AAC | AAC音频编解码器的MIME类型。 | 25| OH_AVCODEC_MIMETYPE_AUDIO_FLAC | FLAC音频编解码器的MIME类型。 | 26| OH_AVCODEC_MIMETYPE_AUDIO_OPUS | OPUS音频编解码器的MIME类型。<!--Del-->(此规格暂未开放)<!--DelEnd--> | 27| OH_AVCODEC_MIMETYPE_AUDIO_G711MU | G711MU音频编解码器的MIME类型。 | 28| OH_AVCODEC_MIMETYPE_AUDIO_G711A | G711A音频解码器的MIME类型。 | 29| OH_AVCODEC_MIMETYPE_AUDIO_RAW | RAW音频码流的MIME类型。 | 30| OH_AVCODEC_MIMETYPE_AUDIO_VORBIS | VORBIS音频解码器的MIME类型。 | 31| OH_AVCODEC_MIMETYPE_AUDIO_MPEG | MP3音频编解码器的MIME类型。 | 32| OH_AVCODEC_MIMETYPE_AUDIO_VIVID | Audio Vivid音频解码器的MIME类型。<!--Del-->(此规格暂未开放)<!--DelEnd--> | 33| OH_AVCODEC_MIMETYPE_AUDIO_AMR_NB | AMR_NB音频解码器的MIME类型。 | 34| OH_AVCODEC_MIMETYPE_AUDIO_AMR_WB | AMR_WB音频解码器的MIME类型。 | 35| OH_AVCODEC_MIMETYPE_AUDIO_APE |APE音频解码器的MIME类型。 | 36| OH_AVCODEC_MIMETYPE_VIDEO_VVC | VVC(H.266)视频编解码器的MIME类型。 | 37| OH_AVCODEC_MIMETYPE_VIDEO_HEVC | HEVC(H.265)视频编解码器的MIME类型。 | 38| OH_AVCODEC_MIMETYPE_VIDEO_AVC | AVC(H.264)视频编解码器的MIME类型。 | 39| OH_AVCODEC_MIMETYPE_VIDEO_H263 | H.263视频编解码器的MIME类型。 | 40| OH_AVCODEC_MIMETYPE_VIDEO_MPEG4 | MPEG4视频编码的MIME类型,仅用于封装MPEG4视频码流使用。(API11废弃) | 41| OH_AVCODEC_MIMETYPE_VIDEO_MPEG4_PART2 | 视频MPEG4 Part2编解码器的MIME类型。 | 42| OH_AVCODEC_MIMETYPE_VIDEO_MPEG2 | 视频MPEG2编解码器的MIME类型。 | 43| OH_AVCODEC_MIMETYPE_IMAGE_JPG | JPG图片编码的MIME类型,仅用于封装JPG封面时使用。 | 44| OH_AVCODEC_MIMETYPE_IMAGE_PNG | PNG图片编码的MIME类型,仅用于封装PNG封面时使用。 | 45| OH_AVCODEC_MIMETYPE_IMAGE_BMP | BMP图片编码的MIME类型,仅用于封装BMP封面时使用。 | 46| OH_AVCODEC_MIMETYPE_SUBTITLE_WEBVTT |WEBVTT字幕解封装器的MIME类型。 | 47| OH_AVCODEC_MIMETYPE_SUBTITLE_SRT |SRT字幕解封装器的MIME类型。 | 48 49## 媒体数据键值对 50 51用于描述媒体数据的键值对查找表如下。键的类型是常量字符串,值的类型可以是int32_t/int64_t/float/double/char */uint8_t *。 52 53使用以下key的主要接口是[OH_AVFormat](_core.md#函数),通过以下key可以进行参数配置或查询。 54 55### 能力查询专有的键值对 56 57| 名称 | 描述 | 58| ------------------------------------------------------------ | ------------------------------------------------------------ | 59| OH_FEATURE_PROPERTY_KEY_VIDEO_ENCODER_MAX_LTR_FRAME_COUNT | 在视频编码中获取长期参考帧的最大个数的键,值类型为int32_t。 | 60 61### 音视频公共的键值对 62 63| 名称 | 描述 | 64| ------------------------------------------------------------ | ------------------------------------------------------------ | 65| OH_MD_KEY_CODEC_CONFIG | 编解码器特定数据的键,视频中表示传递SPS/PPS,音频中表示传递extraData,值类型为uint8_t\*。该键是可选的。 <!--Del-->(视频编解码此功能暂未支持)<!--DelEnd--> | 66| OH_MD_MAX_INPUT_BUFFER_COUNT | 最大输入缓冲区个数的键,值类型为int32_t。该键是可选的。 | 67| OH_MD_MAX_OUTPUT_BUFFER_COUNT | 最大输出缓冲区个数的键,值类型int32_t。该键是可选的。 | 68| OH_MD_KEY_BITRATE | 比特率的键,值类型为int64_t。该键用于音视频编码场景。在视频编码场景下该键是可选的。 | 69| OH_MD_KEY_PROFILE | 编码档次,值类型为int32_t,请参见[OH_AVCProfile](capi-native-avcodec-base-h.md#oh_avcprofile),[OH_HEVCProfile](capi-native-avcodec-base-h.md#oh_hevcprofile),[OH_AACProfile](capi-native-avcodec-base-h.md#oh_aacprofile)。该键是可选的。 | 70| OH_MD_KEY_MAX_INPUT_SIZE | 设置解码输入码流大小最大值的键,值类型为int32_t。该键是可选的。 | 71 72### 视频专有的键值对 73 74| 名称 | 描述 | 75| ------------------------------------------------------------ | ------------------------------------------------------------ | 76| OH_ED_KEY_TIME_STAMP | 表示surfacebuffer时间戳的键,值类型为int64_t。该键是可选的。(API14废弃) | 77| OH_ED_KEY_EOS | 表示surfacebuffer流结束符的键,值类型为int32_t。该键是可选的。(API14废弃)| 78| OH_MD_KEY_WIDTH | 视频宽度的键,值类型为int32_t。 | 79| OH_MD_KEY_HEIGHT | 视频高度键,值类型为int32_t。 | 80| OH_MD_KEY_PIXEL_FORMAT | 视频像素格式的键,值类型为int32_t,请参见[OH_AVPixelFormat](_core.md#oh_avpixelformat)。 | 81| OH_MD_KEY_FRAME_RATE | 视频帧率的键,值类型为double。该键是可选的。 | 82| OH_MD_KEY_RANGE_FLAG | 视频YUV值域标志的键,值类型为int32_t,1表示full range,0表示limited range。该键是可选的。 | 83| OH_MD_KEY_COLOR_PRIMARIES | 视频色域的键,值类型为int32_t,请参见[OH_ColorPrimary](capi-native-avcodec-base-h.md#oh_colorprimary),遵循H.273标准Table2。该键是可选的。 | 84| OH_MD_KEY_TRANSFER_CHARACTERISTICS | 视频传递函数的键,值类型为int32_t,请参见[OH_TransferCharacteristic](capi-native-avcodec-base-h.md#oh_transfercharacteristic),遵循H.273标准Table3。该键是可选的。 | 85| OH_MD_KEY_MATRIX_COEFFICIENTS | 视频矩阵系数的键,值类型为int32_t,请参见[OH_MatrixCoefficient](capi-native-avcodec-base-h.md#oh_matrixcoefficient),遵循H.273标准Table4。该键是可选的。 | 86| OH_MD_KEY_VIDEO_STRIDE | 描述视频帧宽跨距的键,值类型为int32_t。该键是可选的。 | 87| OH_MD_KEY_VIDEO_SLICE_HEIGHT | 描述视频帧高跨距的键,值类型为int32_t。该键是可选的。 | 88| OH_MD_KEY_VIDEO_PIC_WIDTH | 描述视频帧真实宽度的键,值类型为int32_t。该键是可选的。 | 89| OH_MD_KEY_VIDEO_PIC_HEIGHT | 描述视频帧真实高度的键,值类型为int32_t。该键是可选的。 | 90| OH_MD_KEY_VIDEO_ENABLE_LOW_LATENCY | 使能低时延视频编解码的键,值类型为int32_t,1表示使能,0表示其它情况。该键是可选,在Configure阶段使用。 | 91| OH_MD_KEY_ENABLE_SYNC_MODE | 使能视频编解码同步模式的键,值类型为int32_t,1表示使能,0表示其它情况。该键是可选,在Configure阶段使用。 | 92| OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE | 视频编码码率模式,值类型为int32_t,请参见[OH_BitrateMode](capi-native-avcodec-base-h.md#oh_bitratemode)。该键是可选的。 | 93| OH_MD_KEY_QUALITY | 所需编码质量的键。值类型为int32_t,此键仅适用于配置在恒定质量模式下的编码器。该键是可选的。 | 94| OH_MD_KEY_REQUEST_I_FRAME | 请求立即编码I帧的键。值类型为int32_t。该键是可选的。 | 95| OH_MD_KEY_I_FRAME_INTERVAL | 关键帧间隔的键,值类型为int32_t,单位为毫秒。该键是可选的且只用于视频编码。 | 96| OH_MD_KEY_VIDEO_ENCODER_ENABLE_TEMPORAL_SCALABILITY | 使能分层编码的键,值类型为int32_t,1表示使能,0表示其它情况。该键是可选的且只用于视频编码,在Configure阶段使用。 | 97| OH_MD_KEY_VIDEO_ENCODER_TEMPORAL_GOP_SIZE | 描述图片组基本层图片的间隔大小的键,值类型为int32_t,只在使能分层编码时生效。该键是可选的且只用于视频编码,在Configure阶段使用。 | 98| OH_MD_KEY_VIDEO_ENCODER_TEMPORAL_GOP_REFERENCE_MODE | 描述图片组内参考模式的键,值类型为int32_t,请参见[OH_TemporalGopReferenceMode](capi-native-avcodec-base-h.md#oh_temporalgopreferencemode),只在使能分层编码时生效。该键是可选的且只用于视频编码,在Configure阶段使用。 | 99| OH_MD_KEY_VIDEO_ENCODER_LTR_FRAME_COUNT | 描述长期参考帧个数的键,值类型为int32_t,必须在支持的值范围内使用。该键是可选的且只用于视频编码。| 100| OH_MD_KEY_VIDEO_ENCODER_PER_FRAME_MARK_LTR | 标记当前帧为长期参考帧的键,值类型为int32_t,1表示被标记,0表示其它情况。该键是可选的且只用于视频编码。 | 101| OH_MD_KEY_VIDEO_ENCODER_PER_FRAME_USE_LTR | 描述当前帧参考的长期参考帧帧的POC号的键,值类型为int32_t。该键是可选的且只用于视频编码。 | 102| OH_MD_KEY_VIDEO_PER_FRAME_IS_LTR | 当前[OH_AVBuffer](_core.md#oh_avbuffer)中输出的码流对应的帧是否为长期参考帧的键,值类型为int32_t,1表示是LTR,0表示其它情况。该键是可选的且只用于视频编码。 | 103| OH_MD_KEY_VIDEO_PER_FRAME_POC | 描述帧的POC号的键,值类型为int32_t。该键是可选的且只用于视频编码。 | 104| OH_MD_KEY_VIDEO_ENCODER_QP_MAX | 描述视频编码器允许的最大量化参数的键,值类型为int32_t。该键是可选的且只用于视频编码。 | 105| OH_MD_KEY_VIDEO_ENCODER_QP_MIN | 描述视频编码器允许的最小量化参数的键,值类型为int32_t。该键是可选的且只用于视频编码。 | 106| OH_MD_KEY_VIDEO_ENCODER_QP_AVERAGE |描述视频帧平均量化参数的键,值类型为int32_t。该键是可选的且只用于视频编码。 | 107| OH_MD_KEY_VIDEO_ENCODER_MSE |描述视频帧平方误差的键,值类型为double。该键是可选的且只用于视频编码。 | 108| OH_MD_KEY_VIDEO_ENCODER_REPEAT_PREVIOUS_FRAME_AFTER | 如果在上一帧提交给编码器之后没有新的帧可用,则会以毫秒为单位重复提交最后一帧,值类型为int32_t。该键只用于视频编码Surface模式,在Configure阶段使用。 | 109| OH_MD_KEY_VIDEO_ENCODER_REPEAT_PREVIOUS_MAX_COUNT | 描述编码器在没有新的帧可用的情况下,可以对之前的帧进行重复编码的最大次数,值类型为int32_t。该键仅在OH_MD_KEY_VIDEO_ENCODER_REPEAT_PREVIOUS_FRAME_AFTER可用时生效,在Configure阶段使用。| 110| OH_MD_KEY_VIDEO_DECODER_OUTPUT_COLOR_SPACE | 设置视频解码器输出色彩空间的键,值类型为int32_t。 支持的值为OH_COLORSPACE_BT709_LIMIT。| 111| OH_MD_KEY_ROTATION | surface旋转角度的键。值类型为int32_t:应为{0, 90, 180, 270},默认值为0。该键只在视频解码Surface模式下使用。该键是可选的。 | 112| OH_MD_KEY_SCALING_MODE | 视频缩放模式,值类型为int32_t,请参见[OH_ScalingMode](capi-native-avcodec-base-h.md#oh_scalingmode)。该键是可选的且只用于视频解码Surface模式。建议直接调用[OH_NativeWindow_NativeWindowSetScalingModeV2](../apis-arkgraphics2d/capi-external-window-h.md#oh_nativewindow_nativewindowsetscalingmodev2)接口进行设置。(API14废弃)| 113| OH_MD_KEY_VIDEO_CROP_TOP | 描述裁剪矩形顶部坐标(y)值的键,值类型为int32_t。该键是可选的且只用于视频解码。 | 114| OH_MD_KEY_VIDEO_CROP_BOTTOM | 描述裁剪矩形底部坐标(y)值的键,值类型为int32_t。该键是可选的且只用于视频解码。 | 115| OH_MD_KEY_VIDEO_CROP_LEFT | 描述裁剪矩形左坐标(x)值的键,值类型为int32_t。该键是可选的且只用于视频解码。 | 116| OH_MD_KEY_VIDEO_CROP_RIGHT | 描述裁剪矩形右坐标(x)值的键,值类型为int32_t。该键是可选的且只用于视频解码。 | 117| OH_MD_KEY_VIDEO_DECODER_OUTPUT_ENABLE_VRR | 解码器是否打开视频可变帧率功能的键,值类型为int32_t。该键是可选的且只用于视频解码。 | 118| OH_MD_KEY_SQR_FACTOR | 描述SQR码控模式的质量参数,取值范围为[0, 51](同编码量化参数QP),值越小,编码输出码率越大,质量越好,值类型为int32_t。该键值是可选的且只用于视频编码。 | 119| OH_MD_KEY_MAX_BITRATE | 描述SQR码控模式的最大码率,使用[OH_AVCapability_GetEncoderBitrateRange](_a_v_capability.md#oh_avcapability_getencoderbitraterange)方法获取取值范围(同OH_MD_KEY_BITRATE),单位bps,值类型为int64_t。该键值是可选的且只用于视频编码。 | 120| OH_MD_KEY_VIDEO_ENCODER_ROI_PARAMS | 描述ROI编码参数,包括ROI区域和deltaQp,值类型为string。该键值是可选的且只用于视频编码。 | 121| OH_MD_KEY_VIDEO_ENCODER_ENABLE_PTS_BASED_RATECONTROL | 使能基于显示时间戳(PTS)的码控模式的键,值类型为int32_t,1表示使能,0表示其它情况。该键值是可选的且只用于视频编码,默认值为0。如果使能,则必须在每个视频帧中携带PTS信息,并发送到编码器。在Configure阶段使用。 | 122 123### 音频专有的键值对 124 125| 名称 | 描述 | 126| ------------------------------------------------------------ | ------------------------------------------------------------ | 127| OH_MD_KEY_AUDIO_SAMPLE_FORMAT | 音频原始格式的键,值类型为int32_t。请参见[OH_BitsPerSample](capi-native-avcodec-base-h.md#oh_bitspersample)。| 128| OH_MD_KEY_AUD_CHANNEL_COUNT | 音频通道计数键,值类型为int32_t。 | 129| OH_MD_KEY_AUD_SAMPLE_RATE | 音频采样率键,值类型为int32_t。 | 130| OH_MD_KEY_AUDIO_COMPRESSION_LEVEL | 音频编解码压缩水平的键,只在音频编码使用,值类型为int32_t。该键是可选的。 | 131| OH_MD_KEY_CHANNEL_LAYOUT | 所需编码通道布局的键。值类型为int64_t,此键仅适用于编码器。请参见[OH_AudioChannelLayout](_core.md#oh_audiochannellayout-1)。 | 132| OH_MD_KEY_BITS_PER_CODED_SAMPLE | 每个编码样本位数的键,值类型为int32_t。该键是可选的。<br>API 20前,FLAC编码必须设置此参数,设置为1即可;未设置此参数配置FLAC编码器时,调用OH_AudioCodec_Configure会返回错误码AV_ERR_INVALID_VAL。该值无实际作用,不会影响编码结果。从API 20开始,无需设置此参数。| 133| OH_MD_KEY_SBR | aac sbr模式的键,值类型为int32_t,aac编码器支持。该键是可选的。 | 134| OH_MD_KEY_COMPLIANCE_LEVEL | flac兼容性等级的键,值类型为int32_t,仅在音频编码使用。该键是可选的。 | 135| OH_MD_KEY_AAC_IS_ADTS | aac格式的键,aac格式分为ADTS格式和LATM格式。值类型为int32_t,aac解码器支持。该键是可选的。 | 136| OH_MD_KEY_IDENTIFICATION_HEADER | vorbis标识头的键,值类型为uint8_t\*,仅vorbis解码器支持。该键是可选的。 | 137| OH_MD_KEY_SETUP_HEADER | vorbis设置头的键,值类型为uint8_t\*,仅vorbis解码器支持。该键是可选的。 | 138| OH_MD_KEY_AUDIO_OBJECT_NUMBER | 音频对象数目的键,值类型为int32_t,只有Audio Vivid解码使用。该键是可选的。 | 139| OH_MD_KEY_AUDIO_VIVID_METADATA | Audio Vivid元数据的键,值类型为uint8_t\*,只有Audio Vivid解码使用。该键是可选的。 | 140 141### 封装/解封装专有的键值对 142 143| 名称 | 描述 | 144| ------------------------------------------------------------ | ------------------------------------------------------------ | 145| OH_MD_KEY_VIDEO_IS_HDR_VIVID | 媒体文件中的视频轨是否为HDR Vivid的键,支持封装和解封装,值类型为int32_t。该键是可选的。 | 146| OH_MD_KEY_START_TIME | 媒体文件中第一帧起始位置开始时间的键,以微秒为单位,值类型为int64_t。该键是可选的。 | 147| OH_MD_KEY_TRACK_START_TIME | 轨道开始时间的键,以微秒为单位,值类型为int64_t。该键是可选的。 | 148| OH_MD_KEY_TRACK_TYPE | 轨道媒体类型的键,值类型为int32_t,请参见[OH_MediaType](capi-native-avcodec-base-h.md#oh_mediatype)。该键是可选的。 | 149| OH_MD_KEY_DURATION | 媒体文件持续时间的键,值类型为int64_t。该键是可选的。 | 150| OH_MD_KEY_TITLE | 媒体文件标题的键,值类型为string。该键是可选的。 | 151| OH_MD_KEY_ARTIST | 艺术家的键,值类型为string。该键是可选的。 | 152| OH_MD_KEY_ALBUM | 专辑的媒体文件的键,值类型为string。该键是可选的。 | 153| OH_MD_KEY_ALBUM_ARTIST | 专辑艺术家的键,值类型为string。该键是可选的。 | 154| OH_MD_KEY_DATE | 媒体文件日期的键,值类型为string,例如2024年。该键是可选的。 | 155| OH_MD_KEY_COMMENT | 媒体文件注释的键,值类型为string。该键是可选的。 | 156| OH_MD_KEY_GENRE | 媒体文件流派的键,值类型为string。该键是可选的。 | 157| OH_MD_KEY_COPYRIGHT | 媒体文件版权的键,值类型为string。该键是可选的。 | 158| OH_MD_KEY_LANGUAGE | 媒体文件语言的键,值类型为string。该键是可选的。 | 159| OH_MD_KEY_DESCRIPTION | 媒体文件描述的键,值类型为string。该键是可选的。 | 160| OH_MD_KEY_LYRICS | 媒体文件歌词的键,值类型为string。该键是可选的。 | 161| OH_MD_KEY_TRACK_COUNT | 媒体文件轨道数量的键,值类型为int32_t。该键是可选的。 | 162| OH_MD_KEY_BUFFER_DURATION | AVBuffer中携带的音视频或字幕的sample对应的持续时间的键,以微秒为单位,值类型为int64_t。该键是可选的。 | 163| OH_MD_KEY_DECODING_TIMESTAMP | AVBuffer中携带的音视频或字幕的sample对应的解码时间戳的键,以微秒为单位,值类型为int64_t。该键是可选的。 | 164| OH_MD_KEY_CODEC_MIME | 编解码器[MIME](#媒体编解码格式)类型的键,值类型为string。该键是可选的。 | 165| OH_MD_KEY_VIDEO_SAR | 样本长宽比的键,值类型为double。 | 166| OH_MD_KEY_CREATION_TIME | 媒体文件创建时间的元数据,值类型为string。 | 167| OH_MD_KEY_REFERENCE_TRACK_IDS | 媒体文件轨道间参考、被参考关系,值类型为int32_t\*。 | 168| OH_MD_KEY_TRACK_REFERENCE_TYPE | 媒体文件辅助轨类型,值类型为string。 | 169| OH_MD_KEY_TRACK_DESCRIPTION | 媒体文件辅助轨描述信息,值类型为string。 | 170