• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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