1# AVSource 2 3 4## 概述 5 6AVSource模块提供用于构造媒体资源对象功能的函数。 7 8**系统能力:** SystemCapability.Multimedia.Media.Spliter 9 10**起始版本:** 10 11 12 13## 汇总 14 15 16### 文件 17 18| 名称 | 描述 | 19| -------- | -------- | 20| [native_avsource.h](native__avsource_8h.md) | 声明用于音视频媒体数据解析的接口。 | 21 22 23### 类型定义 24 25| 名称 | 描述 | 26| -------- | -------- | 27| typedef struct [OH_AVSource](#oh_avsource) [OH_AVSource](#oh_avsource) | 为媒体资源接口定义native层对象。 | 28 29 30### 函数 31 32| 名称 | 描述 | 33| -------- | -------- | 34| [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithDataSource](#oh_avsource_createwithdatasource) ([OH_AVDataSource](_o_h___a_v_data_source.md) \*dataSource) | 为用户自定义数据源的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。 | 35| [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithURI](#oh_avsource_createwithuri) (char \*uri) | 为统一资源标识符对应的资源对象创建OH_AVSource实例。 | 36| [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithFD](#oh_avsource_createwithfd) (int32_t fd, int64_t offset, int64_t size) | 为文件描述符对应的资源对象创建OH_AVSource实例。 | 37| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVSource_Destroy](#oh_avsource_destroy) ([OH_AVSource](#oh_avsource) \*source) | 销毁OH_AVSource实例并清理内部资源。 | 38| [OH_AVFormat](_core.md#oh_avformat) \* [OH_AVSource_GetSourceFormat](#oh_avsource_getsourceformat) ([OH_AVSource](#oh_avsource) \*source) | 获取媒体资源文件的基础信息。 | 39| [OH_AVFormat](_core.md#oh_avformat) \* [OH_AVSource_GetTrackFormat](#oh_avsource_gettrackformat) ([OH_AVSource](#oh_avsource) \*source, uint32_t trackIndex) | 获取轨道的基础信息。 | 40| [OH_AVFormat](_core.md#oh_avformat) \* [OH_AVSource_GetCustomMetadataFormat](#oh_avsource_getcustommetadataformat) ([OH_AVSource](#oh_avsource) \*source) | 获取自定义元数据的基础信息。 | 41 42 43## 类型定义说明 44 45 46### OH_AVSource 47 48``` 49typedef struct OH_AVSource OH_AVSource 50``` 51**描述** 52为媒体资源接口定义native层对象。 53 54**起始版本:** 10 55 56 57## 函数说明 58 59 60### OH_AVSource_CreateWithDataSource() 61 62``` 63OH_AVSource* OH_AVSource_CreateWithDataSource (OH_AVDataSource * dataSource) 64``` 65**描述** 66为用户自定义数据源的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。 67 68**系统能力:** SystemCapability.Multimedia.Media.Spliter 69 70**起始版本:** 12 71 72**参数:** 73 74| 名称 | 描述 | 75| -------- | -------- | 76| dataSource | 用户自定义数据源。 | 77 78**返回:** 79 80如果执行成功,则返回一个指向OH_AVSource实例的指针,否则返回NULL。 81 82可能的故障原因: 831. dataSource为nullptr; 842. dataSource->size == 0; 853. 设置数据源失败; 864. 内存不足; 875. 解码器引擎为nullptr。 88 89 90### OH_AVSource_CreateWithFD() 91 92``` 93OH_AVSource* OH_AVSource_CreateWithFD (int32_t fd, int64_t offset, int64_t size) 94``` 95**描述** 96为文件描述符对应的资源对象创建OH_AVSource实例。可以通过调用OH_AVSource_Destroy接口释放实例。 97 98该接口如果传入offset不为文件起始位置,或size不为文件大小时,可能会因数据获取不完整导致 OH_AVSource创建失败、后续解封装失败等未定义错误。 99 100**系统能力:** SystemCapability.Multimedia.Media.Spliter 101 102**起始版本:** 10 103 104**参数:** 105 106| 名称 | 描述 | 107| -------- | -------- | 108| fd | 数据资源的文件描述符。 | 109| offset | 开始读取数据的位置。 | 110| size | 文件的字节数大小。 | 111 112**返回:** 113 114执行成功返回一个指向OH_AVSource实例的指针,否则返回NULL。 115 116可能的故障原因: 117 1181. fd无效; 1192. 传入offset不是文件起始位置; 1203. size错误; 1214. 资源无效; 1225. 文件格式不支持。 123 124 125### OH_AVSource_CreateWithURI() 126 127``` 128OH_AVSource* OH_AVSource_CreateWithURI (char *uri) 129``` 130**描述** 131为统一资源标识符对应的的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。 132 133**系统能力:** SystemCapability.Multimedia.Media.Spliter 134 135**起始版本:** 10 136 137**参数:** 138 139| 名称 | 描述 | 140| -------- | -------- | 141| uri | 远程媒体资源的统一资源标识符。 | 142 143**返回:** 144 145执行成功返回一个指向OH_AVSource实例的指针,否则返回NULL。 146 147可能的故障原因: 148 1491. 网络异常; 1502. 资源无效; 1513. 文件格式不支持。 152 153 154### OH_AVSource_Destroy() 155 156``` 157OH_AVErrCode OH_AVSource_Destroy (OH_AVSource *source) 158``` 159**描述** 160销毁OH_AVSource实例并清理内部资源。同一实例只能被销毁一次。销毁的实例在被重新创建之前不能再被使用。建议实例销毁成功后将指针置为NULL。 161 162**系统能力:** SystemCapability.Multimedia.Media.Spliter 163 164**起始版本:** 10 165 166**参数:** 167 168| 名称 | 描述 | 169| -------- | -------- | 170| source | 指向OH_AVSource实例的指针。 | 171 172**返回:** 173 174返回函数结果: 175 176AV_ERR_OK:操作成功。 177 178AV_ERR_INVALID_VAL: 179 180 1. source指针无效; 181 2. 空指针或非OH_AVSource实例。 182 183 184### OH_AVSource_GetCustomMetadataFormat() 185 186``` 187OH_AVFormat *OH_AVSource_GetCustomMetadataFormat(OH_AVSource *source) 188``` 189 190**描述** 191 192获取自定义元数据的基础信息。 193 194需要注意的是,指向的OH_AVFormat实例在生命周期结束时需开发者通过调用接口[OH_AVFormat_Destroy](_core.md#oh_avformat_destroy)释放。 195 196**系统能力:** SystemCapability.Multimedia.Media.Spliter 197 198**起始版本:** 18 199 200**参数:** 201 202| 名称 | 描述 | 203| -------- | -------- | 204| source | 指向OH_AVSource实例的指针。 | 205 206**返回:** 207 208执行成功返回元数据的基础信息,否则返回NULL。 209 210可能的故障原因: 211 2121. source指针无效; 2132. 空指针或非OH_AVSource实例; 2143. source没有初始化。 215 216 217### OH_AVSource_GetSourceFormat() 218 219``` 220OH_AVFormat* OH_AVSource_GetSourceFormat (OH_AVSource *source) 221``` 222**描述** 223获取媒体资源文件的基础信息。 224 225需要注意的是,指向的OH_AVFormat实例在生命周期结束时需开发者通过调用接口[OH_AVFormat_Destroy](_core.md#oh_avformat_destroy)释放。 226 227**系统能力:** SystemCapability.Multimedia.Media.Spliter 228 229**起始版本:** 10 230 231**参数:** 232 233| 名称 | 描述 | 234| -------- | -------- | 235| source | 指向OH_AVSource实例的指针。 | 236 237**返回:** 238 239执行成功返回文件的基础信息,否则返回NULL。 240 241可能的故障原因: 242 2431. source指针无效; 2442. 空指针或非OH_AVSource实例; 2453. source没有初始化。 246 247 248### OH_AVSource_GetTrackFormat() 249 250``` 251OH_AVFormat* OH_AVSource_GetTrackFormat (OH_AVSource *source, uint32_t trackIndex) 252``` 253**描述** 254获取轨道的基础信息。 255 256需要注意的是,指向的OH_AVFormat实例在生命周期结束时需开发者通过调用接口[OH_AVFormat_Destroy](_core.md#oh_avformat_destroy)释放。 257 258**系统能力:** SystemCapability.Multimedia.Media.Spliter 259 260**起始版本:** 10 261 262**参数:** 263 264| 名称 | 描述 | 265| -------- | -------- | 266| source | 指向OH_AVSource实例的指针。 | 267| trackIndex | 需要获取信息的轨道的索引。 | 268 269**返回:** 270 271执行成功返回轨道的基础信息,否则返回NULL。 272 273可能的故障原因: 274 2751. source指针无效,空指针或非OH_AVSource实例; 2762. 轨道的索引超出范围; 2773. source没有初始化。 278