• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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