## 概述

PhonePC/2in1TabletTV

定义AVTranscoder接口。使用AVTranscoder提供的Native API将源视频文件转码为新视频文件。

**引用文件：** <multimedia/player\_framework/avtranscoder.h>

**库：** libavtranscoder.so

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**相关模块：** [AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder)

**相关示例：** [AVPlayerNDKVideo](https://gitcode.com/openharmony/applications_app_samples/tree/master/code/DocsSample/Media/AVPlayer/AVPlayerNDK)

## 汇总

PhonePC/2in1TabletTV

### 函数

PhonePC/2in1TabletTV

展开

| 名称 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config \*OH\_AVTranscoderConfig\_Create()](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create) | 创建转码配置参数实例。 |
| [OH\_AVErrCode OH\_AVTranscoderConfig\_Release(OH\_AVTranscoder\_Config\* config)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_release) | 释放转码配置参数资源。  调用成功后，config实例会被释放并置为nullptr。 |
| [OH\_AVErrCode OH\_AVTranscoderConfig\_SetSrcFD(OH\_AVTranscoder\_Config \*config, int32\_t srcFd, int64\_t srcOffset, int64\_t length)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_setsrcfd) | 设置转码源视频的文件描述符。  此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。 |
| [OH\_AVErrCode OH\_AVTranscoderConfig\_SetDstFD(OH\_AVTranscoder\_Config \*config, int32\_t dstFd)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_setdstfd) | 设置转码输出视频的文件描述符。  此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。 |
| [OH\_AVErrCode OH\_AVTranscoderConfig\_SetDstVideoType(OH\_AVTranscoder\_Config \*config, const char \*mimeType)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_setdstvideotype) | 设置用于转码的输出视频的编码格式。  当前仅支持AVC和HEVC。若源视频编码格式为HEVC，则默认设置为HEVC，否则默认设置为AVC。  此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。 |
| [OH\_AVErrCode OH\_AVTranscoderConfig\_SetDstAudioType(OH\_AVTranscoder\_Config \*config, const char \*mimeType)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_setdstaudiotype) | 设置用于转码的输出音频的编码格式。  当前仅支持AAC。若开发者不设置，则默认设置为AAC。  此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。 |
| [OH\_AVErrCode OH\_AVTranscoderConfig\_SetDstFileType(OH\_AVTranscoder\_Config \*config, OH\_AVOutputFormat mimeType)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_setdstfiletype) | 设置用于转码的输出视频文件的封装格式。  当前封装格式仅支持MP4。  此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。 |
| [OH\_AVErrCode OH\_AVTranscoderConfig\_SetDstAudioBitrate(OH\_AVTranscoder\_Config \*config, int32\_t bitrate)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_setdstaudiobitrate) | 设置用于转码的输出音频的码率。  此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。 |
| [OH\_AVErrCode OH\_AVTranscoderConfig\_SetDstVideoBitrate(OH\_AVTranscoder\_Config \*config, int32\_t bitrate)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_setdstvideobitrate) | 设置用于转码的输出视频的码率。  此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。 |
| [OH\_AVErrCode OH\_AVTranscoderConfig\_SetDstVideoResolution(OH\_AVTranscoder\_Config \*config, int32\_t width, int32\_t height)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_setdstvideoresolution) | 设置用于转码的输出视频的分辨率，单位为像素（px），其中width为输出视频帧的宽，height为输出视频帧的高。  此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。 |
| [OH\_AVErrCode OH\_AVTranscoderConfig\_EnableBFrame(OH\_AVTranscoder\_Config \*config, bool enabled)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_enablebframe) | 转码设置输出视频B帧编码。  B帧视频编码相关的约束和限制可以参考文档[B帧视频编码约束和限制](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/video-encoding-b-frame#约束和限制)。  如果当前不符合B帧视频编码的约束和限制，将忽略B帧，按不使能B帧进行编码。 |
| [OH\_AVTranscoder \*OH\_AVTranscoder\_Create(void)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_create) | 创建转码实例。 |
| [OH\_AVErrCode OH\_AVTranscoder\_Prepare(OH\_AVTranscoder \*transcoder, OH\_AVTranscoder\_Config \*config)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare) | 进行视频转码的参数设置，准备转码。  此函数必须在[OH\_AVTranscoder\_Start](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_start)之前调用，调用成功之后进入AVTRANSCODER\_PREPARED状态。 |
| [OH\_AVErrCode OH\_AVTranscoder\_Start(OH\_AVTranscoder \*transcoder)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_start) | 开始转码。  此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)成功调用之后调用，调用成功之后进入AVTRANSCODER\_STARTED状态。 |
| [OH\_AVErrCode OH\_AVTranscoder\_Pause(OH\_AVTranscoder \*transcoder)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_pause) | 暂停转码。  此函数必须在转码实例处于AVTRANSCODER\_STARTED状态时调用，调用成功之后进入AVTRANSCODER\_PAUSED状态。 |
| [OH\_AVErrCode OH\_AVTranscoder\_Resume(OH\_AVTranscoder \*transcoder)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_resume) | 恢复转码。  此函数必须在转码实例处于AVTRANSCODER\_PAUSED状态时调用，调用成功之后重新进入AVTRANSCODER\_STARTED状态。 |
| [OH\_AVErrCode OH\_AVTranscoder\_Cancel(OH\_AVTranscoder \*transcoder)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_cancel) | 取消转码。  此函数须在转码实例处于AVTRANSCODER\_STARTED和AVTRANSCODER\_PAUSED状态时调用，调用成功之后进入AVTRANSCODER\_CANCELLED状态。 |
| [OH\_AVErrCode OH\_AVTranscoder\_Release(OH\_AVTranscoder \*transcoder)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_release) | 释放转码实例资源。 |
| [OH\_AVErrCode OH\_AVTranscoder\_SetStateCallback(OH\_AVTranscoder \*transcoder, OH\_AVTranscoder\_OnStateChange callback, void \*userData)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_setstatecallback) | 注册触发转码状态修改事件的回调方法。  当触发状态修改事件时，通过注册的回调方法通知开发者。  开发者只能注册一个状态修改事件的回调方法，当开发者重复注册时，以最后一次注册的回调接口为准。  若开发者需监听转码状态修改，须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前注册转码状态回调。 |
| [OH\_AVErrCode OH\_AVTranscoder\_SetErrorCallback(OH\_AVTranscoder \*transcoder, OH\_AVTranscoder\_OnError callback, void \*userData)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_seterrorcallback) | 注册触发转码错误事件的回调方法。  当触发错误事件时，通过注册的回调方法通知开发者。  如果AVTranscoder上报error事件，开发者需要通过[OH\_AVTranscoder\_Release](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_release)操作退出转码操作。  开发者只能注册一个错误事件的回调方法，当开发者重复注册时，以最后一次注册的回调接口为准。  若开发者需监听转码错误事件，须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前注册转码错误事件。 |
| [OH\_AVErrCode OH\_AVTranscoder\_SetProgressUpdateCallback(OH\_AVTranscoder \*transcoder, OH\_AVTranscoder\_OnProgressUpdate callback, void \*userData)](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_setprogressupdatecallback) | 注册触发转码进度更新事件的回调方法。  当触发转码进度更新事件时，通过注册的回调方法通知开发者。  开发者只能注册一个错误事件的回调方法，当开发者重复注册时，以最后一次注册的回调接口为准。  若开发者需监听转码处理进度，则须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前注册该事件。 |

