• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# AVSource
2
3
4## 概述
5
6AVSource模块提供用于构造媒体资源对象功能的函数。
7
8**系统能力:** SystemCapability.Multimedia.Media.Spliter
9
10**相关示例:** [AVCodec](https://gitcode.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Media/AVCodec)
11
12**起始版本:** 10
13
14
15## 汇总
16
17
18### 文件
19
20| 名称 | 描述 |
21| -------- | -------- |
22| [native_avsource.h](native__avsource_8h.md) | 声明用于音视频媒体数据解析的接口。  |
23
24
25### 类型定义
26
27| 名称 | 描述 |
28| -------- | -------- |
29| typedef struct [OH_AVSource](#oh_avsource) [OH_AVSource](#oh_avsource) | 为媒体资源接口定义native层对象。  |
30
31
32### 函数
33
34| 名称 | 描述 |
35| -------- | -------- |
36| [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接口释放实例。  |
37| [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithDataSourceExt](#oh_avsource_createwithdatasourceext) ([OH_AVDataSourceExt](_o_h___a_v_data_source_ext.md) \*dataSource, void *userData) | 为用户自定义数据源的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。回调支持通过userData传递用户自定义数据。  |
38| [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithURI](#oh_avsource_createwithuri) (char \*uri) | 为统一资源标识符对应的资源对象创建OH_AVSource实例。  |
39| [OH_AVSource](#oh_avsource) \* [OH_AVSource_CreateWithFD](#oh_avsource_createwithfd) (int32_t fd, int64_t offset, int64_t size) | 为文件描述符对应的资源对象创建OH_AVSource实例。  |
40| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVSource_Destroy](#oh_avsource_destroy) ([OH_AVSource](#oh_avsource) \*source) | 销毁OH_AVSource实例并清理内部资源。  |
41| [OH_AVFormat](_core.md#oh_avformat) \* [OH_AVSource_GetSourceFormat](#oh_avsource_getsourceformat) ([OH_AVSource](#oh_avsource) \*source) | 获取媒体资源文件的基础信息。  |
42| [OH_AVFormat](_core.md#oh_avformat) \* [OH_AVSource_GetTrackFormat](#oh_avsource_gettrackformat) ([OH_AVSource](#oh_avsource) \*source, uint32_t trackIndex) | 获取轨道的基础信息。  |
43| [OH_AVFormat](_core.md#oh_avformat) \* [OH_AVSource_GetCustomMetadataFormat](#oh_avsource_getcustommetadataformat) ([OH_AVSource](#oh_avsource) \*source) | 获取自定义元数据的基础信息。 |
44
45
46## 类型定义说明
47
48
49### OH_AVSource
50
51```
52typedef struct OH_AVSource OH_AVSource
53```
54**描述**
55为媒体资源接口定义native层对象。
56
57**起始版本:** 10
58
59
60## 函数说明
61
62
63### OH_AVSource_CreateWithDataSource()
64
65```
66OH_AVSource* OH_AVSource_CreateWithDataSource (OH_AVDataSource * dataSource)
67```
68**描述**
69为用户自定义数据源的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。
70
71**系统能力:** SystemCapability.Multimedia.Media.Spliter
72
73**起始版本:** 12
74
75**参数:**
76
77| 名称 | 描述 |
78| -------- | -------- |
79| dataSource | 用户自定义数据源。  |
80
81**返回:**
82
83如果执行成功,则返回一个指向OH_AVSource实例的指针,否则返回NULL。
84
85可能的故障原因:
861. dataSource为nullptr;
872. dataSource->size == 0;
883. 设置数据源失败;
894. 内存不足;
905. 解码器引擎为nullptr;
916. dataSource->readAt == nullptr。
92
93
94### OH_AVSource_CreateWithDataSourceExt()
95
96```
97OH_AVSource *OH_AVSource_CreateWithDataSourceExt(OH_AVDataSourceExt *dataSource, void *userData)
98```
99**描述**
100为用户自定义数据源的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。回调支持通过userData传递用户自定义数据。
101
102**系统能力:** SystemCapability.Multimedia.Media.Spliter
103
104**起始版本:** 20
105
106**参数:**
107
108| 名称 | 描述 |
109| -------- | -------- |
110| dataSource | 指向数据源结构体的指针,该结构体可用于获取输入数据。 |
111| userData | 指向用户自定义数据的指针。 |
112
113**返回:**
114
115如果执行成功,则返回一个指向OH_AVSource实例的指针,否则返回NULL。
116
117可能的故障原因:
1181. dataSource为nullptr。
1192. dataSource->size == 0。
1203. 设置数据源失败。
1214. 内存不足。
1225. 解码器引擎为nullptr。
1236. dataSource->readAt == nullptr。
124
125
126### OH_AVSource_CreateWithFD()
127
128```
129OH_AVSource* OH_AVSource_CreateWithFD (int32_t fd, int64_t offset, int64_t size)
130```
131**描述**
132为文件描述符对应的资源对象创建OH_AVSource实例。可以通过调用OH_AVSource_Destroy接口释放实例。
133
134该接口如果传入offset不为文件起始位置,或size不为文件大小时,可能会因数据获取不完整导致 OH_AVSource创建失败、后续解封装失败等未定义错误。
135
136**系统能力:** SystemCapability.Multimedia.Media.Spliter
137
138**起始版本:** 10
139
140**参数:**
141
142| 名称 | 描述 |
143| -------- | -------- |
144| fd | 数据资源的文件描述符。  |
145| offset | 开始读取数据的位置。  |
146| size | 文件的字节数大小。  |
147
148**返回:**
149
150执行成功返回一个指向OH_AVSource实例的指针,否则返回NULL。
151
152可能的故障原因:
153
1541. fd无效;
1552. 传入offset不是文件起始位置;
1563. size错误;
1574. 资源无效;
1585. 文件格式不支持。
159
160
161### OH_AVSource_CreateWithURI()
162
163```
164OH_AVSource* OH_AVSource_CreateWithURI (char *uri)
165```
166**描述**
167为统一资源标识符对应的资源对象创建OH_AVSource实例,可以通过调用OH_AVSource_Destroy接口释放实例。
168
169**系统能力:** SystemCapability.Multimedia.Media.Spliter
170
171**起始版本:** 10
172
173**参数:**
174
175| 名称 | 描述 |
176| -------- | -------- |
177| uri | 远程媒体资源的统一资源标识符。  |
178
179**返回:**
180
181执行成功返回一个指向OH_AVSource实例的指针,否则返回NULL。
182
183可能的故障原因:
184
1851. 网络异常;
1862. 资源无效;
1873. 文件格式不支持。
188
189
190### OH_AVSource_Destroy()
191
192```
193OH_AVErrCode OH_AVSource_Destroy (OH_AVSource *source)
194```
195**描述**
196销毁OH_AVSource实例并清理内部资源。同一实例只能被销毁一次。销毁的实例在被重新创建之前不能再被使用。建议实例销毁成功后将指针置为NULL。
197
198**系统能力:** SystemCapability.Multimedia.Media.Spliter
199
200**起始版本:** 10
201
202**参数:**
203
204| 名称 | 描述 |
205| -------- | -------- |
206| source | 指向OH_AVSource实例的指针。  |
207
208**返回:**
209
210返回函数结果:
211
212AV_ERR_OK:操作成功。
213
214AV_ERR_INVALID_VAL:
215
216    1. source指针无效;
217    2. 空指针或非OH_AVSource实例。
218
219
220### OH_AVSource_GetCustomMetadataFormat()
221
222```
223OH_AVFormat *OH_AVSource_GetCustomMetadataFormat(OH_AVSource *source)
224```
225
226**描述**
227
228获取自定义元数据的基础信息。
229
230需要注意的是,指向的OH_AVFormat实例在生命周期结束时需开发者通过调用接口[OH_AVFormat_Destroy](_core.md#oh_avformat_destroy)释放。
231
232**系统能力:** SystemCapability.Multimedia.Media.Spliter
233
234**起始版本:** 18
235
236**参数:**
237
238| 名称 | 描述 |
239| -------- | -------- |
240| source | 指向OH_AVSource实例的指针。 |
241
242**返回:**
243
244执行成功返回元数据的基础信息,否则返回NULL。
245
246可能的故障原因:
247
2481. source指针无效;
2492. 空指针或非OH_AVSource实例;
2503. source没有初始化。
251
252
253### OH_AVSource_GetSourceFormat()
254
255```
256OH_AVFormat* OH_AVSource_GetSourceFormat (OH_AVSource *source)
257```
258**描述**
259获取媒体资源文件的基础信息。
260
261需要注意的是,指向的OH_AVFormat实例在生命周期结束时需开发者通过调用接口[OH_AVFormat_Destroy](_core.md#oh_avformat_destroy)释放。
262
263**系统能力:** SystemCapability.Multimedia.Media.Spliter
264
265**起始版本:** 10
266
267**参数:**
268
269| 名称 | 描述 |
270| -------- | -------- |
271| source | 指向OH_AVSource实例的指针。  |
272
273**返回:**
274
275执行成功返回文件的基础信息,否则返回NULL。
276
277可能的故障原因:
278
2791. source指针无效;
2802. 空指针或非OH_AVSource实例;
2813. source没有初始化。
282
283
284### OH_AVSource_GetTrackFormat()
285
286```
287OH_AVFormat* OH_AVSource_GetTrackFormat (OH_AVSource *source, uint32_t trackIndex)
288```
289**描述**
290获取轨道的基础信息。
291
292需要注意的是,指向的OH_AVFormat实例在生命周期结束时需开发者通过调用接口[OH_AVFormat_Destroy](_core.md#oh_avformat_destroy)释放。
293
294**系统能力:** SystemCapability.Multimedia.Media.Spliter
295
296**起始版本:** 10
297
298**参数:**
299
300| 名称 | 描述 |
301| -------- | -------- |
302| source | 指向OH_AVSource实例的指针。  |
303| trackIndex | 需要获取信息的轨道的索引。  |
304
305**返回:**
306
307执行成功返回轨道的基础信息,否则返回NULL。
308
309可能的故障原因:
310
3111. source指针无效,空指针或非OH_AVSource实例;
3122. 轨道的索引超出范围;
3133. source没有初始化。
314