1# AVDemuxer 2 3 4## 概述 5 6AVDemuxer模块提供用于音视频解封装功能的函数。 7 8\@syscap SystemCapability.Multimedia.Media.Spliter 9 10**起始版本:** 11 1210 13 14 15## 汇总 16 17 18### 文件 19 20| 名称 | 描述 | 21| -------- | -------- | 22| [native_avdemuxer.h](native__avdemuxer_8h.md) | 声明用于音视频解封装的Native API。<br>**引用文件**:<multimedia/player_framework/native_avdemuxer.h><br>**库**:libnative_media_avdemuxer.so | 23 24 25### 函数 26 27| 名称 | 描述 | 28| -------- | -------- | 29| \*[OH_AVDemuxer_CreateWithSource](#oh_avdemuxer_createwithsource) (OH_AVSource \*source) | 通过source实例对象创建OH_AVDemuxer实例对象。 | 30| [OH_AVDemuxer_Destroy](#oh_avdemuxer_destroy) (OH_AVDemuxer \*demuxer) | 销毁OH_AVDemuxer实例并清理内部资源。 | 31| [OH_AVDemuxer_SelectTrackByID](#oh_avdemuxer_selecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | 选中指定轨道,解封装器将会从该轨道中读取数据。 | 32| [OH_AVDemuxer_UnselectTrackByID](#oh_avdemuxer_unselecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | 取消选择指定轨道,未选中的轨道的数据不会被解封装器读取。 | 33| [OH_AVDemuxer_ReadSample](#oh_avdemuxer_readsample) (OH_AVDemuxer \*demuxer, uint32_t trackIndex, OH_AVMemory \*sample, OH_AVCodecBufferAttr \*info) | 从选中轨道中获取当前位置压缩帧及相关信息。 | 34| [OH_AVDemuxer_SeekToTime](#oh_avdemuxer_seektotime) (OH_AVDemuxer \*demuxer, int64_t millisecond, OH_AVSeekMode mode) | 根据设定的跳转模式,将所有选中的轨道到指定时间附近。 | 35 36 37## 函数说明 38 39 40### OH_AVDemuxer_CreateWithSource() 41 42 43``` 44OH_AVDemuxer* OH_AVDemuxer_CreateWithSource (OH_AVSource *source) 45``` 46 47**描述:** 48 49通过source实例对象创建OH_AVDemuxer实例对象。可以通过调用 OH_AVDemuxer_Destroy 释放实例。 50 51\@syscap SystemCapability.Multimedia.Media.Spliter 52 53**参数:** 54 55| 名称 | 描述 | 56| -------- | -------- | 57| source | 指向OH_AVSource实例的指针。 | 58 59**返回:** 60 61返回一个指向OH_AVDemuxer实例的指针。 62 63**起始版本:** 64 6510 66 67 68### OH_AVDemuxer_Destroy() 69 70 71``` 72OH_AVErrCode OH_AVDemuxer_Destroy (OH_AVDemuxer *demuxer) 73``` 74 75**描述:** 76 77销毁OH_AVDemuxer实例并清理内部资源。同一实例只能被销毁一次。 78 79销毁的实例在被重新创建之前不能再被使用.。建议实例销毁成功后将指针置为NULL。 80 81\@syscap SystemCapability.Multimedia.Media.Spliter 82 83**参数:** 84 85| 名称 | 描述 | 86| -------- | -------- | 87| demuxer | 指向OH_AVDemuxer实例的指针。 | 88 89**返回:** 90 91执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 92 93**起始版本:** 94 9510 96 97 98### OH_AVDemuxer_ReadSample() 99 100 101``` 102OH_AVErrCode OH_AVDemuxer_ReadSample (OH_AVDemuxer *demuxer, uint32_t trackIndex, OH_AVMemory *sample, OH_AVCodecBufferAttr *info) 103``` 104 105**描述:** 106 107从选中轨道中获取当前位置压缩帧及相关信息。 108 109读取轨道帧数据前,轨道必须被选中。调用接口后解封装器 将自动前进到下一帧。 110 111\@syscap SystemCapability.Multimedia.Media.Spliter 112 113**参数:** 114 115| 名称 | 描述 | 116| -------- | -------- | 117| demuxer | 指向OH_AVDemuxer实例的指针。 | 118| trackIndex | 本次读取压缩帧的轨道的索引。 | 119| sample | 指向OH_AVMemory实例的指针,用于储存压缩帧数据。 | 120| info | 指向OH_AVCodecBufferAttr实例的指针,用于储存压缩帧的相关信息。 | 121 122**返回:** 123 124执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 125 126**起始版本:** 127 12810 129 130 131### OH_AVDemuxer_SeekToTime() 132 133 134``` 135OH_AVErrCode OH_AVDemuxer_SeekToTime (OH_AVDemuxer *demuxer, int64_t millisecond, OH_AVSeekMode mode) 136``` 137 138**描述:** 139 140根据设定的跳转模式,将所有选中的轨道到指定时间附近。 141 142\@syscap SystemCapability.Multimedia.Media.Spliter 143 144**参数:** 145 146| 名称 | 描述 | 147| -------- | -------- | 148| demuxer | 指向OH_AVDemuxer实例的指针。 | 149| millisecond | 期望跳转位置对应的时间,单位为毫秒,该时间戳是相对文件开始的位置。 | 150| mode | 跳转的模式,参考**OH_AVSeekMode。** | 151 152**返回:** 153 154执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 155 156**起始版本:** 157 15810 159 160 161### OH_AVDemuxer_SelectTrackByID() 162 163 164``` 165OH_AVErrCode OH_AVDemuxer_SelectTrackByID (OH_AVDemuxer *demuxer, uint32_t trackIndex) 166``` 167 168**描述:** 169 170选中指定轨道,解封装器将会从该轨道中读取数据。 171 172通过多次调用接口并传入不同轨道的索引来 选中多个轨道。 173 174调用OH_AVDemuxer_ReadSample时只会读取被选中的轨道中数据,同一轨道被选择多次时,接口会返回AV_ERR_OK,并且只会生效一次。 175 176\@syscap SystemCapability.Multimedia.Media.Spliter 177 178**参数:** 179 180| 名称 | 描述 | 181| -------- | -------- | 182| demuxer | 指向OH_AVDemuxer实例的指针。 | 183| trackIndex | 需选择的轨道的索引。 | 184 185**返回:** 186 187执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 188 189**起始版本:** 190 19110 192 193 194### OH_AVDemuxer_UnselectTrackByID() 195 196 197``` 198OH_AVErrCode OH_AVDemuxer_UnselectTrackByID (OH_AVDemuxer *demuxer, uint32_t trackIndex) 199``` 200 201**描述:** 202 203取消选择指定轨道,未选中的轨道的数据不会被解封装器读取。 204 205通过多次调用接口并传入不同轨道的索引来取消对多个轨道的选择。 206 207同一轨道被多次取消选择时,接口会返回AV_ERR_OK,并且只会生效一次。 208 209\@syscap SystemCapability.Multimedia.Media.Spliter 210 211**参数:** 212 213| 名称 | 描述 | 214| -------- | -------- | 215| demuxer | 指向OH_AVDemuxer实例的指针。 | 216| trackIndex | 需取消选择的轨道的索引。 | 217 218**返回:** 219 220执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。 221 222**起始版本:** 223 22410 225