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