1# avtranscoder.h 2<!--Kit: Media Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @wang-haizhou6--> 5<!--Designer: @HmQQQ--> 6<!--Tester: @xchaosioda--> 7<!--Adviser: @zengyawen--> 8 9## 概述 10 11定义AVTranscoder接口。使用AVTranscoder提供的Native API将源视频文件转码为新视频文件。 12 13**引用文件:** <multimedia/player_framework/avtranscoder.h> 14 15**库:** libavtranscoder.so 16 17**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 18 19**起始版本:** 20 20 21**相关模块:** [AVTranscoder](capi-avtranscoder.md) 22 23**相关示例:** [AVPlayerNDKVideo](https://gitcode.com/openharmony/applications_app_samples/tree/master/code/DocsSample/Media/AVPlayer/AVPlayerNDK) 24 25## 汇总 26 27### 函数 28 29| 名称 | 描述 | 30| -- | -- | 31| [OH_AVTranscoder_Config *OH_AVTranscoderConfig_Create()](#oh_avtranscoderconfig_create) | 创建转码配置参数实例。 | 32| [OH_AVErrCode OH_AVTranscoderConfig_Release(OH_AVTranscoder_Config* config)](#oh_avtranscoderconfig_release) | 释放转码配置参数资源。<br> 调用成功后,config实例会被释放并置为nullptr。 | 33| [OH_AVErrCode OH_AVTranscoderConfig_SetSrcFD(OH_AVTranscoder_Config *config, int32_t srcFd, int64_t srcOffset, int64_t length)](#oh_avtranscoderconfig_setsrcfd) | 设置转码源视频的文件描述符。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 | 34| [OH_AVErrCode OH_AVTranscoderConfig_SetDstFD(OH_AVTranscoder_Config *config, int32_t dstFd)](#oh_avtranscoderconfig_setdstfd) | 设置转码输出视频的文件描述符。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 | 35| [OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoType(OH_AVTranscoder_Config *config, const char *mimeType)](#oh_avtranscoderconfig_setdstvideotype) | 设置用于转码的输出视频的编码格式。<br> 当前仅支持AVC和HEVC。若源视频编码格式为HEVC,则默认设置为HEVC,否则默认设置为AVC。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 | 36| [OH_AVErrCode OH_AVTranscoderConfig_SetDstAudioType(OH_AVTranscoder_Config *config, const char *mimeType)](#oh_avtranscoderconfig_setdstaudiotype) | 设置用于转码的输出音频的编码格式。<br> 当前仅支持AAC。若开发者不设置,则默认设置为AAC。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 | 37| [OH_AVErrCode OH_AVTranscoderConfig_SetDstFileType(OH_AVTranscoder_Config *config, OH_AVOutputFormat mimeType)](#oh_avtranscoderconfig_setdstfiletype) | 设置用于转码的输出视频文件的封装格式。<br> 当前封装格式仅支持MP4。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 | 38| [OH_AVErrCode OH_AVTranscoderConfig_SetDstAudioBitrate(OH_AVTranscoder_Config *config, int32_t bitrate)](#oh_avtranscoderconfig_setdstaudiobitrate) | 设置用于转码的输出音频的码率。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 | 39| [OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoBitrate(OH_AVTranscoder_Config *config, int32_t bitrate)](#oh_avtranscoderconfig_setdstvideobitrate) | 设置用于转码的输出视频的码率。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 | 40| [OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoResolution(OH_AVTranscoder_Config *config, int32_t width, int32_t height)](#oh_avtranscoderconfig_setdstvideoresolution) | 设置用于转码的输出视频的分辨率,单位为像素(px),其中width为输出视频帧的宽,height为输出视频帧的高。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 | 41| [OH_AVErrCode OH_AVTranscoderConfig_EnableBFrame(OH_AVTranscoder_Config *config, bool enabled)](#oh_avtranscoderconfig_enablebframe) | 转码设置输出视频B帧编码。<br>B帧视频编码相关的约束和限制可以参考文档[B帧视频编码约束和限制](../../media/avcodec/video-encoding-b-frame.md#约束和限制)。<br>如果当前不符合B帧视频编码的约束和限制,将忽略B帧,按不使能B帧进行编码。 | 42| [OH_AVTranscoder *OH_AVTranscoder_Create(void)](#oh_avtranscoder_create) | 创建转码实例。 | 43| [OH_AVErrCode OH_AVTranscoder_Prepare(OH_AVTranscoder *transcoder, OH_AVTranscoder_Config *config)](#oh_avtranscoder_prepare) | 进行视频转码的参数设置,准备转码。<br> 此函数必须在[OH_AVTranscoder_Start](#oh_avtranscoder_start)之前调用,调用成功之后进入AVTRANSCODER_PREPARED状态。 | 44| [OH_AVErrCode OH_AVTranscoder_Start(OH_AVTranscoder *transcoder)](#oh_avtranscoder_start) | 开始转码。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)成功调用之后调用,调用成功之后进入AVTRANSCODER_STARTED状态。 | 45| [OH_AVErrCode OH_AVTranscoder_Pause(OH_AVTranscoder *transcoder)](#oh_avtranscoder_pause) | 暂停转码。<br> 此函数必须在转码实例处于AVTRANSCODER_STARTED状态时调用,调用成功之后进入AVTRANSCODER_PAUSED状态。 | 46| [OH_AVErrCode OH_AVTranscoder_Resume(OH_AVTranscoder *transcoder)](#oh_avtranscoder_resume) | 恢复转码。<br> 此函数必须在转码实例处于AVTRANSCODER_PAUSED状态时调用,调用成功之后重新进入AVTRANSCODER_STARTED状态。 | 47| [OH_AVErrCode OH_AVTranscoder_Cancel(OH_AVTranscoder *transcoder)](#oh_avtranscoder_cancel) | 取消转码。<br> 此函数须在转码实例处于AVTRANSCODER_STARTED和AVTRANSCODER_PAUSED状态时调用,调用成功之后进入AVTRANSCODER_CANCELLED状态。 | 48| [OH_AVErrCode OH_AVTranscoder_Release(OH_AVTranscoder *transcoder)](#oh_avtranscoder_release) | 释放转码实例资源。 | 49| [OH_AVErrCode OH_AVTranscoder_SetStateCallback(OH_AVTranscoder *transcoder, OH_AVTranscoder_OnStateChange callback, void *userData)](#oh_avtranscoder_setstatecallback) | 注册触发转码状态修改事件的回调方法。<br> 当触发状态修改事件时,通过注册的回调方法通知开发者。<br> 开发者只能注册一个状态修改事件的回调方法,当开发者重复注册时,以最后一次注册的回调接口为准。<br> 若开发者需监听转码状态修改,须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前注册转码状态回调。 | 50| [OH_AVErrCode OH_AVTranscoder_SetErrorCallback(OH_AVTranscoder *transcoder, OH_AVTranscoder_OnError callback, void *userData)](#oh_avtranscoder_seterrorcallback) | 注册触发转码错误事件的回调方法。<br> 当触发错误事件时,通过注册的回调方法通知开发者。<br> 如果AVTranscoder上报error事件,开发者需要通过[OH_AVTranscoder_Release](#oh_avtranscoder_release)操作退出转码操作。<br> 开发者只能注册一个错误事件的回调方法,当开发者重复注册时,以最后一次注册的回调接口为准。<br> 若开发者需监听转码错误事件,须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前注册转码错误事件。 | 51| [OH_AVErrCode OH_AVTranscoder_SetProgressUpdateCallback(OH_AVTranscoder *transcoder, OH_AVTranscoder_OnProgressUpdate callback, void *userData)](#oh_avtranscoder_setprogressupdatecallback) | 注册触发转码进度更新事件的回调方法。<br> 当触发转码进度更新事件时,通过注册的回调方法通知开发者。<br> 开发者只能注册一个错误事件的回调方法,当开发者重复注册时,以最后一次注册的回调接口为准。<br> 若开发者需监听转码处理进度,则须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前注册该事件。 | 52 53## 函数说明 54 55### OH_AVTranscoderConfig_Create() 56 57``` 58OH_AVTranscoder_Config *OH_AVTranscoderConfig_Create() 59``` 60 61**描述** 62 63创建转码配置参数实例。 64 65**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 66 67**起始版本:** 20 68 69**返回:** 70 71| 类型 | 说明 | 72| -- | -- | 73| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) * | 如果创建成功返回指向OH_AVTranscoder_Config实例的指针,否则返回空指针。 | 74 75### OH_AVTranscoderConfig_Release() 76 77``` 78OH_AVErrCode OH_AVTranscoderConfig_Release(OH_AVTranscoder_Config* config) 79``` 80 81**描述** 82 83释放转码配置参数资源。<br> 调用成功后,config实例会被释放并置为nullptr。 84 85**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 86 87**起始版本:** 20 88 89 90**参数:** 91 92| 参数项 | 描述 | 93| -- | -- | 94| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md)* config | 指向OH_AVTranscoder_Config实例的指针。传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 95 96**返回:** 97 98| 类型 | 说明 | 99| -- | -- | 100| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:释放成功。<br> AV_ERR_INVALID_VAL:config是空指针。 | 101 102### OH_AVTranscoderConfig_SetSrcFD() 103 104``` 105OH_AVErrCode OH_AVTranscoderConfig_SetSrcFD(OH_AVTranscoder_Config *config, int32_t srcFd, int64_t srcOffset, int64_t length) 106``` 107 108**描述** 109 110设置转码源视频的文件描述符。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 111 112**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 113 114**起始版本:** 20 115 116 117**参数:** 118 119| 参数项 | 描述 | 120| -- | -- | 121| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) *config | 指向OH_AVTranscoder_Config实例的指针。传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 122| int32_t srcFd | 源视频的文件描述符。 | 123| int64_t srcOffset | 源视频在文件描述符中的偏移量,单位:字节/Byte。 | 124| int64_t length | 源视频的长度,单位:字节/Byte。 | 125 126**返回:** 127 128| 类型 | 说明 | 129| -- | -- | 130| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:设置成功。<br> AV_ERR_INVALID_VAL:输入config为空指针,或者源视频文件相关参数错误。 | 131 132### OH_AVTranscoderConfig_SetDstFD() 133 134``` 135OH_AVErrCode OH_AVTranscoderConfig_SetDstFD(OH_AVTranscoder_Config *config, int32_t dstFd) 136``` 137 138**描述** 139 140设置转码输出视频的文件描述符。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 141 142**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 143 144**起始版本:** 20 145 146 147**参数:** 148 149| 参数项 | 描述 | 150| -- | -- | 151| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) *config | 指向OH_AVTranscoder_Config实例的指针。传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 152| int32_t dstFd | 输出视频的文件描述符。 | 153 154**返回:** 155 156| 类型 | 说明 | 157| -- | -- | 158| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:设置成功。<br> AV_ERR_INVALID_VAL:输入config为空指针,或者输出视频文件描述符是无效的。 | 159 160### OH_AVTranscoderConfig_SetDstVideoType() 161 162``` 163OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoType(OH_AVTranscoder_Config *config, const char *mimeType) 164``` 165 166**描述** 167 168设置用于转码的输出视频的编码格式。<br> 当前仅支持AVC和HEVC。若源视频编码格式为HEVC,则默认设置为HEVC,否则默认设置为AVC。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 169 170**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 171 172**起始版本:** 20 173 174 175**参数:** 176 177| 参数项 | 描述 | 178| -- | -- | 179| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) *config | 指向OH_AVTranscoder_Config实例的指针。传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 180| const char *mimeType | 输出视频的编码格式,详细请参见[native_avcodec_base.h](../apis-avcodec-kit/native__avcodec__base_8h.md#变量)。 | 181 182**返回:** 183 184| 类型 | 说明 | 185| -- | -- | 186| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:设置成功。<br> AV_ERR_INVALID_VAL:输入的config为空指针,或者mimeType是不被允许的。 | 187 188### OH_AVTranscoderConfig_SetDstAudioType() 189 190``` 191OH_AVErrCode OH_AVTranscoderConfig_SetDstAudioType(OH_AVTranscoder_Config *config, const char *mimeType) 192``` 193 194**描述** 195 196设置用于转码的输出音频的编码格式。<br> 当前仅支持AAC。若开发者不设置,则默认设置为AAC。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 197 198**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 199 200**起始版本:** 20 201 202 203**参数:** 204 205| 参数项 | 描述 | 206| -- | -- | 207| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) *config | 指向OH_AVTranscoder_Config实例的指针。传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 208| const char *mimeType | 输出音频的编码格式,详细请参见[native_avcodec_base.h](../apis-avcodec-kit/native__avcodec__base_8h.md#变量)。 | 209 210**返回:** 211 212| 类型 | 说明 | 213| -- | -- | 214| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:设置成功。<br> AV_ERR_INVALID_VAL:输入的config为空指针,或者mimeType是不被允许的。 | 215 216### OH_AVTranscoderConfig_SetDstFileType() 217 218``` 219OH_AVErrCode OH_AVTranscoderConfig_SetDstFileType(OH_AVTranscoder_Config *config, OH_AVOutputFormat mimeType) 220``` 221 222**描述** 223 224设置用于转码的输出视频文件的封装格式。<br> 当前封装格式仅支持MP4。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 225 226**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 227 228**起始版本:** 20 229 230 231**参数:** 232 233| 参数项 | 描述 | 234| -- | -- | 235| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) *config | 指向OH_AVTranscoder_Config实例的指针。传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 236| [OH_AVOutputFormat](../apis-avcodec-kit/_codec_base.md#oh_avoutputformat-1) mimeType | 输出视频的封装格式,详细请参见[native_avcodec_base.h](../apis-avcodec-kit/native__avcodec__base_8h.md#变量)。 | 237 238**返回:** 239 240| 类型 | 说明 | 241| -- | -- | 242| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:设置成功。<br> AV_ERR_INVALID_VAL:输入的config为空指针,或者mimeType是无效的。 | 243 244### OH_AVTranscoderConfig_SetDstAudioBitrate() 245 246``` 247OH_AVErrCode OH_AVTranscoderConfig_SetDstAudioBitrate(OH_AVTranscoder_Config *config, int32_t bitrate) 248``` 249 250**描述** 251 252设置用于转码的输出音频的码率。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 253 254**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 255 256**起始版本:** 20 257 258 259**参数:** 260 261| 参数项 | 描述 | 262| -- | -- | 263| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) *config | 指向OH_AVTranscoder_Config实例的指针。传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 264| int32_t bitrate | 输出音频的码率,单位为比特率(bps)。支持范围[1-500000],默认设置为48Kbps。 | 265 266**返回:** 267 268| 类型 | 说明 | 269| -- | -- | 270| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:设置成功。<br> AV_ERR_INVALID_VAL:输入的config为空指针,或者bitrate值是无效的。 | 271 272### OH_AVTranscoderConfig_SetDstVideoBitrate() 273 274``` 275OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoBitrate(OH_AVTranscoder_Config *config, int32_t bitrate) 276``` 277 278**描述** 279 280设置用于转码的输出视频的码率。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 281 282**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 283 284**起始版本:** 20 285 286 287**参数:** 288 289| 参数项 | 描述 | 290| -- | -- | 291| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) *config | 指向OH_AVTranscoder_Config实例的指针。传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 292| int32_t bitrate | 输出视频的码率,单位为比特率(bps)。默认码率按输出视频的分辨率设置。<br> [240P,480P]默认码率值为1Mbps。<br> (480P,720P]默认码率值为2Mbps。<br> (240P,1080P]默认码率值为4Mbps。<br> 1080P及以上默认码率值为8Mbps。 | 293 294**返回:** 295 296| 类型 | 说明 | 297| -- | -- | 298| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:设置成功。<br> AV_ERR_INVALID_VAL:输入的config为空指针,或者bitrate值是无效的。 | 299 300### OH_AVTranscoderConfig_SetDstVideoResolution() 301 302``` 303OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoResolution(OH_AVTranscoder_Config *config, int32_t width, int32_t height) 304``` 305 306**描述** 307 308设置用于转码的输出视频的分辨率,单位为像素(px),其中width为输出视频帧的宽,height为输出视频帧的高。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前调用。 309 310**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 311 312**起始版本:** 20 313 314 315**参数:** 316 317| 参数项 | 描述 | 318| -- | -- | 319| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) *config | 指向OH_AVTranscoder_Config实例的指针。传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 320| int32_t width | 输出视频帧的宽,支持范围[240-3840],默认设置为源视频帧的宽。 | 321| int32_t height | 输出视频帧的高,支持范围[240-2160],默认设置为源视频帧的高。 | 322 323**返回:** 324 325| 类型 | 说明 | 326| -- | -- | 327| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:设置成功。<br> AV_ERR_INVALID_VAL:输入的config为空指针,或者width、height值是无效的。 | 328 329### OH_AVTranscoderConfig_EnableBFrame() 330 331``` 332OH_AVErrCode OH_AVTranscoderConfig_EnableBFrame(OH_AVTranscoder_Config *config, bool enabled) 333``` 334 335**描述** 336 337转码设置输出视频B帧编码。<br>B帧视频编码相关的约束和限制可以参考文档[B帧视频编码约束和限制](../../media/avcodec/video-encoding-b-frame.md#约束和限制)。<br>如果当前不符合B帧视频编码的约束和限制,将忽略B帧,按不使能B帧进行编码。 338 339**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 340 341**起始版本:** 20 342 343 344**参数:** 345 346| 参数项 | 描述 | 347| -- | -- | 348| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) *config | 指向OH_AVTranscoder_Config实例的指针。传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 349| bool enabled | 是否使能B帧编码。true表示开启B帧编码,默认为不开启B帧编码。 | 350 351**返回:** 352 353| 类型 | 说明 | 354| -- | -- | 355| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:设置成功。<br> AV_ERR_INVALID_VAL:输入的config为空指针。 | 356 357### OH_AVTranscoder_Create() 358 359``` 360OH_AVTranscoder *OH_AVTranscoder_Create(void) 361``` 362 363**描述** 364 365创建转码实例。 366 367**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 368 369**起始版本:** 20 370 371**返回:** 372 373| 类型 | 说明 | 374| -- | -- | 375| [OH_AVTranscoder](capi-avtranscoder-oh-avtranscoder.md) * | 如果创建成功返回指向OH_AVTranscoder实例的指针,否则返回空指针。 | 376 377### OH_AVTranscoder_Prepare() 378 379``` 380OH_AVErrCode OH_AVTranscoder_Prepare(OH_AVTranscoder *transcoder, OH_AVTranscoder_Config *config) 381``` 382 383**描述** 384 385进行视频转码的参数设置,准备转码。<br> 此函数必须在[OH_AVTranscoder_Start](#oh_avtranscoder_start)之前调用,调用成功之后进入AVTRANSCODER_PREPARED状态。 386 387**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 388 389**起始版本:** 20 390 391 392**参数:** 393 394| 参数项 | 描述 | 395| -- | -- | 396| [OH_AVTranscoder](capi-avtranscoder-oh-avtranscoder.md) *transcoder | 指向OH_AVTranscoder实例的指针。传入的transcoder指针必须为[OH_AVTranscoder_Create](#oh_avtranscoder_create)创建的实例。 | 397| [OH_AVTranscoder_Config](capi-avtranscoder-oh-avtranscoder-config.md) *config | 指向OH_AVTranscoder_Config实例的指针。<br> 传入的config指针必须为[OH_AVTranscoderConfig_Create](#oh_avtranscoderconfig_create)创建的实例。 | 398 399**返回:** 400 401| 类型 | 说明 | 402| -- | -- | 403| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:成功设置视频转码的参数设置,进入AVTRANSCODER_PREPARED状态。<br> AV_ERR_INVALID_VAL:输入的transcoder是空指针,或者转码准备操作失败。<br> AV_ERR_OPERATE_NOT_PERMIT:当前状态不允许执行Prepare操作,或者是不支持的格式。<br> AV_ERR_IO:IO访问相关的错误。<br> AV_ERR_SERVICE_DIED:媒体服务已停止。 | 404 405### OH_AVTranscoder_Start() 406 407``` 408OH_AVErrCode OH_AVTranscoder_Start(OH_AVTranscoder *transcoder) 409``` 410 411**描述** 412 413开始转码。<br> 此函数必须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)成功调用之后调用,调用成功之后进入AVTRANSCODER_STARTED状态。 414 415**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 416 417**起始版本:** 20 418 419 420**参数:** 421 422| 参数项 | 描述 | 423| -- | -- | 424| [OH_AVTranscoder](capi-avtranscoder-oh-avtranscoder.md) *transcoder | 指向OH_AVTranscoder实例的指针。传入的transcoder指针必须为[OH_AVTranscoder_Create](#oh_avtranscoder_create)创建的实例。 | 425 426**返回:** 427 428| 类型 | 说明 | 429| -- | -- | 430| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:成功开始转码,进入AVTRANSCODER_STARTED状态。<br> AV_ERR_INVALID_VAL:输入的transcoder是空指针,或者转码开始操作失败。<br> AV_ERR_OPERATE_NOT_PERMIT:当前状态不允许执行Start操作。<br> AV_ERR_IO:IO访问相关的错误。<br> AV_ERR_SERVICE_DIED:媒体服务已停止。 | 431 432### OH_AVTranscoder_Pause() 433 434``` 435OH_AVErrCode OH_AVTranscoder_Pause(OH_AVTranscoder *transcoder) 436``` 437 438**描述** 439 440暂停转码。<br> 此函数必须在转码实例处于AVTRANSCODER_STARTED状态时调用,调用成功之后进入AVTRANSCODER_PAUSED状态。 441 442**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 443 444**起始版本:** 20 445 446 447**参数:** 448 449| 参数项 | 描述 | 450| -- | -- | 451| [OH_AVTranscoder](capi-avtranscoder-oh-avtranscoder.md) *transcoder | 指向OH_AVTranscoder实例的指针。传入的transcoder指针必须为[OH_AVTranscoder_Create](#oh_avtranscoder_create)创建的实例。 | 452 453**返回:** 454 455| 类型 | 说明 | 456| -- | -- | 457| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:成功暂停转码,进入AVTRANSCODER_PAUSED状态。<br> AV_ERR_INVALID_VAL:输入的transcoder是空指针,或者转码暂停操作失败。<br> AV_ERR_OPERATE_NOT_PERMIT:当前状态不允许执行Pause操作。<br> AV_ERR_IO:IO访问相关的错误。<br> AV_ERR_SERVICE_DIED:媒体服务已停止。 | 458 459### OH_AVTranscoder_Resume() 460 461``` 462OH_AVErrCode OH_AVTranscoder_Resume(OH_AVTranscoder *transcoder) 463``` 464 465**描述** 466 467恢复转码。<br> 此函数必须在转码实例处于AVTRANSCODER_PAUSED状态时调用,调用成功之后重新进入AVTRANSCODER_STARTED状态。 468 469**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 470 471**起始版本:** 20 472 473 474**参数:** 475 476| 参数项 | 描述 | 477| -- | -- | 478| [OH_AVTranscoder](capi-avtranscoder-oh-avtranscoder.md) *transcoder | 指向OH_AVTranscoder实例的指针。传入的transcoder指针必须为[OH_AVTranscoder_Create](#oh_avtranscoder_create)创建的实例。 | 479 480**返回:** 481 482| 类型 | 说明 | 483| -- | -- | 484| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:成功恢复转码,进入AVTRANSCODER_STARTED状态。<br> AV_ERR_INVALID_VAL:输入的transcoder是空指针,或者转码恢复操作失败。<br> AV_ERR_OPERATE_NOT_PERMIT:当前状态不允许执行Resume操作。<br> AV_ERR_IO:IO访问相关的错误。<br> AV_ERR_SERVICE_DIED:媒体服务已停止。 | 485 486### OH_AVTranscoder_Cancel() 487 488``` 489OH_AVErrCode OH_AVTranscoder_Cancel(OH_AVTranscoder *transcoder) 490``` 491 492**描述** 493 494取消转码。<br> 此函数须在转码实例处于AVTRANSCODER_STARTED和AVTRANSCODER_PAUSED状态时调用,调用成功之后进入AVTRANSCODER_CANCELLED状态。 495 496**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 497 498**起始版本:** 20 499 500 501**参数:** 502 503| 参数项 | 描述 | 504| -- | -- | 505| [OH_AVTranscoder](capi-avtranscoder-oh-avtranscoder.md) *transcoder | 指向OH_AVTranscoder实例的指针。传入的transcoder指针必须为[OH_AVTranscoder_Create](#oh_avtranscoder_create)创建的实例。 | 506 507**返回:** 508 509| 类型 | 说明 | 510| -- | -- | 511| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:成功取消转码,进入AVTRANSCODER_CANCELLED状态。<br> AV_ERR_INVALID_VAL:输入的transcoder是空指针,或者转码取消操作失败。<br> AV_ERR_OPERATE_NOT_PERMIT:当前状态不允许执行Cancel操作。<br> AV_ERR_IO:IO访问相关的错误。<br> AV_ERR_SERVICE_DIED:媒体服务已停止。 | 512 513### OH_AVTranscoder_Release() 514 515``` 516OH_AVErrCode OH_AVTranscoder_Release(OH_AVTranscoder *transcoder) 517``` 518 519**描述** 520 521释放转码实例资源。 522 523**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 524 525**起始版本:** 20 526 527 528**参数:** 529 530| 参数项 | 描述 | 531| -- | -- | 532| [OH_AVTranscoder](capi-avtranscoder-oh-avtranscoder.md) *transcoder | 指向OH_AVTranscoder实例的指针。传入的transcoder指针必须为OH_AVTranscoder_Create创建的实例。 | 533 534**返回:** 535 536| 类型 | 说明 | 537| -- | -- | 538| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:成功释放转码实例资源。<br> AV_ERR_INVALID_VAL:输入的transcoder是空指针,或者转码释放资源操作失败。<br> AV_ERR_OPERATE_NOT_PERMIT:当前状态不允许执行Release操作。<br> AV_ERR_IO:IO访问相关的错误。<br> AV_ERR_SERVICE_DIED:媒体服务已停止。 | 539 540### OH_AVTranscoder_SetStateCallback() 541 542``` 543OH_AVErrCode OH_AVTranscoder_SetStateCallback(OH_AVTranscoder *transcoder, OH_AVTranscoder_OnStateChange callback, void *userData) 544``` 545 546**描述** 547 548注册触发转码状态修改事件的回调方法。<br> 当触发状态修改事件时,通过注册的回调方法通知开发者。<br> 开发者只能注册一个状态修改事件的回调方法,当开发者重复注册时,以最后一次注册的回调接口为准。<br> 若开发者需监听转码状态修改,须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前注册转码状态回调。 549 550**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 551 552**起始版本:** 20 553 554 555**参数:** 556 557| 参数项 | 描述 | 558| -- | -- | 559| [OH_AVTranscoder](capi-avtranscoder-oh-avtranscoder.md) *transcoder | 指向OH_AVTranscoder实例的指针。传入的transcoder指针必须为[OH_AVTranscoder_Create](#oh_avtranscoder_create)创建的实例。 | 560| [OH_AVTranscoder_OnStateChange](capi-avtranscoder-base-h.md#oh_avtranscoder_onstatechange) callback | 转码状态回调方法,详细说明请参见[OH_AVTranscoder_OnStateChange](capi-avtranscoder-base-h.md#oh_avtranscoder_onstatechange)。 | 561| void *userData | 用户特定数据的指针。 | 562 563**返回:** 564 565| 类型 | 说明 | 566| -- | -- | 567| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:注册成功。<br> AV_ERR_INVALID_VAL:输入的transcoder是空指针,或者callback是空指针。 | 568 569### OH_AVTranscoder_SetErrorCallback() 570 571``` 572OH_AVErrCode OH_AVTranscoder_SetErrorCallback(OH_AVTranscoder *transcoder, OH_AVTranscoder_OnError callback, void *userData) 573``` 574 575**描述** 576 577注册触发转码错误事件的回调方法。<br> 当触发错误事件时,通过注册的回调方法通知开发者。<br> 如果AVTranscoder上报error事件,开发者需要通过[OH_AVTranscoder_Release](#oh_avtranscoder_release)操作退出转码操作。<br> 开发者只能注册一个错误事件的回调方法,当开发者重复注册时,以最后一次注册的回调接口为准。<br> 若开发者需监听转码错误事件,须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前注册转码错误事件。 578 579**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 580 581**起始版本:** 20 582 583 584**参数:** 585 586| 参数项 | 描述 | 587| -- | -- | 588| [OH_AVTranscoder](capi-avtranscoder-oh-avtranscoder.md) *transcoder | 指向OH_AVTranscoder实例的指针。传入的transcoder指针必须为[OH_AVTranscoder_Create](#oh_avtranscoder_create)创建的实例。 | 589| [OH_AVTranscoder_OnError](capi-avtranscoder-base-h.md#oh_avtranscoder_onerror) callback | 转码错误回调方法,详细说明请参见[OH_AVTranscoder_OnError](capi-avtranscoder-base-h.md#oh_avtranscoder_onerror)。 | 590| void *userData | 用户特定数据的指针。 | 591 592**返回:** 593 594| 类型 | 说明 | 595| -- | -- | 596| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:注册成功。<br> AV_ERR_INVALID_VAL:输入的transcoder是空指针,或者callback是空指针。 | 597 598### OH_AVTranscoder_SetProgressUpdateCallback() 599 600``` 601OH_AVErrCode OH_AVTranscoder_SetProgressUpdateCallback(OH_AVTranscoder *transcoder, OH_AVTranscoder_OnProgressUpdate callback, void *userData) 602``` 603 604**描述** 605 606注册触发转码进度更新事件的回调方法。<br> 当触发转码进度更新事件时,通过注册的回调方法通知开发者。<br> 开发者只能注册一个错误事件的回调方法,当开发者重复注册时,以最后一次注册的回调接口为准。<br> 若开发者需监听转码处理进度,则须在[OH_AVTranscoder_Prepare](#oh_avtranscoder_prepare)之前注册该事件。 607 608**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 609 610**起始版本:** 20 611 612 613**参数:** 614 615| 参数项 | 描述 | 616| -- | -- | 617| [OH_AVTranscoder](capi-avtranscoder-oh-avtranscoder.md) *transcoder | 指向OH_AVTranscoder实例的指针。传入的transcoder指针必须为[OH_AVTranscoder_Create](#oh_avtranscoder_create)创建的实例。 | 618| [OH_AVTranscoder_OnProgressUpdate](capi-avtranscoder-base-h.md#oh_avtranscoder_onprogressupdate) callback | 转码进度更新回调方法,详细说明请参见[OH_AVTranscoder_OnProgressUpdate](capi-avtranscoder-base-h.md#oh_avtranscoder_onprogressupdate)。 | 619| void *userData | 用户特定数据的指针。 | 620 621**返回:** 622 623| 类型 | 说明 | 624| -- | -- | 625| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1) | AV_ERR_OK:注册成功。<br> AV_ERR_INVALID_VAL:输入的transcoder是空指针,或者callback是空指针。 | 626 627 628