• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# AVDemuxer
2
3
4## 概述
5
6AVDemuxer模块提供用于音视频解封装功能的函数。
7
8**系统能力:** SystemCapability.Multimedia.Media.Spliter
9
10**起始版本:** 10
11
12
13## 汇总
14
15
16### 文件
17
18| 名称 | 描述 |
19| -------- | -------- |
20| [native_avdemuxer.h](native__avdemuxer_8h.md) | 声明用于音视频解封装的Native API。<br>**引用文件**:<multimedia/player_framework/native_avdemuxer.h><br>**库**:libnative_media_avdemuxer.so |
21
22
23### 函数
24
25| 名称 | 描述 |
26| -------- | -------- |
27| OH_AVDemuxer \* [OH_AVDemuxer_CreateWithSource](#oh_avdemuxer_createwithsource) ([OH_AVSource](_a_v_source.md#oh_avsource) \*source) | 通过source实例对象创建OH_AVDemuxer实例对象。 |
28| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_Destroy](#oh_avdemuxer_destroy) (OH_AVDemuxer \*demuxer) | 销毁OH_AVDemuxer实例并清理内部资源。 |
29| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_SelectTrackByID](#oh_avdemuxer_selecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | 选中指定轨道,解封装器将会从该轨道中读取数据。 |
30| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_UnselectTrackByID](#oh_avdemuxer_unselecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | 取消选择指定轨道,未选中的轨道的数据不会被解封装器读取。 |
31| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_ReadSample](#oh_avdemuxer_readsample) (OH_AVDemuxer \*demuxer, uint32_t trackIndex, [OH_AVMemory](_core.md#oh_avmemory) \*sample, [OH_AVCodecBufferAttr](_o_h___a_v_codec_buffer_attr.md) \*info) | 从选中轨道中获取当前位置压缩帧及相关信息。 |
32| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_ReadSampleBuffer](#oh_avdemuxer_readsamplebuffer) (OH_AVDemuxer \*demuxer, uint32_t trackIndex, [OH_AVBuffer](_core.md#oh_avbuffer) \*sample) | 从选中轨道中获取当前位置压缩帧及相关信息。 |
33| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_SeekToTime](#oh_avdemuxer_seektotime) (OH_AVDemuxer \*demuxer, int64_t millisecond, [OH_AVSeekMode](_codec_base.md#oh_avseekmode) mode) | 根据设定的跳转模式,将所有选中的轨道到指定时间附近。  |
34| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_SetMediaKeySystemInfoCallback](#oh_avdemuxer_setmediakeysysteminfocallback) (OH_AVDemuxer \*demuxer, DRM_MediaKeySystemInfoCallback callback) | 设置异步DRM信息回调函数。  |
35| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_GetMediaKeySystemInfo](#oh_avdemuxer_getmediakeysysteminfo) (OH_AVDemuxer \*demuxer, DRM_MediaKeySystemInfo \*mediaKeySystemInfo) | 获取DRM信息。  |
36
37
38## 函数说明
39
40
41### OH_AVDemuxer_CreateWithSource()
42
43```
44OH_AVDemuxer* OH_AVDemuxer_CreateWithSource (OH_AVSource *source)
45```
46
47**描述**
48
49通过source实例对象创建OH_AVDemuxer实例对象。可以通过调用[OH_AVDemuxer_Destroy](#oh_avdemuxer_destroy)释放实例。
50
51**系统能力:** SystemCapability.Multimedia.Media.Spliter
52
53**起始版本:** 10
54
55**参数:**
56
57| 名称 | 描述 |
58| -------- | -------- |
59| source | 指向OH_AVSource实例的指针。 |
60
61**返回:**
62
63返回一个指向OH_AVDemuxer实例的指针。
64
65
66### OH_AVDemuxer_Destroy()
67
68```
69OH_AVErrCode OH_AVDemuxer_Destroy (OH_AVDemuxer *demuxer)
70```
71
72**描述**
73
74销毁OH_AVDemuxer实例并清理内部资源。同一实例只能被销毁一次。
75
76注意,销毁的实例在被重新创建之前不能再被使用。建议实例销毁成功后将指针置为NULL。
77
78**系统能力:** SystemCapability.Multimedia.Media.Spliter
79
80**起始版本:** 10
81
82**参数:**
83
84| 名称 | 描述 |
85| -------- | -------- |
86| demuxer | 指向OH_AVDemuxer实例的指针。 |
87
88**返回:**
89
90执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)
91
92
93### OH_AVDemuxer_GetMediaKeySystemInfo()
94
95```
96OH_AVErrCode OH_AVDemuxer_GetMediaKeySystemInfo (OH_AVDemuxer *demuxer, DRM_MediaKeySystemInfo *mediaKeySystemInfo)
97```
98**描述**
99
100获取DRM信息。
101
102**系统能力:** SystemCapability.Multimedia.Media.Spliter
103
104**起始版本:** 11
105
106**参数:**
107
108| 名称 | 描述 |
109| -------- | -------- |
110| demuxer | 指向OH_AVDemuxer实例的指针。  |
111| mediaKeySystemInfo | 指向DRM信息的指针,请参阅[DRM_MediaKeySystemInfo](../apis-drm-kit/_d_r_m___media_key_system_info.md)。  |
112
113**返回:**
114
115执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
116
117
118### OH_AVDemuxer_ReadSample()
119
120```
121OH_AVErrCode OH_AVDemuxer_ReadSample (OH_AVDemuxer *demuxer, uint32_t trackIndex, OH_AVMemory *sample, OH_AVCodecBufferAttr *info)
122```
123
124**描述**
125
126从选中轨道中获取当前位置压缩帧及相关信息。
127
128注意,读取轨道帧数据前,轨道必须被选中。调用接口后解封装器将自动前进到下一帧。
129
130**系统能力:** SystemCapability.Multimedia.Media.Spliter
131
132**起始版本:** 10
133
134**废弃版本:** 11
135
136**替代接口:**[OH_AVDemuxer_ReadSampleBuffer](#oh_avdemuxer_readsamplebuffer)
137
138**参数:**
139
140| 名称 | 描述 |
141| -------- | -------- |
142| demuxer | 指向OH_AVDemuxer实例的指针。 |
143| trackIndex | 本次读取压缩帧的轨道的索引。 |
144| sample | 指向OH_AVMemory实例的指针,用于储存压缩帧数据。 |
145| info | 指向OH_AVCodecBufferAttr实例的指针,用于储存压缩帧的相关信息。 |
146
147**返回:**
148
149执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
150
151
152### OH_AVDemuxer_ReadSampleBuffer()
153
154```
155OH_AVErrCode OH_AVDemuxer_ReadSampleBuffer (OH_AVDemuxer *demuxer, uint32_t trackIndex, OH_AVBuffer *sample)
156```
157
158**描述**
159
160从选中轨道中获取当前位置压缩帧及相关信息。
161
162注意,读取轨道帧数据前,轨道必须被选中。调用接口后解封装器将自动前进到下一帧。
163
164**系统能力:** SystemCapability.Multimedia.Media.Spliter
165
166**起始版本:** 11
167
168**参数:**
169
170| 名称 | 描述 |
171| -------- | -------- |
172| demuxer | 指向OH_AVDemuxer实例的指针。 |
173| trackIndex | 本次读取压缩帧的轨道的索引。 |
174| sample | 指向OH_AVBuffer实例的指针,用于储存压缩帧数据以及相关信息。 |
175
176**返回:**
177
178执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
179
180
181### OH_AVDemuxer_SeekToTime()
182
183```
184OH_AVErrCode OH_AVDemuxer_SeekToTime (OH_AVDemuxer *demuxer, int64_t millisecond, OH_AVSeekMode mode)
185```
186
187**描述**
188
189根据设定的跳转模式,将所有选中的轨道到指定时间附近。
190
191**系统能力:** SystemCapability.Multimedia.Media.Spliter
192
193**起始版本:** 10
194
195**参数:**
196
197| 名称 | 描述 |
198| -------- | -------- |
199| demuxer | 指向OH_AVDemuxer实例的指针。 |
200| millisecond | 期望跳转位置对应的时间,单位为毫秒,该时间戳是相对文件开始的位置。 |
201| mode | 跳转的模式,参考[OH_AVSeekMode](_codec_base.md#oh_avseekmode)。 |
202
203**返回:**
204
205执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
206
207
208### OH_AVDemuxer_SelectTrackByID()
209
210```
211OH_AVErrCode OH_AVDemuxer_SelectTrackByID (OH_AVDemuxer *demuxer, uint32_t trackIndex)
212```
213
214**描述**
215
216选中指定轨道,解封装器将会从该轨道中读取数据。
217
218注意,通过多次调用接口并传入不同轨道的索引来选中多个轨道。 调用OH_AVDemuxer_ReadSample时只会读取被选中的轨道中数据,同一轨道被选择多次时,接口会返回AV_ERR_OK,并且只会生效一次。
219
220**系统能力:** SystemCapability.Multimedia.Media.Spliter
221
222**起始版本:** 10
223
224**参数:**
225
226| 名称 | 描述 |
227| -------- | -------- |
228| demuxer | 指向OH_AVDemuxer实例的指针。 |
229| trackIndex | 需选择的轨道的索引。 |
230
231**返回:**
232
233执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
234
235
236### OH_AVDemuxer_SetMediaKeySystemInfoCallback()
237
238```
239OH_AVErrCode OH_AVDemuxer_SetMediaKeySystemInfoCallback (OH_AVDemuxer *demuxer, DRM_MediaKeySystemInfoCallback callback)
240```
241**描述**
242
243设置异步DRM信息回调函数。
244
245**系统能力:** SystemCapability.Multimedia.Media.Spliter
246
247**起始版本:** 11
248
249**参数:**
250
251| 名称 | 描述 |
252| -------- | -------- |
253| demuxer | 指向OH_AVDemuxer实例的指针。  |
254| callback | 回调函数,详见[DRM_MediaKeySystemInfoCallback](../apis-drm-kit/_drm.md#drm_mediakeysysteminfocallback)。  |
255
256**返回:**
257
258执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
259
260
261### OH_AVDemuxer_UnselectTrackByID()
262
263```
264OH_AVErrCode OH_AVDemuxer_UnselectTrackByID (OH_AVDemuxer *demuxer, uint32_t trackIndex)
265```
266
267**描述**
268
269取消选择指定轨道,未选中的轨道的数据不会被解封装器读取。
270
271注意,通过多次调用接口并传入不同轨道的索引来取消对多个轨道的选择。 同一轨道被多次取消选择时,接口会返回AV_ERR_OK,并且只会生效一次。
272
273**系统能力:** SystemCapability.Multimedia.Media.Spliter
274
275**起始版本:** 10
276
277**参数:**
278
279| 名称 | 描述 |
280| -------- | -------- |
281| demuxer | 指向OH_AVDemuxer实例的指针。 |
282| trackIndex | 需取消选择的轨道的索引。 |
283
284**返回:**
285
286执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
287