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