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