## 函数说明

PhonePC/2in1TabletTV

### OH\_AVTranscoderConfig\_Create()

PhonePC/2in1TabletTV



```
1. OH_AVTranscoder_Config *OH_AVTranscoderConfig_Create()
```

**描述**

创建转码配置参数实例。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \* | 如果创建成功返回指向OH\_AVTranscoder\_Config实例的指针，否则返回空指针。 |

### OH\_AVTranscoderConfig\_Release()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoderConfig_Release(OH_AVTranscoder_Config* config)
```

**描述**

释放转码配置参数资源。

调用成功后，config实例会被释放并置为nullptr。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config)\* config | 指向OH\_AVTranscoder\_Config实例的指针。传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：释放成功。  AV\_ERR\_INVALID\_VAL：config是空指针。 |

### OH\_AVTranscoderConfig\_SetSrcFD()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoderConfig_SetSrcFD(OH_AVTranscoder_Config *config, int32_t srcFd, int64_t srcOffset, int64_t length)
```

**描述**

设置转码源视频的文件描述符。

此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \*config | 指向OH\_AVTranscoder\_Config实例的指针。传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |
| int32\_t srcFd | 源视频的文件描述符。 |
| int64\_t srcOffset | 源视频在文件描述符中的偏移量，单位：字节/Byte。 |
| int64\_t length | 源视频的长度，单位：字节/Byte。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：设置成功。  AV\_ERR\_INVALID\_VAL：输入config为空指针，或者源视频文件相关参数错误。 |

