1e41f4b71Sopenharmony_ci# AVDemuxer
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## Overview
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciThe AVDemuxer module provides the APIs for extracting samples from media streams.
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci**Since**: 10
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci## Summary
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci### File
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci| Name| Description| 
19e41f4b71Sopenharmony_ci| -------- | -------- |
20e41f4b71Sopenharmony_ci| [native_avdemuxer.h](native__avdemuxer_8h.md) | Declares the APIs for parsing audio and video media data.|
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci### Types
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci| Name| Description| 
25e41f4b71Sopenharmony_ci| -------- | -------- |
26e41f4b71Sopenharmony_ci| typedef void(* [DRM_MediaKeySystemInfoCallback](#drm_mediakeysysteminfocallback)) (DRM_MediaKeySystemInfo *mediaKeySystemInfo) | Defines a pointer to the callback function for [DRM_MediaKeySystemInfo](../apis-drm-kit/_d_r_m___media_key_system_info.md). No demuxer instance is returned. This callback function applies to the scenario where a single demuxer instance is used. You need to call [OH_AVDemuxer_SetMediaKeySystemInfoCallback](#oh_avdemuxer_setmediakeysysteminfocallback) to set the callback function as a callback. |
27e41f4b71Sopenharmony_ci| typedef void(* [Demuxer_MediaKeySystemInfoCallback](#demuxer_mediakeysysteminfocallback)) (OH_AVDemuxer *demuxer, DRM_MediaKeySystemInfo *mediaKeySystemInfo)| Defines a pointer to the callback function for [DRM_MediaKeySystemInfo](../apis-drm-kit/_d_r_m___media_key_system_info.md). A demuxer instance is returned. This callback function applies to the scenario where multiple demuxer instances are used. You need to call [OH_AVDemuxer_SetDemuxerMediaKeySystemInfoCallback](#oh_avdemuxer_setdemuxermediakeysysteminfocallback) to set the callback function as a callback. This callback function is recommended. |
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci### Functions
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci| Name| Description| 
33e41f4b71Sopenharmony_ci| -------- | -------- |
34e41f4b71Sopenharmony_ci| OH_AVDemuxer \* [OH_AVDemuxer_CreateWithSource](#oh_avdemuxer_createwithsource) ([OH_AVSource](_a_v_source.md#oh_avsource) \*source) | Creates an **OH_AVDemuxer** instance based on a source instance.|
35e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_Destroy](#oh_avdemuxer_destroy) (OH_AVDemuxer \*demuxer) | Destroys an **OH_AVDemuxer** instance and clears internal resources.| 
36e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_SelectTrackByID](#oh_avdemuxer_selecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | Selects a track from which the demuxer reads sample data.|
37e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_UnselectTrackByID](#oh_avdemuxer_unselecttrackbyid) (OH_AVDemuxer \*demuxer, uint32_t trackIndex) | Deselects a track. The demuxer no longer reads sample data from a track after it is deselected.|
38e41f4b71Sopenharmony_ci| [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) | Reads the sample and related information from the specified track. (This API is deprecated in API version 11.) |
39e41f4b71Sopenharmony_ci| [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) | Reads the sample of the specified track.|
40e41f4b71Sopenharmony_ci| [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) | Seeks to the specified time for all the selected tracks based on a seek mode. | 
41e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_SetMediaKeySystemInfoCallback](#oh_avdemuxer_setmediakeysysteminfocallback) (OH_AVDemuxer \*demuxer, DRM_MediaKeySystemInfoCallback callback) | Sets an asynchronous callback for obtaining the media key system information. | 
42e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_SetDemuxerMediaKeySystemInfoCallback](#oh_avdemuxer_setdemuxermediakeysysteminfocallback) (OH_AVDemuxer \*demuxer, Demuxer_MediaKeySystemInfoCallback callback) | Sets an asynchronous callback for obtaining the media key system information. | 
43e41f4b71Sopenharmony_ci| [OH_AVErrCode](_core.md#oh_averrcode) [OH_AVDemuxer_GetMediaKeySystemInfo](#oh_avdemuxer_getmediakeysysteminfo) (OH_AVDemuxer \*demuxer, DRM_MediaKeySystemInfo \*mediaKeySystemInfo) | Obtains the media key system information. | 
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci
46e41f4b71Sopenharmony_ci## Type Description
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci### Demuxer_MediaKeySystemInfoCallback
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci```
51e41f4b71Sopenharmony_citypedef void(* Demuxer_MediaKeySystemInfoCallback) (OH_AVDemuxer *demuxer, DRM_MediaKeySystemInfo *mediaKeySystemInfo)
52e41f4b71Sopenharmony_ci```
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ci**Description**
55e41f4b71Sopenharmony_ci
56e41f4b71Sopenharmony_ciDefines a pointer to the callback function for the media key system information.
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci**Since**: 12
61e41f4b71Sopenharmony_ci
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci### DRM_MediaKeySystemInfoCallback
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci```
66e41f4b71Sopenharmony_citypedef void(* DRM_MediaKeySystemInfoCallback) (DRM_MediaKeySystemInfo *mediaKeySystemInfo)
67e41f4b71Sopenharmony_ci```
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci**Description**
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ciDefines a pointer to the callback function for the media key system information.
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci**Since**: 11
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci
78e41f4b71Sopenharmony_ci## Function Description
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ci### OH_AVDemuxer_CreateWithSource()
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ci```
84e41f4b71Sopenharmony_ciOH_AVDemuxer* OH_AVDemuxer_CreateWithSource (OH_AVSource *source)
85e41f4b71Sopenharmony_ci```
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci**Description**
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ciCreates an **OH_AVDemuxer** instance based on a source instance.
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ciFor details about how to create, destroy, and use a source instance, see [OH_AVSource](_a_v_source.md).
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ci**Since**: 10
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci**Parameters**
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci| Name| Description| 
100e41f4b71Sopenharmony_ci| -------- | -------- |
101e41f4b71Sopenharmony_ci| source | Pointer to an **OH_AVSource** instance. | 
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci**Returns**
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ciReturns the pointer to an **OH_AVDemuxer** instance if the operation is successful; returns NULL otherwise.
106e41f4b71Sopenharmony_ci 
107e41f4b71Sopenharmony_ciThe possible causes of an operation failure are as follows:
108e41f4b71Sopenharmony_ci1. The value of **source** is invalid, that is, a null pointer.
109e41f4b71Sopenharmony_ci2. The value of **source** does not point to an **OH_AVSource** instance.
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci### OH_AVDemuxer_Destroy()
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci```
115e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVDemuxer_Destroy (OH_AVDemuxer *demuxer)
116e41f4b71Sopenharmony_ci```
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci**Description**
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ciDestroys an **OH_AVDemuxer** instance and clears internal resources. An instance can be destroyed only once.
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ciThe destroyed instance cannot be used until it is re-created. You are advised to set the pointer to **NULL** after the instance is destroyed.
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci**Since**: 10
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci**Parameters**
129e41f4b71Sopenharmony_ci
130e41f4b71Sopenharmony_ci| Name| Description| 
131e41f4b71Sopenharmony_ci| -------- | -------- |
132e41f4b71Sopenharmony_ci| demuxer | Pointer to an **OH_AVDemuxer** instance. | 
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_ci**Returns**
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ciReturns either of the following result codes:
137e41f4b71Sopenharmony_ci
138e41f4b71Sopenharmony_ci**AV_ERR_OK**: The operation is successful.
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL**: The value of **demuxer** is a null pointer or does not point to a demuxer instance.
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci
143e41f4b71Sopenharmony_ci### OH_AVDemuxer_GetMediaKeySystemInfo()
144e41f4b71Sopenharmony_ci
145e41f4b71Sopenharmony_ci```
146e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVDemuxer_GetMediaKeySystemInfo (OH_AVDemuxer *demuxer, DRM_MediaKeySystemInfo *mediaKeySystemInfo)
147e41f4b71Sopenharmony_ci```
148e41f4b71Sopenharmony_ci**Description**
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ciObtains the media key system information.
151e41f4b71Sopenharmony_ci
152e41f4b71Sopenharmony_ciThe media key system information can be obtained only after [Demuxer_MediaKeySystemInfoCallback](#demuxer_mediakeysysteminfocallback) or [DRM_MediaKeySystemInfoCallback](#drm_mediakeysysteminfocallback) is successfully invoked.
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ci**Since**: 11
157e41f4b71Sopenharmony_ci
158e41f4b71Sopenharmony_ci**Parameters**
159e41f4b71Sopenharmony_ci
160e41f4b71Sopenharmony_ci| Name| Description| 
161e41f4b71Sopenharmony_ci| -------- | -------- |
162e41f4b71Sopenharmony_ci| demuxer | Pointer to an **OH_AVDemuxer** instance. | 
163e41f4b71Sopenharmony_ci| mediaKeySystemInfo | Pointer to the media key system information. For details, see [DRM_MediaKeySystemInfo](../apis-drm-kit/_d_r_m___media_key_system_info.md). | 
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ci**Returns**
166e41f4b71Sopenharmony_ci
167e41f4b71Sopenharmony_ciReturns either of the following result codes:
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_ci**AV_ERR_OK**: The operation is successful.
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL**:
172e41f4b71Sopenharmony_ci
173e41f4b71Sopenharmony_ci    1. The value of **demuxer** is a null pointer or does not point to a demuxer instance.
174e41f4b71Sopenharmony_ci    2. The value of **mediaKeySystemInfo** is a null pointer.
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ci
177e41f4b71Sopenharmony_ci### OH_AVDemuxer_ReadSample()
178e41f4b71Sopenharmony_ci
179e41f4b71Sopenharmony_ci```
180e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVDemuxer_ReadSample (OH_AVDemuxer *demuxer, uint32_t trackIndex, OH_AVMemory *sample, OH_AVCodecBufferAttr *info)
181e41f4b71Sopenharmony_ci```
182e41f4b71Sopenharmony_ci
183e41f4b71Sopenharmony_ci**Description**
184e41f4b71Sopenharmony_ci
185e41f4b71Sopenharmony_ciReads the sample and related information from the specified track.
186e41f4b71Sopenharmony_ci
187e41f4b71Sopenharmony_ciYou must select a track before reading the sample. After this API is called, the demuxer automatically proceeds to the next frame.
188e41f4b71Sopenharmony_ci
189e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
190e41f4b71Sopenharmony_ci
191e41f4b71Sopenharmony_ci**Since**: 10
192e41f4b71Sopenharmony_ci
193e41f4b71Sopenharmony_ci**Deprecated from**: 11
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_ci**Substitute API**: [OH_AVDemuxer_ReadSampleBuffer](#oh_avdemuxer_readsamplebuffer)
196e41f4b71Sopenharmony_ci
197e41f4b71Sopenharmony_ci**Parameters**
198e41f4b71Sopenharmony_ci
199e41f4b71Sopenharmony_ci| Name| Description| 
200e41f4b71Sopenharmony_ci| -------- | -------- |
201e41f4b71Sopenharmony_ci| demuxer | Pointer to an **OH_AVDemuxer** instance. | 
202e41f4b71Sopenharmony_ci| trackIndex | Index of the track from which the compressed frame is to be read. | 
203e41f4b71Sopenharmony_ci| sample | Pointer to the **OH_AVMemory** instance for storing the compressed frame data. | 
204e41f4b71Sopenharmony_ci| info | Pointer to the **OH_AVCodecBufferAttr** instance for storing the compressed frame information. | 
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci**Returns**
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ciReturns any of the following result codes:
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci**AV_ERR_OK**: The operation is successful.
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL**:
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci    1. The value of **demuxer** is a null pointer or does not point to a demuxer instance.
215e41f4b71Sopenharmony_ci    2. The track index is out of range.
216e41f4b71Sopenharmony_ci    3. Track reading is not supported.
217e41f4b71Sopenharmony_ci    4. The value of **sample** is null.
218e41f4b71Sopenharmony_ci    5. The value of **info** is null.
219e41f4b71Sopenharmony_ci
220e41f4b71Sopenharmony_ci**AV_ERR_OPERATE_NOT_PERMIT**:
221e41f4b71Sopenharmony_ci
222e41f4b71Sopenharmony_ci    1. The track with the specified index is not selected.
223e41f4b71Sopenharmony_ci    2. The demuxer is not correctly initialized.
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci**AV_ERR_NO_MEMORY**: The sample capacity is insufficient to store all frame data.
226e41f4b71Sopenharmony_ci
227e41f4b71Sopenharmony_ci**AV_ERR_UNKNOWN**: Failed to read or parse the frame from the file.
228e41f4b71Sopenharmony_ci
229e41f4b71Sopenharmony_ci
230e41f4b71Sopenharmony_ci### OH_AVDemuxer_ReadSampleBuffer()
231e41f4b71Sopenharmony_ci
232e41f4b71Sopenharmony_ci```
233e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVDemuxer_ReadSampleBuffer (OH_AVDemuxer *demuxer, uint32_t trackIndex, OH_AVBuffer *sample)
234e41f4b71Sopenharmony_ci```
235e41f4b71Sopenharmony_ci
236e41f4b71Sopenharmony_ci**Description**
237e41f4b71Sopenharmony_ci
238e41f4b71Sopenharmony_ciReads the sample and related information from the specified track.
239e41f4b71Sopenharmony_ci
240e41f4b71Sopenharmony_ciYou must select a track before reading the sample. After this API is called, the demuxer automatically proceeds to the next frame.
241e41f4b71Sopenharmony_ci
242e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
243e41f4b71Sopenharmony_ci
244e41f4b71Sopenharmony_ci**Since**: 11
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ci**Parameters**
247e41f4b71Sopenharmony_ci
248e41f4b71Sopenharmony_ci| Name| Description| 
249e41f4b71Sopenharmony_ci| -------- | -------- |
250e41f4b71Sopenharmony_ci| demuxer | Pointer to an **OH_AVDemuxer** instance. | 
251e41f4b71Sopenharmony_ci| trackIndex | Index of the track from which the compressed frame is to be read. | 
252e41f4b71Sopenharmony_ci| sample | Pointer to the **OH_AVBuffer** instance for storing the compressed frame data and related information. | 
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_ci**Returns**
255e41f4b71Sopenharmony_ci
256e41f4b71Sopenharmony_ciReturns any of the following result codes:
257e41f4b71Sopenharmony_ci
258e41f4b71Sopenharmony_ci**AV_ERR_OK**: The operation is successful.
259e41f4b71Sopenharmony_ci
260e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL**:
261e41f4b71Sopenharmony_ci
262e41f4b71Sopenharmony_ci    1. The value of **demuxer** is a null pointer or does not point to a demuxer instance.
263e41f4b71Sopenharmony_ci    2. The value of **sample** is a null pointer.
264e41f4b71Sopenharmony_ci    3. The track index is out of range.
265e41f4b71Sopenharmony_ci    4. The value of **sample** is null.
266e41f4b71Sopenharmony_ci
267e41f4b71Sopenharmony_ci**AV_ERR_OPERATE_NOT_PERMIT**:
268e41f4b71Sopenharmony_ci
269e41f4b71Sopenharmony_ci    1. The track with the specified index is not selected.
270e41f4b71Sopenharmony_ci    2. The demuxer is not correctly initialized.
271e41f4b71Sopenharmony_ci
272e41f4b71Sopenharmony_ci**AV_ERR_NO_MEMORY**: The sample capacity is insufficient to store all frame data.
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci**AV_ERR_UNKNOWN**: Failed to read or parse the frame from the file.
275e41f4b71Sopenharmony_ci
276e41f4b71Sopenharmony_ci
277e41f4b71Sopenharmony_ci### OH_AVDemuxer_SeekToTime()
278e41f4b71Sopenharmony_ci
279e41f4b71Sopenharmony_ci```
280e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVDemuxer_SeekToTime (OH_AVDemuxer *demuxer, int64_t millisecond, OH_AVSeekMode mode)
281e41f4b71Sopenharmony_ci```
282e41f4b71Sopenharmony_ci
283e41f4b71Sopenharmony_ci**Description**
284e41f4b71Sopenharmony_ci
285e41f4b71Sopenharmony_ciSeeks to the specified time for all the selected tracks based on a seek mode.
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci**Since**: 10
290e41f4b71Sopenharmony_ci
291e41f4b71Sopenharmony_ci**Parameters**
292e41f4b71Sopenharmony_ci
293e41f4b71Sopenharmony_ci| Name| Description| 
294e41f4b71Sopenharmony_ci| -------- | -------- |
295e41f4b71Sopenharmony_ci| demuxer | Pointer to an **OH_AVDemuxer** instance. | 
296e41f4b71Sopenharmony_ci| millisecond | Time to seek to, in milliseconds. The timestamp is relative to the start position of the file. | 
297e41f4b71Sopenharmony_ci| mode | Seek mode. For details, see [OH_AVSeekMode](_codec_base.md#oh_avseekmode). | 
298e41f4b71Sopenharmony_ci
299e41f4b71Sopenharmony_ci**Returns**
300e41f4b71Sopenharmony_ci
301e41f4b71Sopenharmony_ciReturns any of the following result codes:
302e41f4b71Sopenharmony_ci
303e41f4b71Sopenharmony_ci**AV_ERR_OK**: The operation is successful.
304e41f4b71Sopenharmony_ci
305e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL**:
306e41f4b71Sopenharmony_ci
307e41f4b71Sopenharmony_ci    1. The value of **demuxer** is a null pointer or does not point to a demuxer instance.
308e41f4b71Sopenharmony_ci    2. The value of **millisecond** is out of range.
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci**AV_ERR_OPERATE_NOT_PERMIT**:
311e41f4b71Sopenharmony_ci
312e41f4b71Sopenharmony_ci    1. The track with the specified index is not selected.
313e41f4b71Sopenharmony_ci    2. The demuxer is not correctly initialized.
314e41f4b71Sopenharmony_ci    3. The seek operation cannot be performed on the resource.
315e41f4b71Sopenharmony_ci
316e41f4b71Sopenharmony_ci**AV_ERR_UNKNOWN**:
317e41f4b71Sopenharmony_ci
318e41f4b71Sopenharmony_ci    1. The seek operation fails.
319e41f4b71Sopenharmony_ci    2. **OH_AVSeekMode** is set to **SEEK_MODE_NEXT_SYNC** and there is no I-frame following the specified position.
320e41f4b71Sopenharmony_ci
321e41f4b71Sopenharmony_ci
322e41f4b71Sopenharmony_ci### OH_AVDemuxer_SelectTrackByID()
323e41f4b71Sopenharmony_ci
324e41f4b71Sopenharmony_ci```
325e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVDemuxer_SelectTrackByID (OH_AVDemuxer *demuxer, uint32_t trackIndex)
326e41f4b71Sopenharmony_ci```
327e41f4b71Sopenharmony_ci
328e41f4b71Sopenharmony_ci**Description**
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ciSelects a track from which the demuxer reads sample data.
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ciYou can select multiple tracks by calling this API multiple times, with a different track index passed in each time.
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ciWhen **OH_AVDemuxer_ReadSample** is called, only the data in the selected track is read. If the same track is selected multiple times, **AV_ERR_OK** is returned and the API call takes effect only once.
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
337e41f4b71Sopenharmony_ci
338e41f4b71Sopenharmony_ci**Since**: 10
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci**Parameters**
341e41f4b71Sopenharmony_ci
342e41f4b71Sopenharmony_ci| Name| Description| 
343e41f4b71Sopenharmony_ci| -------- | -------- |
344e41f4b71Sopenharmony_ci| demuxer | Pointer to an **OH_AVDemuxer** instance. | 
345e41f4b71Sopenharmony_ci| trackIndex | Index of the track. | 
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci**Returns**
348e41f4b71Sopenharmony_ci
349e41f4b71Sopenharmony_ciReturns any of the following result codes:
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci**AV_ERR_OK**: The operation is successful.
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ci**AV_ERR_OPERATE_NOT_PERMIT**: The demuxer is not correctly initialized.
354e41f4b71Sopenharmony_ci
355e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL**:
356e41f4b71Sopenharmony_ci    
357e41f4b71Sopenharmony_ci    1. The value of **demuxer** is a null pointer or does not point to a demuxer instance.
358e41f4b71Sopenharmony_ci    2. The track index is out of range.
359e41f4b71Sopenharmony_ci    3. Track reading is not supported.
360e41f4b71Sopenharmony_ci
361e41f4b71Sopenharmony_ci
362e41f4b71Sopenharmony_ci### OH_AVDemuxer_SetDemuxerMediaKeySystemInfoCallback()
363e41f4b71Sopenharmony_ci
364e41f4b71Sopenharmony_ci```
365e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVDemuxer_SetDemuxerMediaKeySystemInfoCallback (OH_AVDemuxer *demuxer, Demuxer_MediaKeySystemInfoCallback callback)
366e41f4b71Sopenharmony_ci```
367e41f4b71Sopenharmony_ci
368e41f4b71Sopenharmony_ci**Description**
369e41f4b71Sopenharmony_ci
370e41f4b71Sopenharmony_ciSets a callback for obtaining the media key system information.
371e41f4b71Sopenharmony_ci
372e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
373e41f4b71Sopenharmony_ci
374e41f4b71Sopenharmony_ci**Since**: 12
375e41f4b71Sopenharmony_ci
376e41f4b71Sopenharmony_ci**Parameters**
377e41f4b71Sopenharmony_ci
378e41f4b71Sopenharmony_ci| Name| Description| 
379e41f4b71Sopenharmony_ci| -------- | -------- |
380e41f4b71Sopenharmony_ci| demuxer | Pointer to an **OH_AVDemuxer** instance. | 
381e41f4b71Sopenharmony_ci| callback | Callback function. For details, see [Demuxer_MediaKeySystemInfoCallback](#demuxer_mediakeysysteminfocallback). | 
382e41f4b71Sopenharmony_ci
383e41f4b71Sopenharmony_ci**Returns**
384e41f4b71Sopenharmony_ci
385e41f4b71Sopenharmony_ciReturns any of the following result codes:
386e41f4b71Sopenharmony_ci
387e41f4b71Sopenharmony_ci**AV_ERR_OK**: The operation is successful.
388e41f4b71Sopenharmony_ci
389e41f4b71Sopenharmony_ci**AV_ERR_OPERATE_NOT_PERMIT**: The demuxer is not correctly initialized.
390e41f4b71Sopenharmony_ci
391e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL**: The value of **demuxer** is a null pointer or does not point to a demuxer instance.
392e41f4b71Sopenharmony_ci
393e41f4b71Sopenharmony_ci
394e41f4b71Sopenharmony_ci### OH_AVDemuxer_SetMediaKeySystemInfoCallback()
395e41f4b71Sopenharmony_ci
396e41f4b71Sopenharmony_ci```
397e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVDemuxer_SetMediaKeySystemInfoCallback (OH_AVDemuxer *demuxer, DRM_MediaKeySystemInfoCallback callback)
398e41f4b71Sopenharmony_ci```
399e41f4b71Sopenharmony_ci**Description**
400e41f4b71Sopenharmony_ci
401e41f4b71Sopenharmony_ciSets a callback for obtaining the media key system information.
402e41f4b71Sopenharmony_ci
403e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
404e41f4b71Sopenharmony_ci
405e41f4b71Sopenharmony_ci**Since**: 11
406e41f4b71Sopenharmony_ci
407e41f4b71Sopenharmony_ci**Parameters**
408e41f4b71Sopenharmony_ci
409e41f4b71Sopenharmony_ci| Name| Description| 
410e41f4b71Sopenharmony_ci| -------- | -------- |
411e41f4b71Sopenharmony_ci| demuxer | Pointer to an **OH_AVDemuxer** instance. | 
412e41f4b71Sopenharmony_ci| callback | Callback function. For details, see [DRM_MediaKeySystemInfoCallback](#drm_mediakeysysteminfocallback). | 
413e41f4b71Sopenharmony_ci
414e41f4b71Sopenharmony_ci**Returns**
415e41f4b71Sopenharmony_ci
416e41f4b71Sopenharmony_ciReturns any of the following result codes:
417e41f4b71Sopenharmony_ci
418e41f4b71Sopenharmony_ci**AV_ERR_OK**: The operation is successful.
419e41f4b71Sopenharmony_ci
420e41f4b71Sopenharmony_ci**AV_ERR_OPERATE_NOT_PERMIT**: The demuxer is not correctly initialized.
421e41f4b71Sopenharmony_ci
422e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL**: The value of **demuxer** is a null pointer or does not point to a demuxer instance.
423e41f4b71Sopenharmony_ci
424e41f4b71Sopenharmony_ci
425e41f4b71Sopenharmony_ci### OH_AVDemuxer_UnselectTrackByID()
426e41f4b71Sopenharmony_ci
427e41f4b71Sopenharmony_ci```
428e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVDemuxer_UnselectTrackByID (OH_AVDemuxer *demuxer, uint32_t trackIndex)
429e41f4b71Sopenharmony_ci```
430e41f4b71Sopenharmony_ci
431e41f4b71Sopenharmony_ci**Description**
432e41f4b71Sopenharmony_ci
433e41f4b71Sopenharmony_ciDeselects a track. The demuxer no longer reads sample data from a track after it is deselected.
434e41f4b71Sopenharmony_ci
435e41f4b71Sopenharmony_ciYou can deselect multiple tracks by calling this API multiple times, with a different track index passed in each time.
436e41f4b71Sopenharmony_ci
437e41f4b71Sopenharmony_ciIf the same track is deselected multiple times, **AV_ERR_OK** is returned and the API call takes effect only once.
438e41f4b71Sopenharmony_ci
439e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
440e41f4b71Sopenharmony_ci
441e41f4b71Sopenharmony_ci**Since**: 10
442e41f4b71Sopenharmony_ci
443e41f4b71Sopenharmony_ci**Parameters**
444e41f4b71Sopenharmony_ci
445e41f4b71Sopenharmony_ci| Name| Description| 
446e41f4b71Sopenharmony_ci| -------- | -------- |
447e41f4b71Sopenharmony_ci| demuxer | Pointer to an **OH_AVDemuxer** instance. | 
448e41f4b71Sopenharmony_ci| trackIndex | Index of the track. | 
449e41f4b71Sopenharmony_ci
450e41f4b71Sopenharmony_ci**Returns**
451e41f4b71Sopenharmony_ci
452e41f4b71Sopenharmony_ciReturns any of the following result codes:
453e41f4b71Sopenharmony_ci
454e41f4b71Sopenharmony_ci**AV_ERR_OK**: The operation is successful.
455e41f4b71Sopenharmony_ci
456e41f4b71Sopenharmony_ci**AV_ERR_OPERATE_NOT_PERMIT**: The demuxer is not correctly initialized.
457e41f4b71Sopenharmony_ci
458e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL**: The value of **demuxer** is a null pointer or does not point to a demuxer instance.
459