• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# AVPlayer
2
3
4## 概述
5
6为媒体源提供播放能力的API。
7
8开发者可根据实际的开发需求,参考对应的开发指南及样例:
9
10- [使用AVPlayer播放音频](../../media/media/using-ndk-avplayer-for-playback.md)
11- [使用AVPlayer播放视频](../../media/media/using-ndk-avplayer-for-video-playback.md)
12
13**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
14
15**起始版本:** 11
16
17
18## 汇总
19
20
21### 文件
22
23| 名称 | 描述 |
24| -------- | -------- |
25| [avplayer.h](avplayer_8h.md) | 定义avplayer接口。使用AVPlayer提供的Native API播放媒体源。  |
26| [avplayer_base.h](avplayer__base_8h.md) | 定义AVPlayer的结构体和枚举。  |
27
28
29### 结构体
30
31| 名称 | 描述 |
32| -------- | -------- |
33| struct  [AVPlayerCallback](_a_v_player_callback.md) | (已废弃)包含了OH_AVPlayerOnInfo和OH_AVPlayerOnInfo回调函数指针的集合。  |
34
35
36### 类型定义
37
38| 名称 | 描述 |
39| -------- | -------- |
40| typedef struct [MediaKeySession](#mediakeysession) [MediaKeySession](#mediakeysession) | MediaKeySession类型。  |
41| typedef struct [DRM_MediaKeySystemInfo](#drm_mediakeysysteminfo) [DRM_MediaKeySystemInfo](#drm_mediakeysysteminfo) | DRM_MediaKeySystemInfo类型。  |
42| typedef void(\* [Player_MediaKeySystemInfoCallback](#player_mediakeysysteminfocallback)) (OH_AVPlayer \*player, [DRM_MediaKeySystemInfo](#drm_mediakeysysteminfo) \*mediaKeySystemInfo) | 播放器DRM信息更新时被调用。  |
43| typedef enum [AVPlayerState](#avplayerstate-1) [AVPlayerState](#avplayerstate) | 播放状态。  |
44| typedef enum [AVPlayerSeekMode](#avplayerseekmode-1) [AVPlayerSeekMode](#avplayerseekmode) | 跳转模式。  |
45| typedef enum [AVPlaybackSpeed](#avplaybackspeed-1) [AVPlaybackSpeed](#avplaybackspeed) | 播放速度。  |
46| typedef enum [AVPlayerOnInfoType](#avplayeroninfotype-1) [AVPlayerOnInfoType](#avplayeroninfotype) | OnInfo类型。  |
47| typedef enum [AVPlayerBufferingType](#avplayerbufferingtype-1) [AVPlayerBufferingType](#avplayerbufferingtype) | 播放缓冲消息类型定义。  |
48| typedef void(\*[OH_AVPlayerOnInfo](#oh_avplayeroninfo)) (OH_AVPlayer \*player, [AVPlayerOnInfoType](#avplayeroninfotype) type, int32_t extra) | (已废弃)收到播放器消息时调用。  |
49| typedef void(\*[OH_AVPlayerOnInfoCallback](#oh_avplayeroninfocallback)) (OH_AVPlayer \*player, [AVPlayerOnInfoType](#avplayeroninfotype) type, OH_AVFormat \*infoBody, void \*userData) | 收到播放器消息时被调用。如果应用成功设置该回调,则不会回调OH_AVPlayerOnInfo函数。  |
50| typedef void(\* [OH_AVPlayerOnError](#oh_avplayeronerror)) (OH_AVPlayer \*player, int32_t errorCode, const char \*errorMsg) | (已废弃)在API 9以上的版本发生错误时调用。  |
51| typedef void(\* [OH_AVPlayerOnErrorCallback](#oh_avplayeronerrorcallback)) (OH_AVPlayer \*player, int32_t errorCode, const char \*errorMsg, void \*userData) | 发生错误时被调用。如果应用成功设置该回调,则不会回调OH_AVPlayerOnError函数。  |
52| typedef struct [AVPlayerCallback](_a_v_player_callback.md) [AVPlayerCallback](#avplayercallback) | (已废弃)包含了OH_AVPlayerOnInfo和OH_AVPlayerOnInfo回调函数指针的集合。  |
53
54
55### 枚举
56
57| 名称 | 描述 |
58| -------- | -------- |
59| [AVPlayerState](#avplayerstate-1) {<br/>AV_IDLE = 0, <br/>AV_INITIALIZED = 1, <br/>AV_PREPARED = 2, <br/>AV_PLAYING = 3,<br/>AV_PAUSED = 4, <br/>AV_STOPPED = 5, <br/>AV_COMPLETED = 6, <br/>AV_RELEASED = 7,<br/>AV_ERROR = 8<br/>} | 播放状态。 |
60| [AVPlayerSeekMode](#avplayerseekmode) { <br/>AV_SEEK_NEXT_SYNC = 0, <br/>AV_SEEK_PREVIOUS_SYNC, <br/>AV_SEEK_CLOSEST = 2<br/>} | 跳转模式。 |
61| [AVPlaybackSpeed](#avplaybackspeed-1) {<br/>AV_SPEED_FORWARD_0_75_X, <br/>AV_SPEED_FORWARD_1_00_X, <br/>AV_SPEED_FORWARD_1_25_X, <br/> AV_SPEED_FORWARD_1_75_X,<br/>AV_SPEED_FORWARD_2_00_X, <br/>AV_SPEED_FORWARD_0_50_X, <br/>AV_SPEED_FORWARD_1_50_X<br/>, <br/>AV_SPEED_FORWARD_3_00_X, <br/>AV_SPEED_FORWARD_0_25_X, <br/>AV_SPEED_FORWARD_0_125_X} | 播放速度。  |
62| [AVPlayerOnInfoType](#avplayeroninfotype-1) {<br/>AV_INFO_TYPE_SEEKDONE = 0, <br/>AV_INFO_TYPE_SPEEDDONE = 1, <br/>AV_INFO_TYPE_BITRATEDONE = 2, <br/>AV_INFO_TYPE_EOS = 3,<br/>AV_INFO_TYPE_STATE_CHANGE = 4, <br/>AV_INFO_TYPE_POSITION_UPDATE = 5, <br/>AV_INFO_TYPE_MESSAGE = 6, <br/>AV_INFO_TYPE_VOLUME_CHANGE = 7,<br/>AV_INFO_TYPE_RESOLUTION_CHANGE = 8, <br/>AV_INFO_TYPE_BUFFERING_UPDATE = 9, <br/>AV_INFO_TYPE_BITRATE_COLLECT = 10, <br/>AV_INFO_TYPE_INTERRUPT_EVENT = 11,<br/>AV_INFO_TYPE_DURATION_UPDATE = 12, <br/>AV_INFO_TYPE_IS_LIVE_STREAM = 13, <br/>AV_INFO_TYPE_TRACKCHANGE = 14, <br/>AV_INFO_TYPE_TRACK_INFO_UPDATE = 15,<br/>AV_INFO_TYPE_SUBTITLE_UPDATE = 16, AV_INFO_TYPE_AUDIO_OUTPUT_DEVICE_CHANGE = 17<br/>} | OnInfo类型。 |
63| [AVPlayerBufferingType](#avplayerbufferingtype-1) { <br/>AVPLAYER_BUFFERING_START = 1, <br/>AVPLAYER_BUFFERING_END, <br/>AVPLAYER_BUFFERING_PERCENT, <br/>AVPLAYER_BUFFERING_CACHED_DURATION <br/>} | 播放缓冲消息类型定义。  |
64
65
66### 函数
67
68| 名称 | 描述 |
69| -------- | -------- |
70| OH_AVPlayer \*[OH_AVPlayer_Create](#oh_avplayer_create) (void) | 创建播放器。 |
71| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode)  [OH_AVPlayer_SetURLSource](#oh_avplayer_seturlsource) (OH_AVPlayer \*player, const char \*url) | 设置播放器的播放源。对应的源可以是http url。 |
72| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode)  [OH_AVPlayer_SetFDSource](#oh_avplayer_setfdsource) (OH_AVPlayer \*player, int32_t fd, int64_t offset, int64_t size) | 设置播放器的播放媒体文件描述符来源。 |
73| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode)  [OH_AVPlayer_Prepare](#oh_avplayer_prepare) (OH_AVPlayer \*player) | 准备播放环境,异步缓存媒体数据。 |
74| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode)  [OH_AVPlayer_Play](#oh_avplayer_play) (OH_AVPlayer \*player) | 开始播放。 |
75| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_Pause](#oh_avplayer_pause) (OH_AVPlayer \*player) | 暂停播放。 |
76| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_Stop](#oh_avplayer_stop) (OH_AVPlayer \*player) | 停止播放。 |
77| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_Reset](#oh_avplayer_reset) (OH_AVPlayer \*player) | 将播放器恢复到初始状态。 |
78| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_Release](#oh_avplayer_release) (OH_AVPlayer \*player) | 异步释放播放器资源。 |
79| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_ReleaseSync](#oh_avplayer_releasesync) (OH_AVPlayer \*player) | 同步释放播放器资源。 |
80| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetVolume](#oh_avplayer_setvolume) (OH_AVPlayer \*player, float leftVolume, float rightVolume) | 设置播放器的音量。 |
81| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_Seek](#oh_avplayer_seek) (OH_AVPlayer \*player, int32_t mSeconds, [AVPlayerSeekMode](#avplayerseekmode) mode) | 改变播放位置。 |
82| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_GetCurrentTime](#oh_avplayer_getcurrenttime) (OH_AVPlayer \*player, int32_t \*currentTime) | 获取播放位置,精确到毫秒。 |
83| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_GetVideoWidth](#oh_avplayer_getvideowidth) (OH_AVPlayer \*player, int32_t \*videoWidth) | 获取视频宽度。 |
84| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_GetVideoHeight](#oh_avplayer_getvideoheight) (OH_AVPlayer \*player, int32_t \*videoHeight) | 获取视频高度。 |
85| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetPlaybackSpeed](#oh_avplayer_setplaybackspeed) (OH_AVPlayer \*player, [AVPlaybackSpeed](#avplaybackspeed) speed) | 设置播放器播放速率。 |
86| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_GetPlaybackSpeed](#oh_avplayer_getplaybackspeed) (OH_AVPlayer \*player, [AVPlaybackSpeed](#avplaybackspeed) \*speed) | 获取当前播放器播放速率。 |
87| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetAudioRendererInfo](#oh_avplayer_setaudiorendererinfo) (OH_AVPlayer \*player, OH_AudioStream_Usage streamUsage) | 设置player音频流类型。  |
88| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetVolumeMode](#oh_avplayer_setvolumemode) (OH_AVPlayer \*player, [OH_AudioStream_VolumeMode](../apis-audio-kit/_o_h_audio.md#oh_audiostream_volumemode) volumeMode) | 设置player音频流音量模式。 |
89| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetAudioInterruptMode](#oh_avplayer_setaudiointerruptmode) (OH_AVPlayer \*player, OH_AudioInterrupt_Mode interruptMode) | 设置player音频流的打断模式。  |
90| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetAudioEffectMode](#oh_avplayer_setaudioeffectmode) (OH_AVPlayer \*player, OH_AudioStream_AudioEffectMode effectMode) | 设置player音频流的音效模式。  |
91| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SelectBitRate](#oh_avplayer_selectbitrate) (OH_AVPlayer \*player, uint32_t bitRate) | 设置hls播放器使用的码率。 |
92| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetVideoSurface](#oh_avplayer_setvideosurface) (OH_AVPlayer \*player, OHNativeWindow \*window) | 设置播放画面窗口。 |
93| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_GetDuration](#oh_avplayer_getduration) (OH_AVPlayer \*player, int32_t \*duration) | 获取媒体文件的总时长,精确到毫秒。 |
94| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_GetState](#oh_avplayer_getstate) (OH_AVPlayer \*player, [AVPlayerState](#avplayerstate) \*state) | 获取当前播放状态。 |
95| bool [OH_AVPlayer_IsPlaying](#oh_avplayer_isplaying) (OH_AVPlayer \*player) | 判断播放器是否在播放。 |
96| bool [OH_AVPlayer_IsLooping](#oh_avplayer_islooping) (OH_AVPlayer \*player) | 判断是用循环播放。 |
97| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetLooping](#oh_avplayer_setlooping) (OH_AVPlayer \*player, bool loop) | 设置循环播放。 |
98| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetPlayerCallback](#oh_avplayer_setplayercallback) (OH_AVPlayer \*player, [AVPlayerCallback](_a_v_player_callback.md) callback) | 设置播放器回调方法。 |
99| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SelectTrack](#oh_avplayer_selecttrack) (OH_AVPlayer \*player, int32_t index) | 选择音频轨道。该接口在当前版本暂不支持,将在后续版本开放能力。 |
100| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_DeselectTrack](#oh_avplayer_deselecttrack) (OH_AVPlayer \*player, int32_t index) | 取消选择当前音频轨道。该接口在当前版本暂不支持,将在后续版本开放能力。 |
101| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_GetCurrentTrack](#oh_avplayer_getcurrenttrack) (OH_AVPlayer \*player, int32_t trackType, int32_t \*index) | 获取当前有效的轨道索引。该接口在当前版本暂不支持,将在后续版本开放能力。 |
102| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetMediaKeySystemInfoCallback](#oh_avplayer_setmediakeysysteminfocallback) (OH_AVPlayer \*player, Player_MediaKeySystemInfoCallback callback) | 设置播放器媒体密钥系统信息回调的方法。 |
103| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_GetMediaKeySystemInfo](#oh_avplayer_getmediakeysysteminfo) (OH_AVPlayer \*player, [DRM_MediaKeySystemInfo](../apis-drm-kit/_d_r_m___media_key_system_info.md) \*mediaKeySystemInfo) | 获取媒体密钥系统信息以创建媒体密钥会话。 |
104| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetDecryptionConfig](#oh_avplayer_setdecryptionconfig) (OH_AVPlayer \*player, [MediaKeySession](../apis-drm-kit/_drm.md#mediakeysession) \*mediaKeySession, bool secureVideoPath) | 设置解密信息。 |
105| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetOnInfoCallback](#oh_avplayer_setoninfocallback) (OH_AVPlayer \*player, [OH_AVPlayerOnInfoCallback](#oh_avplayeroninfocallback) callback, void \*userData) | 设置播放器消息回调监听函数。  |
106| [OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode) [OH_AVPlayer_SetOnErrorCallback](#oh_avplayer_setonerrorcallback) (OH_AVPlayer \*player, [OH_AVPlayerOnErrorCallback](#oh_avplayeronerrorcallback) callback, void \*userData) | 设置播放器错误回调监听函数。  |
107
108
109### 变量
110
111| 名称 | 描述 |
112| -------- | -------- |
113| const char \* [OH_PLAYER_STATE](#oh_player_state) | 获取播放状态的关键字, 对应值类型是int32_t。  |
114| const char \* [OH_PLAYER_STATE_CHANGE_REASON](#oh_player_state_change_reason) | 获取播放状态变更原因的关键字, 对应值类型是int32_t。  |
115| const char \* [OH_PLAYER_VOLUME](#oh_player_volume) | 获取音量的关键字, 对应值类型是float。  |
116| const char \* [OH_PLAYER_BITRATE_ARRAY](#oh_player_bitrate_array) | 获取比特率列表的关键字, 对应值类型是uint8_t字节数组[AV_INFO_TYPE_BITRATE_COLLECT](#avplayeroninfotype-1)。  |
117| const char \* [OH_PLAYER_AUDIO_INTERRUPT_TYPE](#oh_player_audio_interrupt_type) | 获取音频打断类型的关键字, 对应值类型是int32_t。  |
118| const char \* [OH_PLAYER_AUDIO_INTERRUPT_FORCE](#oh_player_audio_interrupt_force) | 获取音频打断FORCE类型的关键字, 对应值类型是int32_t。  |
119| const char \* [OH_PLAYER_AUDIO_INTERRUPT_HINT](#oh_player_audio_interrupt_hint) | 获取音频打断HINT类型的关键字, 对应值类型是int32_t。  |
120| const char \* [OH_PLAYER_AUDIO_DEVICE_CHANGE_REASON](#oh_player_audio_device_change_reason) | 获取音频音频设备变更原因的关键字, 对应值类型是int32_t。  |
121| const char \* [OH_PLAYER_BUFFERING_TYPE](#oh_player_buffering_type) | 获取缓冲更新消息类型的关键字, 对应值类型是[AVPlayerBufferingType](#avplayerbufferingtype-1)。  |
122| const char \* [OH_PLAYER_BUFFERING_VALUE](#oh_player_buffering_value) | 获取缓冲更新消息具体数值的关键字, 对应值类型是int32_t。  |
123| const char \* [OH_PLAYER_SEEK_POSITION](#oh_player_seek_position) | 获取Seek后播放进度信息的关键字, 对应值类型是int32_t。  |
124| const char \* [OH_PLAYER_PLAYBACK_SPEED](#oh_player_playback_speed) | 获取播放倍速信息的关键字, 对应值类型是[AVPlaybackSpeed](#avplaybackspeed-1)。  |
125| const char \* [OH_PLAYER_BITRATE](#oh_player_bitrate) | 获取比特率信息的关键字, 对应值类型是int32_t。  |
126| const char \* [OH_PLAYER_CURRENT_POSITION](#oh_player_current_position) | 获取播放进度信息的关键字, 对应值类型是int32_t。  |
127| const char \* [OH_PLAYER_DURATION](#oh_player_duration) | 获取媒体资源时长信息的关键字, 对应值类型是int64_t。  |
128| const char \* [OH_PLAYER_VIDEO_WIDTH](#oh_player_video_width) | 获取视频宽度信息的关键字, 对应值类型int32_t。  |
129| const char \* [OH_PLAYER_VIDEO_HEIGHT](#oh_player_video_height) | 获取视频高度信息的关键字, 对应值类型int32_t。  |
130| const char \* [OH_PLAYER_MESSAGE_TYPE](#oh_player_message_type) | 获取播放器消息信息的关键字, 对应值类型int32_t。  |
131| const char \* [OH_PLAYER_IS_LIVE_STREAM](#oh_player_is_live_stream) | 获取媒体资源是否为直播类型信息的关键字, 对应值类型int32_t。  |
132
133
134## 类型定义说明
135
136
137### AVPlaybackSpeed
138
139```
140typedef enum AVPlaybackSpeed AVPlaybackSpeed
141```
142**描述**
143播放速度
144
145**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
146
147**起始版本:** 11
148
149
150### AVPlayerBufferingType
151
152```
153typedef enum AVPlayerBufferingType AVPlayerBufferingType
154```
155**描述**
156播放缓冲消息类型定义。
157
158**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
159
160**起始版本:** 12
161
162
163### AVPlayerCallback
164
165```
166typedef struct AVPlayerCallback AVPlayerCallback
167```
168**描述**
169包含了OH_AVPlayerOnInfo和OH_AVPlayerOnInfo回调函数指针的集合。应用需注册此实例结构体到OH_AVPlayer实例中,并对回调上报的信息进行处理,保证AVPlayer的正常运行。
170
171**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
172
173**起始版本:** 11
174
175**废弃版本:** 12
176
177**替代接口:**[OH_AVPlayerOnInfoCallback](#oh_avplayeroninfocallback) [OH_AVPlayerOnErrorCallback](#oh_avplayeronerrorcallback)
178
179**参数:**
180
181| 名称 | 描述 |
182| -------- | -------- |
183| onInfo | 监控AVPlayer过程信息,参考[OH_AVPlayerOnInfo](#oh_avplayeroninfo) |
184| onError | 监控AVPlayer操作错误,参考[OH_AVPlayerOnError](#oh_avplayeronerror) |
185
186
187### AVPlayerOnInfoType
188
189```
190typedef enum AVPlayerOnInfoType AVPlayerOnInfoType
191```
192**描述**
193OnInfo类型。
194
195**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
196
197**起始版本:** 11
198
199
200### AVPlayerSeekMode
201
202```
203typedef enum AVPlayerSeekMode AVPlayerSeekMode
204```
205**描述**
206跳转模式
207
208**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
209
210**起始版本:** 11
211
212
213### AVPlayerState
214
215```
216typedef enum AVPlayerState AVPlayerState
217```
218**描述**
219播放状态。
220
221**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
222
223**起始版本:** 11
224
225
226### DRM_MediaKeySystemInfo
227
228```
229typedef struct DRM_MediaKeySystemInfo DRM_MediaKeySystemInfo
230```
231**描述**
232DRM_MediaKeySystemInfo类型。
233
234**起始版本:** 12
235
236
237### MediaKeySession
238
239```
240typedef struct MediaKeySession MediaKeySession
241```
242**描述**
243MediaKeySession类型。
244
245**起始版本:** 12
246
247
248### OH_AVPlayerOnError
249
250```
251typedef void(* OH_AVPlayerOnError) (OH_AVPlayer *player, int32_t errorCode, const char *errorMsg)
252```
253**描述**
254在API9以上的版本发生错误时调用。
255
256**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
257
258**起始版本:** 11
259
260**废弃版本:** 12
261
262**替代接口:**[OH_AVPlayerOnErrorCallback](#oh_avplayeronerrorcallback)
263
264**参数:**
265
266| 名称 | 描述 |
267| -------- | -------- |
268| 指向OH_AVPlayer实例的指针 |  |
269| errorCode | 错误码。<br> AV_ERR_NO_MEMORY:无内存,取值为1<br>AV_ERR_OPERATE_NOT_PERMIT:操作不允许,取值为2<br>AV_ERR_INVALID_VAL:无效值,取值为3<br>AV_ERR_IO:IO错误,取值为4<br>AV_ERR_TIMEOUT:超时错误,取值为5<br>AV_ERR_UNKNOWN:未知错误,取值为6<br>AV_ERR_SERVICE_DIED:服务死亡,取值为7<br>AV_ERR_INVALID_STATE:当前状态不支持此操作,取值为8<br>AV_ERR_UNSUPPORT:未支持的接口,取值为9<br>AV_ERR_EXTEND_START:扩展错误码初始值,取值为100 |
270| errorMsg | 错误消息  |
271
272
273### OH_AVPlayerOnErrorCallback
274
275```
276typedef void(* OH_AVPlayerOnErrorCallback) (OH_AVPlayer *player, int32_t errorCode, const char *errorMsg, void *userData)
277```
278**描述**
279发生错误时被调用。如果应用成功设置该回调,则不会回调OH_AVPlayerOnError函数。
280
281**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
282
283**起始版本:** 12
284
285**参数:**
286
287| 名称 | 描述 |
288| -------- | -------- |
289| player | 指向OH_AVPlayer实例的指针。  |
290| errorCode | 错误码。<br> AV_ERR_NO_MEMORY:无内存,取值为1<br>AV_ERR_OPERATE_NOT_PERMIT:操作不允许,取值为2<br>AV_ERR_INVALID_VAL:无效值,取值为3<br>AV_ERR_IO:IO错误,取值为4<br>AV_ERR_TIMEOUT:超时错误,取值为5<br>AV_ERR_UNKNOWN:未知错误,取值为6<br>AV_ERR_SERVICE_DIED:服务死亡,取值为7<br>AV_ERR_INVALID_STATE:当前状态不支持此操作,取值为8<br>AV_ERR_UNSUPPORT:未支持的接口,取值为9<br>AV_ERR_EXTEND_START:扩展错误码初始值,取值为100 |
291| errorMsg | 错误消息。  |
292| userData | 原样返回用户设置回调时传入的userData数据。  |
293
294
295### OH_AVPlayerOnInfo
296
297```
298typedef void(* OH_AVPlayerOnInfo) (OH_AVPlayer *player, AVPlayerOnInfoType type, int32_t extra)
299```
300**描述**
301收到播放器消息时调用。
302
303信息类型(type)和信息(extra)的对应关系如表所示。
304
305| 信息类型(type) | 对应的extra描述 |
306| -------- | -------- |
307| AV_INFO_TYPE_SEEKDONE | 跳转到对应播放位置时返回消息,extra表示seek到的位置。 |
308| AV_INFO_TYPE_SPEEDDONE | 播放倍速设置完成时返回消息,extra表示播放倍速信息,具体请参考[AVPlaybackSpeed](#avplaybackspeed-1)。 |
309| AV_INFO_TYPE_BITRATEDONE | 比特率设置完成时返回消息,extra表示比特率信息。 |
310| AV_INFO_TYPE_EOS | 播放完成时返回消息。|
311| AV_INFO_TYPE_STATE_CHANGE | 状态改变时返回消息,extra表示当前播放状态,具体请参见[AVPlayerState](#avplayerstate-1)。 |
312| AV_INFO_TYPE_POSITION_UPDATE | 返回当前播放位置,extra表示当前位置。 |
313| AV_INFO_TYPE_MESSAGE | 视频开始渲染时返回消息,extra表示视频首帧渲染。 |
314| AV_INFO_TYPE_VOLUME_CHANGE | 音量改变时返回消息,此场景extra未定义。 |
315| AV_INFO_TYPE_RESOLUTION_CHANGE | 首次获取视频大小或视频大小更新时返回消息,此场景extra未定义。 |
316| AV_INFO_TYPE_BUFFERING_UPDATE | 返回多队列缓冲时间,extra表示视频时长。 |
317| AV_INFO_TYPE_BITRATE_COLLECT  | 上报HLS视频比特率列表消息。上报时每个比特率已经被转为uint8_t字节数组,使用者需要将uint8_t字节数组强制转换为uint32_t整型数组。   |
318| AV_INFO_TYPE_INTERRUPT_EVENT | 音频焦点改变时返回消息,extra表示音频打断提示,具体请参见[OH_AudioInterrupt_Hint](../apis-audio-kit/_o_h_audio.md#oh_audiointerrupt_hint),应用可决定是否根据打断提示作进一步处理。 |
319| AV_INFO_TYPE_DURATION_UPDATE | 返回播放时长,extra表示视频时长。 |
320| AV_INFO_TYPE_IS_LIVE_STREAM | 播放为直播流时返回消息,extra表示是否为直播流,0表示非直播流,1表示直播流。 |
321| AV_INFO_TYPE_TRACKCHANGE | 轨道改变时返回消息,此场景extra未定义。 |
322| AV_INFO_TYPE_TRACK_INFO_UPDATE |轨道更新时返回消息,此场景extra未定义。 |
323| AV_INFO_TYPE_SUBTITLE_UPDATE | 字幕信息更新时返回消息,此场景extra未定义。 |
324| AV_INFO_TYPE_AUDIO_OUTPUT_DEVICE_CHANGE | 音频输出设备改变时返回消息,extra表示设备改变原因,具体请参见[OH_AudioStream_DeviceChangeReason](../apis-audio-kit/_o_h_audio.md#oh_audiostream_devicechangereason)。 |
325
326**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
327
328**起始版本:** 11
329
330**废弃版本:** 12
331
332**替代接口:**[OH_AVPlayerOnInfoCallback](#oh_avplayeroninfocallback)
333
334**参数:**
335
336| 名称 | 描述 |
337| -------- | -------- |
338| player | 指向OH_AVPlayer实例的指针。  |
339| type | 信息类型。类型为[AVPlayerOnInfoType](#avplayeroninfotype-1),与extra的对应关系可见方法描述。 |
340| extra | 其他信息,如播放文件的开始时间位置。  |
341
342
343### OH_AVPlayerOnInfoCallback
344
345```
346typedef void(* OH_AVPlayerOnInfoCallback) (OH_AVPlayer *player, AVPlayerOnInfoType type, OH_AVFormat *infoBody, void *userData)
347```
348**描述**
349收到播放器消息时被调用。如果应用成功设置该回调,则不会回调OH_AVPlayerOnInfo函数。
350
351**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
352
353**起始版本:** 12
354
355**参数:**
356
357| 名称 | 描述 |
358| -------- | -------- |
359| player | 指向OH_AVPlayer实例的指针。  |
360| type | 信息类型。具体请参见[AVPlayerOnInfoType](#avplayeroninfotype-1)。  |
361| infoBody | 指向携带具体消息的指针,仅在该回调方法内有效。  |
362| userData | 原样返回用户设置回调时传入的userData数据。  |
363
364
365### Player_MediaKeySystemInfoCallback
366
367```
368typedef void(* Player_MediaKeySystemInfoCallback) (OH_AVPlayer *player, DRM_MediaKeySystemInfo *mediaKeySystemInfo)
369```
370**描述**
371播放器DRM信息更新时被调用。
372
373**起始版本:** 12
374
375**参数:**
376
377| 名称 | 描述 |
378| -------- | -------- |
379| player | 指向OH_AVPlayer实例的指针。  |
380| mediaKeySystemInfo | DRM信息。  |
381
382**返回:**
383
384void
385
386
387## 枚举类型说明
388
389
390### AVPlaybackSpeed
391
392```
393enum AVPlaybackSpeed
394```
395**描述**
396播放速度
397
398**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
399
400**起始版本:** 11
401
402| 枚举值 | 描述 |
403| -------- | -------- |
404| AV_SPEED_FORWARD_0_75_X | 0.75倍速播放 |
405| AV_SPEED_FORWARD_1_00_X | 正常播放 |
406| AV_SPEED_FORWARD_1_25_X | 1.25倍速播放 |
407| AV_SPEED_FORWARD_1_75_X | 1.75倍速播放 |
408| AV_SPEED_FORWARD_2_00_X | 2.0倍速播放 |
409| AV_SPEED_FORWARD_0_50_X | 0.5倍速播放<br>**起始版本:** 12 |
410| AV_SPEED_FORWARD_1_50_X | 1.5倍速播放<br>**起始版本:** 12 |
411| AV_SPEED_FORWARD_3_00_X | 3.0倍速播放<br>**起始版本:** 13 |
412| AV_SPEED_FORWARD_0_25_X | 0.25倍速播放<br>**起始版本:** 13 |
413| AV_SPEED_FORWARD_0_125_X | 0.125倍速播放<br>**起始版本:** 13 |
414
415
416### AVPlayerBufferingType
417
418```
419enum AVPlayerBufferingType
420```
421**描述**
422播放缓冲消息类型定义。
423
424**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
425
426**起始版本:** 12
427
428| 枚举值 | 描述 |
429| -------- | -------- |
430| AVPLAYER_BUFFERING_START  | 缓冲开始消息。   |
431| AVPLAYER_BUFFERING_END  | 缓冲结束消息。   |
432| AVPLAYER_BUFFERING_PERCENT  | 缓冲执行进度百分比,取值范围:整数,[0, 100]。   |
433| AVPLAYER_BUFFERING_CACHED_DURATION  | 缓冲数据可播放时长,单位:毫秒。   |
434
435
436### AVPlayerOnInfoType
437
438```
439enum AVPlayerOnInfoType
440```
441**描述**
442OnInfo类型。
443
444可用于[OH_AVPlayerOnInfoCallback](#oh_avplayeroninfocallback)和[OH_AVPlayerOnInfo(已废弃)](#oh_avplayeroninfo),用于表示收到的播放器信息类型。
445
446- 从API 12开始,推荐用户使用[OH_AVPlayerOnInfoCallback](#oh_avplayeroninfocallback)。不同的OnInfo类型,可获取到不同信息(infoBody),infoBody中包含key-value关系表,详见下述枚举值表。
447
448- 使用API 11版本的开发者,需要使用旧接口。针对已废弃接口OH_AVPlayerOnInfo中使用的对应关系,可直接参考[OH_AVPlayerOnInfo的API说明](#oh_avplayeroninfo)。
449
450**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
451
452**起始版本:** 11
453
454| 枚举值 | 描述 |
455| -------- | -------- |
456| AV_INFO_TYPE_SEEKDONE | 跳转到对应播放位置时返回消息。<br>key为OH_PLAYER_SEEK_POSITION:取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。|
457| AV_INFO_TYPE_SPEEDDONE | 播放倍速设置完成时返回消息。<br>key为OH_PLAYER_PLAYBACK_SPEED:取值类型[AVPlaybackSpeed](#avplaybackspeed-1)。系统通过int32_t传递value,应用需先通过int32_t获取,再强制转为[AVPlaybackSpeed](#avplaybackspeed-1)。 |
458| AV_INFO_TYPE_BITRATEDONE | 比特率设置完成时返回消息。<br>key为OH_PLAYER_BITRATE:取值类型uint32_t。系统通过int32_t传递value,应用需先通过int32_t获取,再强制为uint32_t。 |
459| AV_INFO_TYPE_EOS | 播放完成时返回消息。|
460| AV_INFO_TYPE_STATE_CHANGE | 状态改变时返回消息。<br>- key为OH_PLAYER_STATE:取值类型int32_t。系统通过int32_t传递value,应用需先通过int32_t获取,再强制转为[AVPlayerState](#avplayerstate-1)。<br>- key为OH_PLAYER_STATE_CHANGE_REASON:取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。1:用户操作触发;2:系统变更触发。 |
461| AV_INFO_TYPE_POSITION_UPDATE | 返回当前播放位置。<br>key为OH_PLAYER_CURRENT_POSITION:取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。 |
462| AV_INFO_TYPE_MESSAGE | 视频开始渲染时返回消息。<br>key为OH_PLAYER_MESSAGE_TYPE:取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。1表示视频开始渲染。 |
463| AV_INFO_TYPE_VOLUME_CHANGE | 音量改变时返回消息。<br>key为OH_PLAYER_VOLUME:取值类型float。系统通过float传递value,应用需通过float获取。取值范围[0.0, 1.0]。 |
464| AV_INFO_TYPE_RESOLUTION_CHANGE | 首次获取视频大小或视频大小更新时返回消息。<br>key为OH_PLAYER_VIDEO_WIDTH 或 OH_PLAYER_VIDEO_HEIGHT:取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。 |
465| AV_INFO_TYPE_BUFFERING_UPDATE | 返回多队列缓冲时间。<br>- key为OH_PLAYER_BUFFERING_TYPE:取值类型[AVPlayerBufferingType](#avplayerbufferingtype-1)。系统通过int32_t传递value,应用需先通过int32_t获取,再强制转为[AVPlayerBufferingType](#avplayerbufferingtype-1)。<br>- key为OH_PLAYER_BUFFERING_VALUE:取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。当缓冲更新消息类型是AVPLAYER_BUFFERING_PERCENT、AVPLAYER_BUFFERING_CACHED_DURATION时有效,分别表示缓冲进度完成百分比、缓冲数据可播放时长。 |
466| AV_INFO_TYPE_BITRATE_COLLECT  | 上报HLS视频比特率列表消息。<br>key为OH_PLAYER_BITRATE_ARRAY:取值类型uint8_t字节数组。应用需要先使用uint8_t类型指针变量保存比特率列表,使用size_t类型变量保存字节数组长度。然后分配若干个uint32_t类型的存储空间,接收将uint8_t字节数组转换为uint32_t类型比特率整数值。   |
467| AV_INFO_TYPE_INTERRUPT_EVENT | 音频焦点改变时返回消息。<br>取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。<br>key为:<br>- OH_PLAYER_AUDIO_INTERRUPT_TYPE:取值1表示中断事件开始;2表示结束。<br>- OH_PLAYER_AUDIO_INTERRUPT_FORCE:取值0表示强制打断,系统改变音频播放状态;1表示共享打断,应用改变音频播放状态。<br>- OH_PLAYER_AUDIO_INTERRUPT_HINT:取值0表示NONE,无提示;1表示RESUME,提示音频恢复;2表示PAUSE,提示音频暂停暂时失去焦点;3表示STOP,提示音频停止;4表示DUCK,音频降低音量;5表示UNDUCK,音频恢复音量。 |
468| AV_INFO_TYPE_DURATION_UPDATE | 返回播放时长。<br>key为OH_PLAYER_DURATION:取值类型int64_t。系统通过int64_t传递value,应用需通过int64_t获取。 |
469| AV_INFO_TYPE_IS_LIVE_STREAM | 播放为直播流时返回消息。<br>key为OH_PLAYER_IS_LIVE_STREAM:取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。0表示非直播流,1表示直播流。 |
470| AV_INFO_TYPE_TRACKCHANGE | 轨道改变时返回消息,此场景暂未定义。 |
471| AV_INFO_TYPE_TRACK_INFO_UPDATE |轨道更新时返回消息,此场景暂未定义。 |
472| AV_INFO_TYPE_SUBTITLE_UPDATE | 字幕信息更新时返回消息,此场景暂未定义。 |
473| AV_INFO_TYPE_AUDIO_OUTPUT_DEVICE_CHANGE | 音频输出设备改变时返回消息。<br>key为OH_PLAYER_AUDIO_DEVICE_CHANGE_REASON:取值类型int32_t。系统通过int32_t传递value,应用需通过int32_t获取。 |
474
475
476### AVPlayerSeekMode
477
478```
479enum AVPlayerSeekMode
480```
481**描述**
482跳转模式
483
484**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
485
486**起始版本:** 11
487
488| 枚举值 | 描述 |
489| -------- | -------- |
490| AV_SEEK_NEXT_SYNC | 同步到时间点之后的关键帧。 |
491| AV_SEEK_PREVIOUS_SYNC | 同步到时间点之前的关键帧。 |
492| AV_SEEK_CLOSEST | 同步到距离指定时间点最近的帧。<br/>**起始版本:** 12 |
493
494
495### AVPlayerState
496
497```
498enum AVPlayerState
499```
500**描述**
501播放状态。
502
503**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
504
505**起始版本:** 11
506
507| 枚举值 | 描述 |
508| -------- | -------- |
509| AV_IDLE | 空闲。 |
510| AV_INITIALIZED | 初始化。 |
511| AV_PREPARED | 准备。 |
512| AV_PLAYING | 播放。 |
513| AV_PAUSED | 暂停。 |
514| AV_STOPPED | 停止。 |
515| AV_COMPLETED | 结束。 |
516| AV_RELEASED | 释放。 |
517| AV_ERROR | 错误。 |
518
519
520## 函数说明
521
522
523### OH_AVPlayer_Create()
524
525```
526OH_AVPlayer* OH_AVPlayer_Create (void)
527```
528**描述**
529创建播放器。
530
531> **说明:**
532>
533> - 推荐单个应用创建的音视频播放器实例(即音频、视频、音视频三类相加)不超过16个。<!--Del-->
534> - 可创建的音视频播放器实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放器实例。<!--DelEnd-->
535
536**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
537
538**起始版本:** 11
539
540**返回:**
541
542如果创建成功返回指向OH_AVPlayer实例的指针,否则返回空指针。
543
544可能的失败原因:
545
5461. PlayerFactory::CreatePlayer执行失败;
5472. new PlayerObject执行失败。
548
549
550### OH_AVPlayer_DeselectTrack()
551
552```
553OH_AVErrCode OH_AVPlayer_DeselectTrack (OH_AVPlayer *player, int32_t index)
554```
555**描述**
556取消选择当前音频轨道。该接口在当前版本暂不支持,将在后续版本开放能力。
557
558**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
559
560**起始版本:** 11
561
562**参数:**
563
564| 名称 | 描述 |
565| -------- | -------- |
566| player | 指向OH_AVPlayer实例的指针 |
567| index | 索引  |
568
569**返回:**
570
571函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
572
573AV_ERR_OK:成功取消。
574
575AV_ERR_INVALID_VAL:输入player为空指针、player DeselectTrack执行失败。
576
577
578### OH_AVPlayer_GetCurrentTime()
579
580```
581OH_AVErrCode OH_AVPlayer_GetCurrentTime (OH_AVPlayer *player, int32_t *currentTime)
582```
583**描述**
584获取播放位置,精确到毫秒。
585
586**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
587
588**起始版本:** 11
589
590**参数:**
591
592| 名称 | 描述 |
593| -------- | -------- |
594| player | 指向OH_AVPlayer实例的指针 |
595| currentTime | 播放位置 |
596
597**返回:**
598
599函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
600
601AV_ERR_OK:获取当前位置。
602
603AV_ERR_INVALID_VAL:输入player为空指针、player GetCurrentTime执行失败。
604
605
606### OH_AVPlayer_GetCurrentTrack()
607
608```
609OH_AVErrCode OH_AVPlayer_GetCurrentTrack (OH_AVPlayer *player, int32_t trackType, int32_t *index)
610```
611**描述**
612获取当前有效的轨道索引。该接口在当前版本暂不支持,将在后续版本开放能力。
613
614请将其设置为准备/正在播放/暂停/完成状态。
615
616**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
617
618**起始版本:** 11
619
620**参数:**
621
622| 名称 | 描述 |
623| -------- | -------- |
624| player | 指向OH_AVPlayer实例的指针 |
625| trackType | 媒体类型。0:音频,1:视频 |
626| index | 索引 |
627
628**返回:**
629
630函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
631
632AV_ERR_OK:成功获取。
633
634AV_ERR_INVALID_VAL:输入player为空指针、player GetCurrentTrack执行失败。
635
636
637### OH_AVPlayer_GetDuration()
638
639```
640OH_AVErrCode OH_AVPlayer_GetDuration (OH_AVPlayer *player, int32_t *duration)
641```
642**描述**
643获取媒体文件的总时长,精确到毫秒。
644
645**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
646
647**起始版本:** 11
648
649**参数:**
650
651| 名称 | 描述 |
652| -------- | -------- |
653| player | 指向OH_AVPlayer实例的指针 |
654| duration | 媒体文件的总时长 |
655
656**返回:**
657
658函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
659
660AV_ERR_OK:获取当前时长。
661
662AV_ERR_INVALID_VAL:输入player为空指针、player GetDuration执行失败。
663
664
665### OH_AVPlayer_GetMediaKeySystemInfo()
666
667```
668OH_AVErrCode OH_AVPlayer_GetMediaKeySystemInfo (OH_AVPlayer *player, DRM_MediaKeySystemInfo *mediaKeySystemInfo)
669```
670**描述**
671获取媒体密钥系统信息以创建媒体密钥会话。
672
673**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
674
675**起始版本:** 12
676
677**参数:**
678
679| 名称 | 描述 |
680| -------- | -------- |
681| player | 指向OH_AVPlayer实例的指针 |
682| mediaKeySystemInfo | 媒体密钥系统信息 |
683
684**返回:**
685
686函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
687
688AV_ERR_OK:成功设置。
689
690AV_ERR_INVALID_VAL:输入player为空指针、内存不足。
691
692### OH_AVPlayer_GetPlaybackSpeed()
693
694```
695OH_AVErrCode OH_AVPlayer_GetPlaybackSpeed (OH_AVPlayer *player, AVPlaybackSpeed *speed)
696```
697**描述**
698获取当前播放器播放速率。
699
700**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
701
702**起始版本:** 11
703
704**参数:**
705
706| 名称 | 描述 |
707| -------- | -------- |
708| player | 指向OH_AVPlayer实例的指针 |
709| speed | 可以获取的速率模式[AVPlaybackSpeed](#avplaybackspeed) |
710
711**返回:**
712
713函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
714
715AV_ERR_OK:成功获取播放速率。
716
717AV_ERR_INVALID_VAL:输入player为空指针、player GetPlaybackSpeed执行失败。
718
719
720### OH_AVPlayer_GetState()
721
722```
723OH_AVErrCode OH_AVPlayer_GetState (OH_AVPlayer *player, AVPlayerState *state)
724```
725**描述**
726获取当前播放状态。
727
728**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
729
730**起始版本:** 11
731
732**参数:**
733
734| 名称 | 描述 |
735| -------- | -------- |
736| player | 指向OH_AVPlayer实例的指针 |
737| state | 当前播放状态 |
738
739**返回:**
740
741函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
742
743AV_ERR_OK:获取当前播放状态。
744
745AV_ERR_INVALID_VAL:输入player为空指针、player GetState执行失败。
746
747
748### OH_AVPlayer_GetVideoHeight()
749
750```
751OH_AVErrCode OH_AVPlayer_GetVideoHeight (OH_AVPlayer *player, int32_t *videoHeight)
752```
753**描述**
754获取视频高度。
755
756**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
757
758**起始版本:** 11
759
760**参数:**
761
762| 名称 | 描述 |
763| -------- | -------- |
764| player | 指向OH_AVPlayer实例的指针 |
765| videoHeights | 视频高度 |
766
767**返回:**
768
769函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
770
771AV_ERR_OK:成功获取视频高度。
772
773AV_ERR_INVALID_VAL:输入player为空指针。
774
775
776### OH_AVPlayer_GetVideoWidth()
777
778```
779OH_AVErrCode OH_AVPlayer_GetVideoWidth (OH_AVPlayer *player, int32_t *videoWidth)
780```
781**描述**
782获取视频宽度。
783
784**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
785
786**起始版本:** 11
787
788**参数:**
789
790| 名称 | 描述 |
791| -------- | -------- |
792| player | 指向OH_AVPlayer实例的指针 |
793| videoWidth | 视频宽度 |
794
795**返回:**
796
797函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
798
799AV_ERR_OK:成功获取视频宽度。
800
801AV_ERR_INVALID_VAL:输入player为空指针。
802
803
804### OH_AVPlayer_IsLooping()
805
806```
807bool OH_AVPlayer_IsLooping (OH_AVPlayer *player)
808```
809**描述**
810判断是否循环播放。
811
812**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
813
814**起始版本:** 11
815
816**参数:**
817
818| 名称 | 描述 |
819| -------- | -------- |
820| player | 指向OH_AVPlayer实例的指针 |
821
822**返回:**
823
824如果循环播放,则返回true;如果不是循环播放或者输入player为空指针则返回false。
825
826
827### OH_AVPlayer_IsPlaying()
828
829```
830bool OH_AVPlayer_IsPlaying (OH_AVPlayer *player)
831```
832**描述**
833判断播放器是否在播放。
834
835**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
836
837**起始版本:** 11
838
839**参数:**
840
841| 名称 | 描述 |
842| -------- | -------- |
843| player | 指向OH_AVPlayer实例的指针 |
844
845**返回:**
846
847如果正在播放,则返回true;如果不在播放或者输入player为空指针则返回false。
848
849
850### OH_AVPlayer_Pause()
851
852```
853OH_AVErrCode OH_AVPlayer_Pause (OH_AVPlayer *player)
854```
855**描述**
856暂停播放。
857
858**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
859
860**起始版本:** 11
861
862**参数:**
863
864| 名称 | 描述 |
865| -------- | -------- |
866| player | 指向OH_AVPlayer实例的指针 |
867
868**返回:**
869
870函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
871
872AV_ERR_OK:成功将**Pause**添加到任务队列中。
873
874AV_ERR_INVALID_VAL:输入player为空指针、player Pause执行失败。
875
876
877### OH_AVPlayer_Play()
878
879```
880OH_AVErrCode OH_AVPlayer_Play (OH_AVPlayer *player)
881```
882**描述**
883开始播放。
884
885此函数必须在**Prepare**之后调用。如果播放器状态为&lt;Prepared&gt;。调用此函数开始播放。
886
887**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
888
889**起始版本:** 11
890
891**参数:**
892
893| 名称 | 描述 |
894| -------- | -------- |
895| player | 指向OH_AVPlayer实例的指针 |
896
897**返回:**
898
899函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
900
901AV_ERR_OK:开始播放。
902
903AV_ERR_INVALID_VAL:输入player为空指针、player Play执行失败。
904
905
906### OH_AVPlayer_Prepare()
907
908```
909OH_AVErrCode OH_AVPlayer_Prepare (OH_AVPlayer *player)
910```
911**描述**
912准备播放环境,异步缓存媒体数据。
913
914此函数必须在**SetSource**之后调用。
915
916**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
917
918**起始版本:** 11
919
920**参数:**
921
922| 名称 | 描述 |
923| -------- | -------- |
924| player | 指向OH_AVPlayer实例的指针 |
925
926**返回:**
927
928函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
929
930AV_ERR_OK:成功将**Prepare**添加到任务队列中。
931
932AV_ERR_INVALID_VAL:输入player为空指针、player Prepare执行失败。
933
934
935### OH_AVPlayer_Release()
936
937```
938OH_AVErrCode OH_AVPlayer_Release (OH_AVPlayer *player)
939```
940**描述**
941异步释放播放器资源。
942
943异步释放保证性能,但无法保证是否释放了播放画面的surfacebuffer。调用者需要保证播放画面窗口的生命周期安全。
944
945**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
946
947**起始版本:** 11
948
949**参数:**
950
951| 名称 | 描述 |
952| -------- | -------- |
953| player | 指向OH_AVPlayer实例的指针 |
954
955**返回:**
956
957函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
958
959AV_ERR_OK:成功将**Release**添加到任务队列中。
960
961AV_ERR_INVALID_VAL:输入player为空指针、player Release执行失败。
962
963
964### OH_AVPlayer_ReleaseSync()
965
966```
967OH_AVErrCode OH_AVPlayer_ReleaseSync (OH_AVPlayer *player)
968```
969**描述**
970同步释放播放器资源。
971
972同步过程保证了播放画面的显示缓存释放,但这个过程花费时间较长,要求调用者自己设计异步机制。
973
974**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
975
976**起始版本:** 11
977
978**参数:**
979
980| 名称 | 描述 |
981| -------- | -------- |
982| player | 指向OH_AVPlayer实例的指针 |
983
984**返回:**
985
986函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
987
988AV_ERR_OK:播放被释放。
989
990AV_ERR_INVALID_VAL:输入player为空指针、player ReleaseSync执行失败。
991
992### OH_AVPlayer_Reset()
993
994```
995OH_AVErrCode OH_AVPlayer_Reset (OH_AVPlayer *player)
996```
997**描述**
998将播放器恢复到初始状态。
999
1000函数调用完成后,调用**SetSource**添加播放源。调用**Prepare**后,调用**Play**重新开始播放。
1001
1002**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1003
1004**起始版本:** 11
1005
1006**参数:**
1007
1008| 名称 | 描述 |
1009| -------- | -------- |
1010| player | 指向OH_AVPlayer实例的指针 |
1011
1012**返回:**
1013
1014函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1015
1016AV_ERR_OK:成功将**reset**添加到任务队列。
1017
1018AV_ERR_INVALID_VAL:输入player为空指针、player Reset执行失败。
1019
1020
1021### OH_AVPlayer_Seek()
1022
1023```
1024OH_AVErrCode OH_AVPlayer_Seek (OH_AVPlayer *player, int32_t mSeconds, AVPlayerSeekMode mode)
1025```
1026**描述**
1027改变播放位置。
1028
1029此函数可以在播放或暂停时使用。
1030
1031**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1032
1033**参数:**
1034
1035| 名称 | 描述 |
1036| -------- | -------- |
1037| player | 指向OH_AVPlayer实例的指针。 |
1038| mSeconds | 播放目标位置,精确到毫秒。 |
1039| mode | 播放器的跳转模式。具体请参考[AVPlayerSeekMode](#avplayerseekmode)。 |
1040
1041**返回:**
1042
1043函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1044
1045AV_ERR_OK:完成跳转。
1046
1047AV_ERR_INVALID_VAL:输入player为空指针、player Seek执行失败。
1048
1049
1050### OH_AVPlayer_SelectBitRate()
1051
1052```
1053OH_AVErrCode OH_AVPlayer_SelectBitRate (OH_AVPlayer *player, uint32_t bitRate)
1054```
1055**描述**
1056设置hls播放器使用的码率。
1057
1058播放比特率,以比特/秒为单位,以比特/秒为单位。 仅对HLS协议网络流有效。默认情况下, 播放器会根据网络连接情况选择合适的码率和速度。 通过INFO_TYPE_BITRATE_COLLECT上报有效码率链表 设置并选择指定的码率,选择小于和最接近的码率 到指定的码率播放。准备好后,读取它以查询当前选择的比特率。
1059
1060**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1061
1062**起始版本:** 11
1063
1064**参数:**
1065
1066| 名称 | 描述 |
1067| -------- | -------- |
1068| player | 指向OH_AVPlayer实例的指针 |
1069| bitRate | 码率,单位为bps |
1070
1071**返回:**
1072
1073**返回:**
1074
1075函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1076
1077AV_ERR_OK:设置码率成功。
1078
1079AV_ERR_INVALID_VAL:输入player为空指针、player SelectBitRate执行失败。
1080
1081
1082### OH_AVPlayer_SelectTrack()
1083
1084```
1085OH_AVErrCode OH_AVPlayer_SelectTrack (OH_AVPlayer *player, int32_t index)
1086```
1087**描述**
1088选择音频轨道。该接口在当前版本暂不支持,将在后续版本开放能力。
1089
1090默认播放第一个带数据的音频流。设置生效后,原曲目将失效。将音轨设置为准备状态。
1091
1092**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1093
1094**起始版本:** 11
1095
1096**参数:**
1097
1098| 名称 | 描述 |
1099| -------- | -------- |
1100| player | 指向OH_AVPlayer实例的指针 |
1101| index | 索引 |
1102
1103**返回:**
1104
1105函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1106
1107AV_ERR_OK:成功选择。
1108
1109AV_ERR_INVALID_VAL:输入player为空指针、player SelectTrack执行失败。
1110
1111
1112### OH_AVPlayer_SetAudioEffectMode()
1113
1114```
1115OH_AVErrCode OH_AVPlayer_SetAudioEffectMode (OH_AVPlayer *player, OH_AudioStream_AudioEffectMode effectMode)
1116```
1117**描述**
1118设置player音频流的音效模式。
1119
1120**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1121
1122**起始版本:** 12
1123
1124**参数:**
1125
1126| 名称 | 描述 |
1127| -------- | -------- |
1128| player | 指向OH_AVPlayer实例的指针。  |
1129| interruptMode | player音频流使用的音效模式[OH_AudioStream_AudioEffectMode](../apis-audio-kit/_o_h_audio.md#oh_audiostream_audioeffectmode)。  |
1130
1131**返回:**
1132
1133函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1134
1135AV_ERR_OK:成功设置。
1136
1137AV_ERR_INVALID_VAL:输入player为空指针或者effectMode值无效。
1138
1139
1140### OH_AVPlayer_SetAudioInterruptMode()
1141
1142```
1143OH_AVErrCode OH_AVPlayer_SetAudioInterruptMode (OH_AVPlayer *player, OH_AudioInterrupt_Mode interruptMode)
1144```
1145**描述**
1146设置player音频流的打断模式。
1147
1148**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1149
1150**起始版本:** 12
1151
1152**参数:**
1153
1154| 名称 | 描述 |
1155| -------- | -------- |
1156| player | 指向OH_AVPlayer实例的指针。  |
1157| interruptMode | player音频流使用的打断模式[OH_AudioInterrupt_Mode](../apis-audio-kit/_o_h_audio.md#oh_audiointerrupt_mode)。  |
1158
1159**返回:**
1160
1161函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1162
1163AV_ERR_OK:成功设置。
1164
1165AV_ERR_INVALID_VAL:输入player为空指针或者interruptMode值无效。
1166
1167
1168### OH_AVPlayer_SetAudioRendererInfo()
1169
1170```
1171OH_AVErrCode OH_AVPlayer_SetAudioRendererInfo (OH_AVPlayer *player, OH_AudioStream_Usage streamUsage)
1172```
1173**描述**
1174设置player音频流类型。
1175
1176**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1177
1178**起始版本:** 12
1179
1180**参数:**
1181
1182| 名称 | 描述 |
1183| -------- | -------- |
1184| player | 指向OH_AVPlayer实例的指针。  |
1185| streamUsage | player音频流设置的类型[OH_AudioStream_Usage](../apis-audio-kit/_o_h_audio.md#oh_audiostream_usage)。  |
1186
1187**返回:**
1188
1189函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1190
1191AV_ERR_OK:成功设置。
1192
1193AV_ERR_INVALID_VAL:输入player为空指针或者streamUsage值无效。
1194
1195
1196### OH_AVPlayer_SetDecryptionConfig()
1197
1198```
1199OH_AVErrCode OH_AVPlayer_SetDecryptionConfig (OH_AVPlayer *player, MediaKeySession *mediaKeySession, bool secureVideoPath)
1200```
1201**描述**
1202设置解密信息。
1203
1204**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1205
1206**起始版本:** 12
1207
1208**参数:**
1209
1210| 名称 | 描述 |
1211| -------- | -------- |
1212| player | 指向OH_AVPlayer实例的指针。 |
1213| mediaKeySession | 具有解密功能的媒体密钥会话实例。 |
1214| secureVideoPath | 是否需要安全解码器。 |
1215
1216**返回:**
1217
1218函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1219
1220AV_ERR_OK:成功设置。
1221
1222AV_ERR_INVALID_VAL:输入player为空指针、player SetDecryptionConfig执行失败。
1223
1224
1225### OH_AVPlayer_SetFDSource()
1226
1227```
1228OH_AVErrCode OH_AVPlayer_SetFDSource (OH_AVPlayer *player, int32_t fd, int64_t offset, int64_t size)
1229```
1230**描述**
1231设置播放器的播放媒体文件描述符来源。
1232
1233**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1234
1235**起始版本:** 11
1236
1237**参数:**
1238
1239| 名称 | 描述 |
1240| -------- | -------- |
1241| player | 指向OH_AVPlayer实例的指针 |
1242| fd | 媒体源的文件描述符 |
1243| offset | 媒体源在文件描述符中的偏移量 |
1244| size | 表示媒体源的大小 |
1245
1246**返回:**
1247
1248函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1249
1250AV_ERR_OK:fd设置成功。
1251
1252AV_ERR_INVALID_VAL:输入player为空指针、player SetFdSource执行失败。
1253
1254
1255### OH_AVPlayer_SetLooping()
1256
1257```
1258OH_AVErrCode OH_AVPlayer_SetLooping (OH_AVPlayer *player, bool loop)
1259```
1260**描述**
1261设置循环播放。
1262
1263**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1264
1265**起始版本:** 11
1266
1267**参数:**
1268
1269| 名称 | 描述 |
1270| -------- | -------- |
1271| player | 指向OH_AVPlayer实例的指针 |
1272| loop | 循环播放开关 |
1273
1274**返回:**
1275
1276函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1277
1278AV_ERR_OK:循环播放设置成功。
1279
1280AV_ERR_INVALID_VAL:输入player为空指针、player SetLooping执行失败。
1281
1282
1283### OH_AVPlayer_SetMediaKeySystemInfoCallback()
1284
1285```
1286OH_AVErrCode OH_AVPlayer_SetMediaKeySystemInfoCallback (OH_AVPlayer *player, Player_MediaKeySystemInfoCallback callback)
1287```
1288**描述**
1289设置播放器媒体密钥系统信息回调的方法。
1290
1291**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1292
1293**起始版本:** 12
1294
1295**参数:**
1296
1297| 名称 | 描述 |
1298| -------- | -------- |
1299| player | 指向OH_AVPlayer实例的指针。 |
1300| callback | 对象指针。 |
1301
1302**返回:**
1303
1304函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1305
1306AV_ERR_OK:设置成功。
1307
1308AV_ERR_INVALID_VAL:输入player为空、callback为空、player SetDrmSystemInfoCallback执行失败。
1309
1310
1311### OH_AVPlayer_SetOnErrorCallback()
1312
1313```
1314OH_AVErrCode OH_AVPlayer_SetOnErrorCallback (OH_AVPlayer * player, OH_AVPlayerOnErrorCallback callback, void * userData )
1315```
1316**描述**
1317设置播放器错误回调监听函数。
1318
1319**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1320
1321**起始版本:** 12
1322
1323**参数:**
1324
1325| 名称 | 描述 |
1326| -------- | -------- |
1327| player | 指向OH_AVPlayer实例的指针。  |
1328| callback | 执行回调监听函数的指针, 空指针表示取消设置播放器错误回调监听。  |
1329| userData | 指向应用调用者设置的实例的指针。  |
1330
1331**返回:**
1332
1333函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1334
1335AV_ERR_OK:成功。
1336
1337AV_ERR_NO_MEMORY:输入分配内存失败。
1338
1339AV_ERR_INVALID_VAL:输入player为空指针或者函数执行失败。
1340
1341
1342### OH_AVPlayer_SetOnInfoCallback()
1343
1344```
1345OH_AVErrCode OH_AVPlayer_SetOnInfoCallback (OH_AVPlayer * player, OH_AVPlayerOnInfoCallback callback, void * userData )
1346```
1347**描述**
1348设置播放器消息回调监听函数。
1349
1350**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1351
1352**起始版本:** 12
1353
1354**参数:**
1355
1356| 名称 | 描述 |
1357| -------- | -------- |
1358| player | 指向OH_AVPlayer实例的指针。  |
1359| callback | 执行回调监听函数的指针, 空指针表示取消设置播放器消息回调监听。  |
1360| userData | 指向应用调用者设置的实例的指针。  |
1361
1362**返回:**
1363
1364函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1365
1366AV_ERR_OK:成功。
1367
1368AV_ERR_NO_MEMORY:输入分配内存失败。
1369
1370AV_ERR_INVALID_VAL:输入player为空指针或者函数执行失败。
1371
1372
1373### OH_AVPlayer_SetPlaybackSpeed()
1374
1375```
1376OH_AVErrCode OH_AVPlayer_SetPlaybackSpeed (OH_AVPlayer *player, AVPlaybackSpeed speed)
1377```
1378**描述**
1379设置播放器播放速率。
1380
1381**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1382
1383**参数:**
1384
1385| 名称 | 描述 |
1386| -------- | -------- |
1387| player | 指向OH_AVPlayer实例的指针 |
1388| speed | 可以设置速率模式[AVPlaybackSpeed](#avplaybackspeed) |
1389
1390**返回:**
1391
1392函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1393
1394AV_ERR_OK:成功设置播放速率。
1395
1396AV_ERR_INVALID_VAL:输入player为空指针。
1397
1398
1399### OH_AVPlayer_SetPlayerCallback()
1400
1401```
1402OH_AVErrCode OH_AVPlayer_SetPlayerCallback (OH_AVPlayer *player, AVPlayerCallback callback)
1403```
1404**描述**
1405设置播放器回调函数。由于通过此方法设置的信息监听回调函数[OH_AVPlayerOnInfo](#oh_avplayeroninfo)和错误监听回调函数[OH_AVPlayerOnError](#oh_avplayeronerror)可以传递信息有限,也不便于应用区分多个播放器实例。从 API 12 开始,应使用[OH_AVPlayer_SetOnInfoCallback()](#oh_avplayer_setoninfocallback)、[OH_AVPlayer_SetOnErrorCallback()](#oh_avplayer_setonerrorcallback)接口分别设置信息监听回调函数[OH_AVPlayerOnInfoCallback](../../reference/apis-media-kit/_a_v_player.md#oh_avplayeroninfocallback)和错误监听回调函数[OH_AVPlayerOnErrorCallback](../../reference/apis-media-kit/_a_v_player.md#oh_avplayeronerrorcallback)。
1406
1407**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1408
1409**起始版本:** 11
1410
1411**参数:**
1412
1413| 名称 | 描述 |
1414| -------- | -------- |
1415| player | 指向OH_AVPlayer实例的指针 |
1416| callback | 回调对象指针 |
1417
1418**返回:**
1419
1420函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1421
1422AV_ERR_OK:成功设置播放器回调。
1423
1424AV_ERR_INVALID_VAL:输入player为空指针、callback.onInfo或onError为空、player SetPlayerCallback执行失败。
1425
1426
1427### OH_AVPlayer_SetURLSource()
1428
1429```
1430OH_AVErrCode OH_AVPlayer_SetURLSource (OH_AVPlayer *player, const char *url)
1431```
1432**描述**
1433设置播放器的播放源。对应的源可以是http url。
1434
1435**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1436
1437**起始版本:** 11
1438
1439**参数:**
1440
1441| 名称 | 描述 |
1442| -------- | -------- |
1443| player | 指向OH_AVPlayer实例的指针 |
1444| url | 播放源 |
1445
1446**返回:**
1447
1448函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1449
1450AV_ERR_OK:设置成功。
1451
1452AV_ERR_INVALID_VAL:输入player为空指针、url为空、player SetUrlSource执行失败。
1453
1454
1455### OH_AVPlayer_SetVideoSurface()
1456
1457```
1458OH_AVErrCode OH_AVPlayer_SetVideoSurface (OH_AVPlayer *player, OHNativeWindow *window)
1459```
1460**描述**
1461设置播放画面窗口。
1462此函数必须在**SetSource**之后,**Prepare**之前调用。
1463
1464**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1465
1466**参数:**
1467
1468| 名称 | 描述 |
1469| -------- | -------- |
1470| player | 指向OH_AVPlayer实例的指针 |
1471| window | 指向OHNativeWindow实例的指针 |
1472
1473**返回:**
1474
1475函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1476
1477AV_ERR_OK:设置播放画面窗口成功。
1478
1479AV_ERR_INVALID_VAL:输入player为空指针、输入window为空指针、player SetVideoSurface执行失败。
1480
1481
1482### OH_AVPlayer_SetVolume()
1483
1484```
1485OH_AVErrCode OH_AVPlayer_SetVolume (OH_AVPlayer *player, float leftVolume, float rightVolume)
1486```
1487**描述**
1488设置播放器的音量。
1489
1490可以在播放或暂停的过程中使用。&lt;0&gt;表示无声音,&lt;1&gt;为原始值。
1491
1492**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1493
1494**起始版本:** 11
1495
1496**参数:**
1497
1498| 名称 | 描述 |
1499| -------- | -------- |
1500| player | 指向OH_AVPlayer实例的指针 |
1501| leftVolume | 要设置的左声道目标音量 |
1502| rightVolume | 要设置的右声道目标音量 |
1503
1504**返回:**
1505
1506函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1507
1508AV_ERR_OK:设置音量成功。
1509
1510AV_ERR_INVALID_VAL:输入player为空指针、player SetVolume执行失败。
1511
1512
1513### OH_AVPlayer_SetVolumeMode()
1514
1515```
1516OH_AVErrCode OH_AVPlayer_SetVolumeMode(OH_AVPlayer *player, OH_AudioStream_VolumeMode volumeMode)
1517```
1518
1519**描述**
1520
1521设置player音频流音量模式。
1522
1523**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1524
1525**起始版本:** 18
1526
1527**参数:**
1528
1529| 名称 | 描述 |
1530| -------- | -------- |
1531| player | 指向OH_AVPlayer实例的指针。 |
1532| volumeMode | 要设置的音频流音量模式[OH_AudioStream_VolumeMode](../apis-audio-kit/_o_h_audio.md#oh_audiostream_volumemode)。 |
1533
1534**返回:**
1535
1536函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1537
1538AV_ERR_OK:成功。
1539
1540AV_ERR_INVALID_VAL:输入player为空指针或者volumeMode值无效。
1541
1542AV_ERR_INVALID_STATE:函数在无效状态下调用,应先处于准备状态。
1543
1544AV_ERR_SERVICE_DIED:系统错误。
1545
1546
1547### OH_AVPlayer_Stop()
1548
1549```
1550OH_AVErrCode OH_AVPlayer_Stop (OH_AVPlayer *player)
1551```
1552**描述**
1553停止播放。
1554
1555**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1556
1557**起始版本:** 11
1558
1559**参数:**
1560
1561| 名称 | 描述 |
1562| -------- | -------- |
1563| player | 指向OH_AVPlayer实例的指针 |
1564
1565**返回:**
1566
1567函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1568
1569AV_ERR_OK:成功将**stop**添加到任务队列。
1570
1571AV_ERR_INVALID_VAL:输入player为空指针、player Stop执行失败。
1572
1573
1574## 变量说明
1575
1576
1577### OH_PLAYER_AUDIO_DEVICE_CHANGE_REASON
1578
1579```
1580const char* OH_PLAYER_AUDIO_DEVICE_CHANGE_REASON
1581```
1582**描述**
1583获取音频音频设备变更原因的关键字, 对应值类型是int32_t。
1584
1585**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1586
1587**起始版本:** 12
1588
1589
1590### OH_PLAYER_AUDIO_INTERRUPT_FORCE
1591
1592```
1593const char* OH_PLAYER_AUDIO_INTERRUPT_FORCE
1594```
1595**描述**
1596获取音频打断FORCE类型的关键字, 对应值类型是int32_t。
1597
1598**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1599
1600**起始版本:** 12
1601
1602
1603### OH_PLAYER_AUDIO_INTERRUPT_HINT
1604
1605```
1606const char* OH_PLAYER_AUDIO_INTERRUPT_HINT
1607```
1608**描述**
1609获取音频打断HINT类型的关键字, 对应值类型是int32_t。
1610
1611**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1612
1613**起始版本:** 12
1614
1615
1616### OH_PLAYER_AUDIO_INTERRUPT_TYPE
1617
1618```
1619const char* OH_PLAYER_AUDIO_INTERRUPT_TYPE
1620```
1621**描述**
1622获取音频打断类型的关键字, 对应值类型是int32_t。
1623
1624**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1625
1626**起始版本:** 12
1627
1628
1629### OH_PLAYER_BITRATE
1630
1631```
1632const char* OH_PLAYER_BITRATE
1633```
1634**描述**
1635获取比特率信息的关键字, 对应值类型是int32_t。
1636
1637**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1638
1639**起始版本:** 12
1640
1641
1642### OH_PLAYER_BITRATE_ARRAY
1643
1644```
1645const char* OH_PLAYER_BITRATE_ARRAY
1646```
1647**描述**
1648获取比特率列表的关键字, 对应值类型是uint8_t字节数组。通过该关键字获取信息时:
1649- 需要先使用 uint8_t 类型指针变量保存比特率列表,使用 size_t 类型变量保存字节数组长度。
1650- 然后分配若干个 uint32_t 类型的存储空间,接收将 uint8_t 字节数组转换为 uint32_t 类型比特率整数值。可以参考[完整实例](../../media/media/using-ndk-avplayer-for-playback.md#完整示例)中**OHAVPlayerOnInfoCallback**函数。
1651
1652**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1653
1654**起始版本:** 12
1655
1656
1657### OH_PLAYER_BUFFERING_TYPE
1658
1659```
1660const char* OH_PLAYER_BUFFERING_TYPE
1661```
1662**描述**
1663获取缓冲更新消息类型的关键字, 对应值类型是[AVPlayerBufferingType](#avplayerbufferingtype-1)。通过该关键字获取信息时,需要先使用 int32_t 类型变量保存结果,再转换为类型[AVPlayerBufferingType](#avplayerbufferingtype-1)。
1664
1665**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1666
1667**起始版本:** 12
1668
1669
1670### OH_PLAYER_BUFFERING_VALUE
1671
1672```
1673const char* OH_PLAYER_BUFFERING_VALUE
1674```
1675**描述**
1676获取缓冲更新消息具体数值的关键字, 对应值类型是int32_t。参见[AVPlayerBufferingType](#avplayerbufferingtype-1),当缓冲更新消息类型是AVPLAYER_BUFFERING_PERCENT、AVPLAYER_BUFFERING_CACHED_DURATION时有效。
1677
1678**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1679
1680**起始版本:** 12
1681
1682
1683### OH_PLAYER_CURRENT_POSITION
1684
1685```
1686const char* OH_PLAYER_CURRENT_POSITION
1687```
1688**描述**
1689获取播放进度信息的关键字, 对应值类型是int32_t。
1690
1691**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1692
1693**起始版本:** 12
1694
1695
1696### OH_PLAYER_DURATION
1697
1698```
1699const char* OH_PLAYER_DURATION
1700```
1701**描述**
1702获取媒体资源时长信息的关键字, 对应值类型是int64_t。
1703
1704**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1705
1706**起始版本:** 12
1707
1708
1709### OH_PLAYER_IS_LIVE_STREAM
1710
1711```
1712const char* OH_PLAYER_IS_LIVE_STREAM
1713```
1714**描述**
1715获取媒体资源是否为直播类型信息的关键字, 对应值类型int32_t。
1716
17171:直播。
1718
1719**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1720
1721**起始版本:** 12
1722
1723
1724### OH_PLAYER_MESSAGE_TYPE
1725
1726```
1727const char* OH_PLAYER_MESSAGE_TYPE
1728```
1729**描述**
1730获取播放器消息信息的关键字, 对应值类型int32_t。
1731
17321:视频帧开始渲染。
1733
1734**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1735
1736**起始版本:** 12
1737
1738
1739### OH_PLAYER_PLAYBACK_SPEED
1740
1741```
1742const char* OH_PLAYER_PLAYBACK_SPEED
1743```
1744**描述**
1745获取播放倍速信息的关键字, 对应值类型是[AVPlaybackSpeed](#avplaybackspeed-1)。通过该关键字获取信息时,需要先使用 int32_t 类型变量保存结果,再转换为类型[AVPlaybackSpeed](#avplaybackspeed-1)。
1746
1747**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1748
1749**起始版本:** 12
1750
1751
1752### OH_PLAYER_SEEK_POSITION
1753
1754```
1755const char* OH_PLAYER_SEEK_POSITION
1756```
1757**描述**
1758获取Seek后播放进度信息的关键字, 对应值类型是int32_t。
1759
1760**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1761
1762**起始版本:** 12
1763
1764
1765### OH_PLAYER_STATE
1766
1767```
1768const char* OH_PLAYER_STATE
1769```
1770**描述**
1771获取播放状态的关键字, 对应值类型是int32_t。
1772
1773**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1774
1775**起始版本:** 12
1776
1777
1778### OH_PLAYER_STATE_CHANGE_REASON
1779
1780```
1781const char* OH_PLAYER_STATE_CHANGE_REASON
1782```
1783**描述**
1784获取播放状态变更原因的关键字, 对应值类型是int32_t。
1785
17861:用户操作触发;2:系统变更触发。
1787
1788**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1789
1790**起始版本:** 12
1791
1792
1793### OH_PLAYER_VIDEO_HEIGHT
1794
1795```
1796const char* OH_PLAYER_VIDEO_HEIGHT
1797```
1798**描述**
1799获取视频高度信息的关键字, 对应值类型int32_t。
1800
1801**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1802
1803**起始版本:** 12
1804
1805
1806### OH_PLAYER_VIDEO_WIDTH
1807
1808```
1809const char* OH_PLAYER_VIDEO_WIDTH
1810```
1811**描述**
1812获取视频宽度信息的关键字, 对应值类型int32_t。
1813
1814**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1815
1816**起始版本:** 12
1817
1818
1819### OH_PLAYER_VOLUME
1820
1821```
1822const char* OH_PLAYER_VOLUME
1823```
1824**描述**
1825获取音量的关键字, 对应值类型是float。
1826
1827**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1828
1829**起始版本:** 12
1830