### OH\_AVTranscoderConfig\_SetDstFD()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoderConfig_SetDstFD(OH_AVTranscoder_Config *config, int32_t dstFd)
```

**描述**

设置转码输出视频的文件描述符。

此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \*config | 指向OH\_AVTranscoder\_Config实例的指针。传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |
| int32\_t dstFd | 输出视频的文件描述符。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：设置成功。  AV\_ERR\_INVALID\_VAL：输入config为空指针，或者输出视频文件描述符是无效的。 |

### OH\_AVTranscoderConfig\_SetDstVideoType()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoType(OH_AVTranscoder_Config *config, const char *mimeType)
```

**描述**

设置用于转码的输出视频的编码格式。

当前仅支持AVC和HEVC。若源视频编码格式为HEVC，则默认设置为HEVC，否则默认设置为AVC。

此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \*config | 指向OH\_AVTranscoder\_Config实例的指针。传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |
| const char \*mimeType | 输出视频的编码格式，详细请参见[native\_avcodec\_base.h](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-avcodec-base-h#变量)。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：设置成功。  AV\_ERR\_INVALID\_VAL：输入的config为空指针，或者mimeType是不被允许的。 |

### OH\_AVTranscoderConfig\_SetDstAudioType()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoderConfig_SetDstAudioType(OH_AVTranscoder_Config *config, const char *mimeType)
```

**描述**

设置用于转码的输出音频的编码格式。

当前仅支持AAC。若开发者不设置，则默认设置为AAC。

此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \*config | 指向OH\_AVTranscoder\_Config实例的指针。传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |
| const char \*mimeType | 输出音频的编码格式，详细请参见[native\_avcodec\_base.h](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-avcodec-base-h#变量)。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：设置成功。  AV\_ERR\_INVALID\_VAL：输入的config为空指针，或者mimeType是不被允许的。 |

### OH\_AVTranscoderConfig\_SetDstFileType()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoderConfig_SetDstFileType(OH_AVTranscoder_Config *config, OH_AVOutputFormat mimeType)
```

**描述**

设置用于转码的输出视频文件的封装格式。

当前封装格式仅支持MP4。

此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \*config | 指向OH\_AVTranscoder\_Config实例的指针。传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |
| [OH\_AVOutputFormat](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-avcodec-base-h#oh_avoutputformat) mimeType | 输出视频的封装格式，详细请参见[native\_avcodec\_base.h](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-avcodec-base-h#变量)。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：设置成功。  AV\_ERR\_INVALID\_VAL：输入的config为空指针，或者mimeType是无效的。 |

### OH\_AVTranscoderConfig\_SetDstAudioBitrate()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoderConfig_SetDstAudioBitrate(OH_AVTranscoder_Config *config, int32_t bitrate)
```

**描述**

设置用于转码的输出音频的码率。

此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \*config | 指向OH\_AVTranscoder\_Config实例的指针。传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |
| int32\_t bitrate | 输出音频的码率，单位为比特率（bps）。支持范围[1-500000]，默认设置为48Kbps。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：设置成功。  AV\_ERR\_INVALID\_VAL：输入的config为空指针，或者bitrate值是无效的。 |

### OH\_AVTranscoderConfig\_SetDstVideoBitrate()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoBitrate(OH_AVTranscoder_Config *config, int32_t bitrate)
```

**描述**

设置用于转码的输出视频的码率。

此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \*config | 指向OH\_AVTranscoder\_Config实例的指针。传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |
| int32\_t bitrate | 输出视频的码率，单位为比特率（bps）。默认码率按输出视频的分辨率设置。  [240P,480P]默认码率值为1Mbps。  (480P,720P]默认码率值为2Mbps。  (240P,1080P]默认码率值为4Mbps。  1080P及以上默认码率值为8Mbps。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：设置成功。  AV\_ERR\_INVALID\_VAL：输入的config为空指针，或者bitrate值是无效的。 |

### OH\_AVTranscoderConfig\_SetDstVideoResolution()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoResolution(OH_AVTranscoder_Config *config, int32_t width, int32_t height)
```

**描述**

设置用于转码的输出视频的分辨率，单位为像素（px），其中width为输出视频帧的宽，height为输出视频帧的高。

此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前调用。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \*config | 指向OH\_AVTranscoder\_Config实例的指针。传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |
| int32\_t width | 输出视频帧的宽，支持范围[240-3840]，默认设置为源视频帧的宽。 |
| int32\_t height | 输出视频帧的高，支持范围[240-2160]，默认设置为源视频帧的高。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：设置成功。  AV\_ERR\_INVALID\_VAL：输入的config为空指针，或者width、height值是无效的。 |

### OH\_AVTranscoderConfig\_EnableBFrame()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoderConfig_EnableBFrame(OH_AVTranscoder_Config *config, bool enabled)
```

**描述**

转码设置输出视频B帧编码。

B帧视频编码相关的约束和限制可以参考文档[B帧视频编码约束和限制](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/video-encoding-b-frame#约束和限制)。

如果当前不符合B帧视频编码的约束和限制，将忽略B帧，按不使能B帧进行编码。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \*config | 指向OH\_AVTranscoder\_Config实例的指针。传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |
| bool enabled | 是否使能B帧编码。true表示使能B帧编码，false表示不使能B帧编码，默认为false。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：设置成功。  AV\_ERR\_INVALID\_VAL：输入的config为空指针。 |

### OH\_AVTranscoder\_Create()

PhonePC/2in1TabletTV



```
1. OH_AVTranscoder *OH_AVTranscoder_Create(void)
```

**描述**

创建转码实例。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder) \* | 如果创建成功返回指向OH\_AVTranscoder实例的指针，否则返回空指针。 |

### OH\_AVTranscoder\_Prepare()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoder_Prepare(OH_AVTranscoder *transcoder, OH_AVTranscoder_Config *config)
```

**描述**

进行视频转码的参数设置，准备转码。

此函数必须在[OH\_AVTranscoder\_Start](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_start)之前调用，调用成功之后进入AVTRANSCODER\_PREPARED状态。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder) \*transcoder | 指向OH\_AVTranscoder实例的指针。传入的transcoder指针必须为[OH\_AVTranscoder\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_create)创建的实例。 |
| [OH\_AVTranscoder\_Config](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder-config) \*config | 指向OH\_AVTranscoder\_Config实例的指针。  传入的config指针必须为[OH\_AVTranscoderConfig\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoderconfig_create)创建的实例。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：成功设置视频转码的参数设置，进入AVTRANSCODER\_PREPARED状态。  AV\_ERR\_INVALID\_VAL：输入的transcoder是空指针，或者转码准备操作失败。  AV\_ERR\_OPERATE\_NOT\_PERMIT：当前状态不允许执行Prepare操作，或者是不支持的格式。  AV\_ERR\_IO：IO访问相关的错误。  AV\_ERR\_SERVICE\_DIED：媒体服务已停止。 |

### OH\_AVTranscoder\_Start()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoder_Start(OH_AVTranscoder *transcoder)
```

**描述**

开始转码。

此函数必须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)成功调用之后调用，调用成功之后进入AVTRANSCODER\_STARTED状态。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder) \*transcoder | 指向OH\_AVTranscoder实例的指针。传入的transcoder指针必须为[OH\_AVTranscoder\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_create)创建的实例。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：成功开始转码，进入AVTRANSCODER\_STARTED状态。  AV\_ERR\_INVALID\_VAL：输入的transcoder是空指针，或者转码开始操作失败。  AV\_ERR\_OPERATE\_NOT\_PERMIT：当前状态不允许执行Start操作。  AV\_ERR\_IO：IO访问相关的错误。  AV\_ERR\_SERVICE\_DIED：媒体服务已停止。 |

