• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# AVMuxer
2
3
4## 概述
5
6AVMuxer模块提供用于音视频封装功能的函数。
7
8**系统能力:** SystemCapability.Multimedia.Media.Muxer
9
10**起始版本:** 10
11
12
13## 汇总
14
15
16### 文件
17
18| 名称 | 描述 |
19| -------- | -------- |
20| [native_avmuxer.h](native__avmuxer_8h.md) | 声明用于音视频封装的Native API。 |
21
22
23### 函数
24
25| 名称 | 描述 |
26| -------- | -------- |
27| OH_AVMuxer \* [OH_AVMuxer_Create](#oh_avmuxer_create) (int32_t fd, [OH_AVOutputFormat](_codec_base.md#oh_avoutputformat) format) | 通过文件描述符fd和封装格式创建OH_AVMuxer实例。 |
28| [OH_AVErrCode](_core.md#oh_averrcode)[OH_AVMuxer_SetRotation](#oh_avmuxer_setrotation) (OH_AVMuxer \*muxer, int32_t rotation) | 设置视频的旋转角度(顺时针)。 |
29| [OH_AVErrCode](_core.md#oh_averrcode)[OH_AVMuxer_AddTrack](#oh_avmuxer_addtrack) (OH_AVMuxer \*muxer, int32_t \*trackIndex, OH_AVFormat \*trackFormat) | 向封装器添加媒体轨。 |
30| [OH_AVErrCode](_core.md#oh_averrcode)[OH_AVMuxer_Start](#oh_avmuxer_start) (OH_AVMuxer \*muxer) | 开始封装。 |
31| [OH_AVErrCode](_core.md#oh_averrcode)[OH_AVMuxer_WriteSample](#oh_avmuxer_writesample) (OH_AVMuxer \*muxer, uint32_t trackIndex, OH_AVMemory \*sample, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) info) | 将数据写入封装器。 |
32| [OH_AVErrCode](_core.md#oh_averrcode)[OH_AVMuxer_WriteSampleBuffer](#oh_avmuxer_writesamplebuffer) (OH_AVMuxer \*muxer, uint32_t trackIndex, const OH_AVBuffer \*sample) | 将数据写入封装器。 |
33| [OH_AVErrCode](_core.md#oh_averrcode)[OH_AVMuxer_Stop](#oh_avmuxer_stop) (OH_AVMuxer \*muxer) | 停止封装。 |
34| [OH_AVErrCode](_core.md#oh_averrcode)[OH_AVMuxer_Destroy](#oh_avmuxer_destroy) (OH_AVMuxer \*muxer) | 清理内部资源,销毁OH_AVMuxer实例。 |
35
36
37## 函数说明
38
39
40### OH_AVMuxer_AddTrack()
41
42```
43OH_AVErrCode OH_AVMuxer_AddTrack (OH_AVMuxer *muxer, int32_t *trackIndex, OH_AVFormat *trackFormat)
44```
45
46**描述**
47
48向封装器添加媒体轨。
49
50该接口必须在OH_AVMuxer_Start前调用。
51
52**系统能力:** SystemCapability.Multimedia.Media.Muxer
53
54**起始版本:** 10
55
56**参数:**
57
58| 名称 | 描述 |
59| -------- | -------- |
60| muxer | 指向OH_AVMuxer实例的指针。 |
61| trackIndex | 用于获取该轨的索引,该值在OH_AVMuxer_WriteSample接口中使用。 如果媒体轨添加成功,该值大于或等于0,否则小于0。 |
62| trackFormat | 指向OH_AVFormat实例的指针。 |
63
64**返回:**
65
66执行成功返回AV_ERR_OK,否则返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)。
67
68
69### OH_AVMuxer_Create()
70
71```
72OH_AVMuxer* OH_AVMuxer_Create (int32_t fd, OH_AVOutputFormat format)
73```
74
75**描述**
76
77通过文件描述符fd和封装格式创建OH_AVMuxer实例。
78
79**系统能力:** SystemCapability.Multimedia.Media.Muxer
80
81**起始版本:** 10
82
83**参数:**
84
85| 名称 | 描述 |
86| -------- | -------- |
87| fd | 用读写方式打开(O_RDWR),由调用者关闭该fd。 |
88| format | 封装输出的文件格式,参考[OH_AVOutputFormat](_codec_base.md#oh_avoutputformat)。 |
89
90**返回:**
91
92返回一个指向OH_AVMuxer实例的指针, 需要调用OH_AVMuxer_Destroy销毁。
93
94
95### OH_AVMuxer_Destroy()
96
97```
98OH_AVErrCode OH_AVMuxer_Destroy (OH_AVMuxer *muxer)
99```
100
101**描述**
102
103清理内部资源,销毁OH_AVMuxer实例。
104
105**系统能力:** SystemCapability.Multimedia.Media.Muxer
106
107**起始版本:** 10
108
109**参数:**
110
111| 名称 | 描述 |
112| -------- | -------- |
113| muxer | 指向OH_AVMuxer实例的指针。 |
114
115**返回:**
116
117执行成功返回AV_ERR_OK,需调用者置空muxer;否则返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)。
118
119
120### OH_AVMuxer_SetRotation()
121
122```
123OH_AVErrCode OH_AVMuxer_SetRotation (OH_AVMuxer *muxer, int32_t rotation)
124```
125
126**描述**
127
128设置视频的旋转角度(顺时针)。
129
130该接口必须在OH_AVMuxer_Start前调用。
131
132**系统能力:** SystemCapability.Multimedia.Media.Muxer
133
134**起始版本:** 10
135
136**参数:**
137
138| 名称 | 描述 |
139| -------- | -------- |
140| muxer | 指向OH_AVMuxer实例的指针。 |
141| rotation | 角度,必须为0、90、180 或 270。 |
142
143**返回:**
144
145执行成功返回AV_ERR_OK,否则返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)。
146
147
148### OH_AVMuxer_Start()
149
150```
151OH_AVErrCode OH_AVMuxer_Start (OH_AVMuxer *muxer)
152```
153
154**描述**
155
156开始封装。
157
158该接口必须在OH_AVMuxer_AddTrack后,OH_AVMuxer_WriteSample前调用。
159
160**系统能力:** SystemCapability.Multimedia.Media.Muxer
161
162**起始版本:** 10
163
164**参数:**
165
166| 名称 | 描述 |
167| -------- | -------- |
168| muxer | 指向OH_AVMuxer实例的指针。 |
169
170**返回:**
171
172执行成功返回AV_ERR_OK,否则返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)。
173
174
175### OH_AVMuxer_Stop()
176
177```
178OH_AVErrCode OH_AVMuxer_Stop (OH_AVMuxer *muxer)
179```
180
181**描述**
182
183停止封装。
184
185封装器一旦停止,不能重新开始。
186
187**系统能力:** SystemCapability.Multimedia.Media.Muxer
188
189**起始版本:** 10
190
191**参数:**
192
193| 名称 | 描述 |
194| -------- | -------- |
195| muxer | 指向OH_AVMuxer实例的指针。 |
196
197**返回:**
198
199执行成功返回AV_ERR_OK,否则返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)。
200
201
202### OH_AVMuxer_WriteSample()
203
204```
205OH_AVErrCode OH_AVMuxer_WriteSample (OH_AVMuxer *muxer, uint32_t trackIndex, OH_AVMemory *sample, OH_AVCodecBufferAttr info)
206```
207
208**描述**
209
210将数据写入封装器。
211
212该接口必须在OH_AVMuxer_Start后,OH_AVMuxer_Stop前调用。 调用者需要保证数据写入正确的轨道,并按时间顺序排列。
213
214**系统能力:** SystemCapability.Multimedia.Media.Muxer
215
216**起始版本:** 10
217
218**废弃版本:** 11
219
220**替代接口:**[OH_AVMuxer_WriteSampleBuffer](#oh_avmuxer_writesamplebuffer)
221
222**参数:**
223
224| 名称 | 描述 |
225| -------- | -------- |
226| muxer | 指向OH_AVMuxer实例的指针。 |
227| trackIndex | 数据对应的媒体轨的索引。 |
228| sample | 写入的数据,编码或解封装得到的数据。 |
229| info | 写入数据的信息,参考[OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md)。 |
230
231**返回:**
232
233执行成功返回AV_ERR_OK,否则返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)。
234
235
236### OH_AVMuxer_WriteSampleBuffer()
237
238```
239OH_AVErrCode OH_AVMuxer_WriteSampleBuffer (OH_AVMuxer *muxer, uint32_t trackIndex, const OH_AVBuffer *sample)
240```
241
242**描述**
243
244将数据写入封装器。
245
246该接口必须在OH_AVMuxer_Start后,OH_AVMuxer_Stop前调用。 调用者需要保证数据写入正确的轨道,并按时间顺序排列。
247
248**系统能力:** SystemCapability.Multimedia.Media.Muxer
249
250**起始版本:** 11
251
252**参数:**
253
254| 名称 | 描述 |
255| -------- | -------- |
256| muxer | 指向OH_AVMuxer实例的指针。 |
257| trackIndex | 数据对应的媒体轨的索引。 |
258| sample | 写入的数据,编码或解封装得到的数据。包含数据与数据属性。 |
259
260**返回:**
261
262执行成功返回AV_ERR_OK,否则返回具体错误码,参考[OH_AVErrCode](_core.md#oh_averrcode)。
263