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