### OH\_AVTranscoder\_Pause()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoder_Pause(OH_AVTranscoder *transcoder)
```

**描述**

暂停转码。

此函数必须在转码实例处于AVTRANSCODER\_STARTED状态时调用，调用成功之后进入AVTRANSCODER\_PAUSED状态。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder) \*transcoder | 指向OH\_AVTranscoder实例的指针。传入的transcoder指针必须为[OH\_AVTranscoder\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_create)创建的实例。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：成功暂停转码，进入AVTRANSCODER\_PAUSED状态。  AV\_ERR\_INVALID\_VAL：输入的transcoder是空指针，或者转码暂停操作失败。  AV\_ERR\_OPERATE\_NOT\_PERMIT：当前状态不允许执行Pause操作。  AV\_ERR\_IO：IO访问相关的错误。  AV\_ERR\_SERVICE\_DIED：媒体服务已停止。 |

### OH\_AVTranscoder\_Resume()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoder_Resume(OH_AVTranscoder *transcoder)
```

**描述**

恢复转码。

此函数必须在转码实例处于AVTRANSCODER\_PAUSED状态时调用，调用成功之后重新进入AVTRANSCODER\_STARTED状态。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder) \*transcoder | 指向OH\_AVTranscoder实例的指针。传入的transcoder指针必须为[OH\_AVTranscoder\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_create)创建的实例。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：成功恢复转码，进入AVTRANSCODER\_STARTED状态。  AV\_ERR\_INVALID\_VAL：输入的transcoder是空指针，或者转码恢复操作失败。  AV\_ERR\_OPERATE\_NOT\_PERMIT：当前状态不允许执行Resume操作。  AV\_ERR\_IO：IO访问相关的错误。  AV\_ERR\_SERVICE\_DIED：媒体服务已停止。 |

