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