• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# AVDemuxer
2
3
4## 概述
5
6AVDemuxer模块提供用于音视频解封装功能的函数。
7
8\@syscap SystemCapability.Multimedia.Media.Spliter
9
10**起始版本:**
11
1210
13
14
15## 汇总
16
17
18### 文件
19
20| 名称 | 描述 |
21| -------- | -------- |
22| [native_avdemuxer.h](native__avdemuxer_8h.md) | 声明用于音视频解封装的Native API。<br>**引用文件**:<multimedia/player_framework/native_avdemuxer.h><br>**库**:libnative_media_avdemuxer.so |
23
24
25### 函数
26
27| 名称 | 描述 |
28| -------- | -------- |
29| \*[OH_AVDemuxer_CreateWithSource](#oh_avdemuxer_createwithsource) (OH_AVSource \*source) | 通过source实例对象创建OH_AVDemuxer实例对象。 |
30| [OH_AVDemuxer_Destroy](#oh_avdemuxer_destroy) (OH_AVDemuxer \*demuxer) | 销毁OH_AVDemuxer实例并清理内部资源。 |
31| [OH_AVDemuxer_SelectTrackByID](#oh_avdemuxer_selecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | 选中指定轨道,解封装器将会从该轨道中读取数据。 |
32| [OH_AVDemuxer_UnselectTrackByID](#oh_avdemuxer_unselecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | 取消选择指定轨道,未选中的轨道的数据不会被解封装器读取。 |
33| [OH_AVDemuxer_ReadSample](#oh_avdemuxer_readsample) (OH_AVDemuxer \*demuxer, uint32_t trackIndex, OH_AVMemory \*sample, OH_AVCodecBufferAttr \*info) | 从选中轨道中获取当前位置压缩帧及相关信息。 |
34| [OH_AVDemuxer_SeekToTime](#oh_avdemuxer_seektotime) (OH_AVDemuxer \*demuxer, int64_t millisecond, OH_AVSeekMode mode) | 根据设定的跳转模式,将所有选中的轨道到指定时间附近。 |
35
36
37## 函数说明
38
39
40### OH_AVDemuxer_CreateWithSource()
41
42
43```
44OH_AVDemuxer* OH_AVDemuxer_CreateWithSource (OH_AVSource *source)
45```
46
47**描述:**
48
49通过source实例对象创建OH_AVDemuxer实例对象。可以通过调用 OH_AVDemuxer_Destroy 释放实例。
50
51\@syscap SystemCapability.Multimedia.Media.Spliter
52
53**参数:**
54
55| 名称 | 描述 |
56| -------- | -------- |
57| source | 指向OH_AVSource实例的指针。 |
58
59**返回:**
60
61返回一个指向OH_AVDemuxer实例的指针。
62
63**起始版本:**
64
6510
66
67
68### OH_AVDemuxer_Destroy()
69
70
71```
72OH_AVErrCode OH_AVDemuxer_Destroy (OH_AVDemuxer *demuxer)
73```
74
75**描述:**
76
77销毁OH_AVDemuxer实例并清理内部资源。同一实例只能被销毁一次。
78
79销毁的实例在被重新创建之前不能再被使用.。建议实例销毁成功后将指针置为NULL。
80
81\@syscap SystemCapability.Multimedia.Media.Spliter
82
83**参数:**
84
85| 名称 | 描述 |
86| -------- | -------- |
87| demuxer | 指向OH_AVDemuxer实例的指针。 |
88
89**返回:**
90
91执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
92
93**起始版本:**
94
9510
96
97
98### OH_AVDemuxer_ReadSample()
99
100
101```
102OH_AVErrCode OH_AVDemuxer_ReadSample (OH_AVDemuxer *demuxer, uint32_t trackIndex, OH_AVMemory *sample, OH_AVCodecBufferAttr *info)
103```
104
105**描述:**
106
107从选中轨道中获取当前位置压缩帧及相关信息。
108
109读取轨道帧数据前,轨道必须被选中。调用接口后解封装器 将自动前进到下一帧。
110
111\@syscap SystemCapability.Multimedia.Media.Spliter
112
113**参数:**
114
115| 名称 | 描述 |
116| -------- | -------- |
117| demuxer | 指向OH_AVDemuxer实例的指针。 |
118| trackIndex | 本次读取压缩帧的轨道的索引。 |
119| sample | 指向OH_AVMemory实例的指针,用于储存压缩帧数据。 |
120| info | 指向OH_AVCodecBufferAttr实例的指针,用于储存压缩帧的相关信息。 |
121
122**返回:**
123
124执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
125
126**起始版本:**
127
12810
129
130
131### OH_AVDemuxer_SeekToTime()
132
133
134```
135OH_AVErrCode OH_AVDemuxer_SeekToTime (OH_AVDemuxer *demuxer, int64_t millisecond, OH_AVSeekMode mode)
136```
137
138**描述:**
139
140根据设定的跳转模式,将所有选中的轨道到指定时间附近。
141
142\@syscap SystemCapability.Multimedia.Media.Spliter
143
144**参数:**
145
146| 名称 | 描述 |
147| -------- | -------- |
148| demuxer | 指向OH_AVDemuxer实例的指针。 |
149| millisecond | 期望跳转位置对应的时间,单位为毫秒,该时间戳是相对文件开始的位置。 |
150| mode | 跳转的模式,参考**OH_AVSeekMode。** |
151
152**返回:**
153
154执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
155
156**起始版本:**
157
15810
159
160
161### OH_AVDemuxer_SelectTrackByID()
162
163
164```
165OH_AVErrCode OH_AVDemuxer_SelectTrackByID (OH_AVDemuxer *demuxer, uint32_t trackIndex)
166```
167
168**描述:**
169
170选中指定轨道,解封装器将会从该轨道中读取数据。
171
172通过多次调用接口并传入不同轨道的索引来 选中多个轨道。
173
174调用OH_AVDemuxer_ReadSample时只会读取被选中的轨道中数据,同一轨道被选择多次时,接口会返回AV_ERR_OK,并且只会生效一次。
175
176\@syscap SystemCapability.Multimedia.Media.Spliter
177
178**参数:**
179
180| 名称 | 描述 |
181| -------- | -------- |
182| demuxer | 指向OH_AVDemuxer实例的指针。 |
183| trackIndex | 需选择的轨道的索引。 |
184
185**返回:**
186
187执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
188
189**起始版本:**
190
19110
192
193
194### OH_AVDemuxer_UnselectTrackByID()
195
196
197```
198OH_AVErrCode OH_AVDemuxer_UnselectTrackByID (OH_AVDemuxer *demuxer, uint32_t trackIndex)
199```
200
201**描述:**
202
203取消选择指定轨道,未选中的轨道的数据不会被解封装器读取。
204
205通过多次调用接口并传入不同轨道的索引来取消对多个轨道的选择。
206
207同一轨道被多次取消选择时,接口会返回AV_ERR_OK,并且只会生效一次。
208
209\@syscap SystemCapability.Multimedia.Media.Spliter
210
211**参数:**
212
213| 名称 | 描述 |
214| -------- | -------- |
215| demuxer | 指向OH_AVDemuxer实例的指针。 |
216| trackIndex | 需取消选择的轨道的索引。 |
217
218**返回:**
219
220执行成功返回AV_ERR_OK, 否则返回具体错误码,请参阅[OH_AVErrCode](_core.md#oh_averrcode)。
221
222**起始版本:**
223
22410
225