### OH\_AVTranscoder\_Cancel()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoder_Cancel(OH_AVTranscoder *transcoder)
```

**描述**

取消转码。

此函数须在转码实例处于AVTRANSCODER\_STARTED和AVTRANSCODER\_PAUSED状态时调用，调用成功之后进入AVTRANSCODER\_CANCELLED状态。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder) \*transcoder | 指向OH\_AVTranscoder实例的指针。传入的transcoder指针必须为[OH\_AVTranscoder\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_create)创建的实例。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：成功取消转码，进入AVTRANSCODER\_CANCELLED状态。  AV\_ERR\_INVALID\_VAL：输入的transcoder是空指针，或者转码取消操作失败。  AV\_ERR\_OPERATE\_NOT\_PERMIT：当前状态不允许执行Cancel操作。  AV\_ERR\_IO：IO访问相关的错误。  AV\_ERR\_SERVICE\_DIED：媒体服务已停止。 |

### OH\_AVTranscoder\_Release()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoder_Release(OH_AVTranscoder *transcoder)
```

**描述**

释放转码实例资源。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder) \*transcoder | 指向OH\_AVTranscoder实例的指针。传入的transcoder指针必须为OH\_AVTranscoder\_Create创建的实例。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：成功释放转码实例资源。  AV\_ERR\_INVALID\_VAL：输入的transcoder是空指针，或者转码释放资源操作失败。  AV\_ERR\_OPERATE\_NOT\_PERMIT：当前状态不允许执行Release操作。  AV\_ERR\_IO：IO访问相关的错误。  AV\_ERR\_SERVICE\_DIED：媒体服务已停止。 |

