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 41 42## 类型定义说明 43 44 45### OH_AVSource 46 47``` 48typedef struct OH_AVSource OH_AVSource 49``` 50**描述** 51为媒体资源接口定义native层对象。 52 53**起始版本:** 10 54 55 56## 函数说明 57 58 59### OH_AVSource_CreateWithDataSource() 60 61``` 62OH_AVSource* OH_AVSource_CreateWithDataSource (OH_AVDataSource * dataSource) 63``` 64**描述** 65为用户自定义数据源的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。 66 67**系统能力:** SystemCapability.Multimedia.Media.Spliter 68 69**起始版本:** 12 70 71**参数:** 72 73| 名称 | 描述 | 74| -------- | -------- | 75| dataSource | 用户自定义数据源。 | 76 77**返回:** 78 79如果执行成功,则返回一个指向OH_AVSource实例的指针,否则返回NULL。 80 81可能的故障原因: 821. dataSource为nullptr; 832. dataSource->size == 0; 843. 设置数据源失败; 854. 内存不足; 865. 解码器引擎为nullptr。 87 88 89### OH_AVSource_CreateWithFD() 90 91``` 92OH_AVSource* OH_AVSource_CreateWithFD (int32_t fd, int64_t offset, int64_t size) 93``` 94**描述** 95为文件描述符对应的资源对象创建OH_AVSource实例。可以通过调用OH_AVSource_Destroy接口释放实例。 96 97该接口如果传入offset不为文件起始位置,或size不为文件大小时,可能会因数据获取不完整导致 OH_AVSource创建失败、后续解封装失败等未定义错误。 98 99**系统能力:** SystemCapability.Multimedia.Media.Spliter 100 101**起始版本:** 10 102 103**参数:** 104 105| 名称 | 描述 | 106| -------- | -------- | 107| fd | 数据资源的文件描述符。 | 108| offset | 开始读取数据的位置。 | 109| size | 文件的字节数大小。 | 110 111**返回:** 112 113执行成功返回一个指向OH_AVSource实例的指针, 否则返回NULL。 114 115可能的故障原因: 116 1171. fd无效; 1182. 传入offset不是文件起始位置; 1193. size错误; 1204. 资源无效; 1215. 文件格式不支持。 122 123 124### OH_AVSource_CreateWithURI() 125 126``` 127OH_AVSource* OH_AVSource_CreateWithURI (char *uri) 128``` 129**描述** 130为统一资源标识符对应的的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。 131 132**系统能力:** SystemCapability.Multimedia.Media.Spliter 133 134**起始版本:** 10 135 136**参数:** 137 138| 名称 | 描述 | 139| -------- | -------- | 140| uri | 远程媒体资源的统一资源标识符。 | 141 142**返回:** 143 144执行成功返回一个指向OH_AVSource实例的指针, 否则返回NULL。 145 146可能的故障原因: 147 1481. 网络异常; 1492. 资源无效; 1503. 文件格式不支持。 151 152 153### OH_AVSource_Destroy() 154 155``` 156OH_AVErrCode OH_AVSource_Destroy (OH_AVSource *source) 157``` 158**描述** 159销毁OH_AVSource实例并清理内部资源。同一实例只能被销毁一次。销毁的实例在被重新创建之前不能再被使用。建议实例销毁成功后将指针置为NULL。 160 161**系统能力:** SystemCapability.Multimedia.Media.Spliter 162 163**起始版本:** 10 164 165**参数:** 166 167| 名称 | 描述 | 168| -------- | -------- | 169| source | 指向OH_AVSource实例的指针。 | 170 171**返回:** 172 173返回函数结果: 174 175AV_ERR_OK:操作成功。 176 177AV_ERR_INVALID_VAL: 178 179 1. source指针无效; 180 2. 空指针或非OH_AVSource实例。 181 182 183### OH_AVSource_GetSourceFormat() 184 185``` 186OH_AVFormat* OH_AVSource_GetSourceFormat (OH_AVSource *source) 187``` 188**描述** 189获取媒体资源文件的基础信息。 190 191**系统能力:** SystemCapability.Multimedia.Media.Spliter 192 193**起始版本:** 10 194 195**参数:** 196 197| 名称 | 描述 | 198| -------- | -------- | 199| source | 指向OH_AVSource实例的指针。 | 200 201**返回:** 202 203执行成功返回一个指向OH_AVSource实例的指针, 否则返回NULL。 204 205可能的故障原因: 206 2071. source指针无效; 2082. 空指针或非OH_AVSource实例; 2093. source没有初始化。 210 211 212### OH_AVSource_GetTrackFormat() 213 214``` 215OH_AVFormat* OH_AVSource_GetTrackFormat (OH_AVSource *source, uint32_t trackIndex) 216``` 217**描述** 218获取轨道的基础信息。 219 220**系统能力:** SystemCapability.Multimedia.Media.Spliter 221 222**起始版本:** 10 223 224**参数:** 225 226| 名称 | 描述 | 227| -------- | -------- | 228| source | 指向OH_AVSource实例的指针。 | 229| trackIndex | 需要获取信息的轨道的索引。 | 230 231**返回:** 232 233执行成功返回轨道的基础信息,否则返回NULL。 234 235可能的故障原因: 236 2371. source指针无效,空指针或非OH_AVSource实例; 2382. 轨道的索引超出范围; 2393. source没有初始化。 240