### OH\_AVTranscoder\_SetStateCallback()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoder_SetStateCallback(OH_AVTranscoder *transcoder, OH_AVTranscoder_OnStateChange callback, void *userData)
```

**描述**

注册触发转码状态修改事件的回调方法。

当触发状态修改事件时，通过注册的回调方法通知开发者。

开发者只能注册一个状态修改事件的回调方法，当开发者重复注册时，以最后一次注册的回调接口为准。

若开发者需监听转码状态修改，须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前注册转码状态回调。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder) \*transcoder | 指向OH\_AVTranscoder实例的指针。传入的transcoder指针必须为[OH\_AVTranscoder\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_create)创建的实例。 |
| [OH\_AVTranscoder\_OnStateChange](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-base-h#oh_avtranscoder_onstatechange) callback | 转码状态回调方法，详细说明请参见[OH\_AVTranscoder\_OnStateChange](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-base-h#oh_avtranscoder_onstatechange)。 |
| void \*userData | 用户特定数据的指针。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：注册成功。  AV\_ERR\_INVALID\_VAL：输入的transcoder是空指针，或者callback是空指针。 |

### OH\_AVTranscoder\_SetErrorCallback()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoder_SetErrorCallback(OH_AVTranscoder *transcoder, OH_AVTranscoder_OnError callback, void *userData)
```

**描述**

注册触发转码错误事件的回调方法。

当触发错误事件时，通过注册的回调方法通知开发者。

如果AVTranscoder上报error事件，开发者需要通过[OH\_AVTranscoder\_Release](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_release)操作退出转码操作。

开发者只能注册一个错误事件的回调方法，当开发者重复注册时，以最后一次注册的回调接口为准。

若开发者需监听转码错误事件，须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前注册转码错误事件。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder) \*transcoder | 指向OH\_AVTranscoder实例的指针。传入的transcoder指针必须为[OH\_AVTranscoder\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_create)创建的实例。 |
| [OH\_AVTranscoder\_OnError](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-base-h#oh_avtranscoder_onerror) callback | 转码错误回调方法，详细说明请参见[OH\_AVTranscoder\_OnError](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-base-h#oh_avtranscoder_onerror)。 |
| void \*userData | 用户特定数据的指针。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：注册成功。  AV\_ERR\_INVALID\_VAL：输入的transcoder是空指针，或者callback是空指针。 |

### OH\_AVTranscoder\_SetProgressUpdateCallback()

PhonePC/2in1TabletTV



```
1. OH_AVErrCode OH_AVTranscoder_SetProgressUpdateCallback(OH_AVTranscoder *transcoder, OH_AVTranscoder_OnProgressUpdate callback, void *userData)
```

**描述**

注册触发转码进度更新事件的回调方法。

当触发转码进度更新事件时，通过注册的回调方法通知开发者。

开发者只能注册一个错误事件的回调方法，当开发者重复注册时，以最后一次注册的回调接口为准。

若开发者需监听转码处理进度，则须在[OH\_AVTranscoder\_Prepare](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_prepare)之前注册该事件。

**系统能力：** SystemCapability.Multimedia.Media.AVTranscoder

**起始版本：** 20

**参数：**

展开

| 参数项 | 描述 |
| --- | --- |
| [OH\_AVTranscoder](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-oh-avtranscoder) \*transcoder | 指向OH\_AVTranscoder实例的指针。传入的transcoder指针必须为[OH\_AVTranscoder\_Create](/consumer/cn/doc/harmonyos-references/capi-avtranscoder-h#oh_avtranscoder_create)创建的实例。 |
| [OH\_AVTranscoder\_OnProgressUpdate](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-base-h#oh_avtranscoder_onprogressupdate) callback | 转码进度更新回调方法，详细说明请参见[OH\_AVTranscoder\_OnProgressUpdate](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-avtranscoder-base-h#oh_avtranscoder_onprogressupdate)。 |
| void \*userData | 用户特定数据的指针。 |

**返回：**

展开

| 类型 | 说明 |
| --- | --- |
| [OH\_AVErrCode](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/capi-native-averrors-h#oh_averrcode) | AV\_ERR\_OK：注册成功。  AV\_ERR\_INVALID\_VAL：输入的transcoder是空指针，或者callback是空指针。 |