• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Interface (AVPlayer)
2<!--Kit: Media Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @xushubo; @chennotfound-->
5<!--Designer: @dongyu_dy-->
6<!--Tester: @xchaosioda-->
7<!--Adviser: @zengyawen-->
8
9> **说明:**
10>
11> - 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
12> - 本Interface首批接口从API version 9开始支持。
13
14播放管理类,用于管理和播放媒体资源。在调用AVPlayer的方法前,需要先通过[createAVPlayer()](arkts-apis-media-f.md#mediacreateavplayer9)构建一个AVPlayer实例。
15
16应用需要按照实际业务需求合理使用AVPlayer对象,按需创建并及时释放,避免持有过多AVPlayer实例导致内存消耗过大,否则在一定情况下可能导致系统查杀应用。
17
18Audio/Video播放demo可参考:[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)、[视频播放开发指导](../../media/media/video-playback.md)。
19
20> **说明:**
21>
22> 在使用AVPlayer实例的方法时,建议开发者注册相关回调,主动获取当前状态变化。
23>
24> - [on('stateChange')](#onstatechange9):监听播放状态机AVPlayerState切换。
25> - [on('error')](#onerror9):监听错误事件。
26
27## 导入模块
28
29```ts
30import { media } from '@kit.MediaKit';
31```
32
33## 属性
34
35**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
36
37| 名称                                                | 类型                                                         | 只读 | 可选 | 说明                                                         |
38| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
39| url<sup>9+</sup>                                    | string                                                       | 否   | 是   | 媒体URL,只允许在**idle**状态下设置。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr、ape)。<br/>**支持路径示例**:<br>1. fd类型播放:fd://xx。<br>![](figures/zh-cn_image_url.png)<br>2. http网络播放: http\://xx。<br/>3. https网络播放: https\://xx。<br/>4. hls网络播放路径:http\://xx或者https\://xx。<br>**说明:**<br>- 设置网络播放路径,需[声明权限](../../security/AccessToken/declare-permissions.md):[ohos.permission.INTERNET](../../security/AccessToken/permissions-for-all.md#ohospermissioninternet),相关错误码: [201](../errorcode-universal.md)。<br>- 从API version 11开始不支持webm。<br> - 将资源句柄(fd)传递给 AVPlayer 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致媒体播放器数据获取异常。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
40| fdSrc<sup>9+</sup>                                  | [AVFileDescriptor](arkts-apis-media-i.md#avfiledescriptor9)                       | 否   | 是   | 媒体文件描述,只允许在**idle**状态下设置。<br/>使用场景:应用中的媒体资源被连续存储在同一个文件中。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr、ape)。<br/>**使用示例**:<br/>假设一个连续存储的媒体文件: <br/>视频1(地址偏移:0,字节长度:100);<br/>视频2(地址偏移:101,字节长度:50);<br/>视频3(地址偏移:151,字节长度:150);<br/>1. 播放视频1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br/>2. 播放视频2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }。<br/>3. 播放视频3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }。<br/>假设是一个独立的媒体文件: 请使用src=fd://xx。<br>**说明:**<br>从API version 11开始不支持webm。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
41| dataSrc<sup>10+</sup>                               | [AVDataSrcDescriptor](arkts-apis-media-i.md#avdatasrcdescriptor10)                | 否   | 是   | 流式媒体资源描述,只允许在**idle**状态下设置。<br/>使用场景:应用播放从远端下载到本地的文件,在应用未下载完整音视频资源时,提前播放已获取的资源文件。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr、ape)。<br/>**使用示例**:<br/>假设用户正在从远端服务器获取音视频媒体文件,希望下载到本地的同时播放已经下载好的部分: <br/>1.用户需要获取媒体文件的总大小size(单位为字节),获取不到时设置为-1。<br/>2.用户需要实现回调函数func用于填写数据,如果size = -1,则func形式为:func(buffer: ArrayBuffer, length: number),此时播放器只会按照顺序获取数据;否则func形式为:func(buffer: ArrayBuffer, length: number, pos: number),播放器会按需跳转并获取数据。<br/>3.用户设置AVDataSrcDescriptor {fileSize = size, callback = func}。<br/>**注意事项**:<br/>如果播放的是mp4/m4a格式用户需要保证moov字段(媒体信息字段)在mdat字段(媒体数据字段)之前,或者moov之前的字段小于10M,否则会导致解析失败无法播放。<br>**说明:**<br>从API version 11开始不支持webm。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
42| surfaceId<sup>9+</sup>                              | string                                                       | 否   | 是   | 视频窗口ID,默认无窗口。<br/>支持在**initialized**状态下设置。<br/>支持在**prepared**/**playing**/**paused**/**completed**/**stopped**状态下重新设置,重新设置时确保已经在**initialized**状态下进行设置,否则重新设置失败,重新设置后视频播放在新的窗口渲染。<br/>使用场景:视频播放的窗口渲染,纯音频播放不用设置。<br/>**使用示例**:<br/>[通过XComponent创建surfaceId](../apis-arkui/arkui-ts/ts-basic-components-xcomponent.md#getxcomponentsurfaceid9)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
43| loop<sup>9+</sup>                                   | boolean                                                      | 否   | 否   | 视频循环播放属性,默认'false',设置为'true'表示循环播放,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>直播场景不支持loop设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
44| videoScaleType<sup>9+</sup>                         | [VideoScaleType](arkts-apis-media-e.md#videoscaletype9)                           | 否   | 是   | 视频缩放模式,默认VIDEO_SCALE_TYPE_FIT,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
45| audioInterruptMode<sup>9+</sup>                     | [audio.InterruptMode](../apis-audio-kit/arkts-apis-audio-e.md#interruptmode9)       | 否   | 是   | 音频焦点模型,默认SHARE_MODE,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>在第一次调用[play()](#play9)之前设置, 以便此后中断模式生效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
46| audioRendererInfo<sup>10+</sup>                     | [audio.AudioRendererInfo](../apis-audio-kit/arkts-apis-audio-i.md#audiorendererinfo8) | 否   | 是   | 设置音频渲染信息。若媒体源包含视频,则usage默认值为STREAM_USAGE_MOVIE,否则usage默认值为STREAM_USAGE_MUSIC。rendererFlags默认值为0。若默认usage不满足需求,则须主动配置[audio.AudioRendererInfo](../apis-audio-kit/arkts-apis-audio-i.md#audiorendererinfo8)。<br/>只允许在**initialized**状态下设置。<br/>在第一次调用[prepare()](#prepare9)之前设置,以便音频渲染器信息在之后生效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
47| audioEffectMode<sup>10+</sup>                       | [audio.AudioEffectMode](../apis-audio-kit/arkts-apis-audio-e.md#audioeffectmode10)  | 否   | 是   | 设置音频音效模式,默认值为EFFECT_DEFAULT,动态属性。audioRendererInfo的usage变动时会恢复为默认值,只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
48| state<sup>9+</sup>                                  | [AVPlayerState](arkts-apis-media-t.md#avplayerstate9)                             | 是   | 否   | 音视频播放的状态,全状态有效,可查询参数。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                  |
49| currentTime<sup>9+</sup>                            | number                                                       | 是   | 否   | 视频的当前播放位置,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
50| duration<sup>9+</sup> | number                                                       | 是   | 否   | 视频时长,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
51| width<sup>9+</sup>                                  | number                                                       | 是   | 否   | 视频宽,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
52| height<sup>9+</sup>                                 | number                                                       | 是   | 否   | 视频高,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
53
54## on('stateChange')<sup>9+</sup>
55
56on(type: 'stateChange', callback: OnAVPlayerStateChangeHandle): void
57
58监听播放状态机AVPlayerState切换的事件。
59
60**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。
61
62**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
63
64**参数:**
65
66| 参数名   | 类型     | 必填 | 说明                                                         |
67| -------- | -------- | ---- | ------------------------------------------------------------ |
68| type     | string   | 是   | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 |
69| callback | [OnAVPlayerStateChangeHandle](arkts-apis-media-t.md#onavplayerstatechangehandle12) | 是   | 状态机切换事件回调方法。 |
70
71**示例:**
72
73```ts
74async function test(){
75  let avPlayer = await media.createAVPlayer();
76  avPlayer.on('stateChange', async (state: string, reason: media.StateChangeReason) => {
77    switch (state) {
78      case 'idle':
79        console.info('state idle called');
80        break;
81      case 'initialized':
82        console.info('initialized prepared called');
83        break;
84      case 'prepared':
85        console.info('state prepared called');
86        break;
87      case 'playing':
88        console.info('state playing called');
89        break;
90      case 'paused':
91        console.info('state paused called');
92        break;
93      case 'completed':
94        console.info('state completed called');
95        break;
96      case 'stopped':
97        console.info('state stopped called');
98        break;
99      case 'released':
100        console.info('state released called');
101        break;
102      case 'error':
103        console.info('state error called');
104        break;
105      default:
106        console.info('unknown state :' + state);
107        break;
108    }
109  });
110}
111```
112
113## off('stateChange')<sup>9+</sup>
114
115off(type: 'stateChange', callback?: OnAVPlayerStateChangeHandle): void
116
117取消监听播放状态机[AVPlayerState](arkts-apis-media-t.md#avplayerstate9)切换的事件。
118
119**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
120
121**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
122
123**参数:**
124
125| 参数名 | 类型   | 必填 | 说明                                                  |
126| ------ | ------ | ---- | ----------------------------------------------------- |
127| type   | string | 是   | 状态机切换事件回调类型,取消注册的事件:'stateChange' |
128| callback   | [OnAVPlayerStateChangeHandle](arkts-apis-media-t.md#onavplayerstatechangehandle12) | 否   | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 |
129
130**示例:**
131
132```ts
133async function test(){
134  let avPlayer = await media.createAVPlayer();
135  avPlayer.off('stateChange');
136}
137```
138
139## on('error')<sup>9+</sup>
140
141on(type: 'error', callback: ErrorCallback): void
142
143监听[AVPlayer](arkts-apis-media-AVPlayer.md)的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVPlayerState](arkts-apis-media-t.md#avplayerstate9)也切至error状态,用户需要通过[reset()](#reset9)或者[release()](#release9)退出播放操作。
144
145**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。
146
147**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
148
149**参数:**
150
151| 参数名   | 类型     | 必填 | 说明                                                         |
152| -------- | -------- | ---- | ------------------------------------------------------------ |
153| type     | string   | 是   | 错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。 |
154| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。 |
155
156**错误码:**
157
158以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
159
160在API version 9-13,针对网络、服务器等数据流异常,接口上报5400103;从API version 14开始,对应错误细化为错误码5411001-5411011。
161
162| 错误码ID | 错误信息              |
163| -------- | --------------------- |
164| 201      | Permission denied.     |
165| 401      | The parameter check failed. |
166| 801      | Capability not supported. |
167| 5400101  | No memory. |
168| 5400102  | Operation not allowed.|
169| 5400104  | Time out.              |
170| 5400105  | Service died.         |
171| 5400106  | Unsupported format.     |
172| 5410002  | Seek continuous unsupported.     |
173| 5411001  | IO can not find host.    |
174| 5411002  | IO connection timeout.  |
175| 5411003  | IO network abnormal.     |
176| 5411004  | IO network unavailable.  |
177| 5411005  | IO no permission.        |
178| 5411006  | IO request denied.  |
179| 5411007  | IO resource not found. |
180| 5411008  | IO SSL client cert needed.    |
181| 5411009  | IO SSL connect fail.     |
182| 5411010  | IO SSL server cert untrusted.    |
183| 5411011  | IO unsupported request.      |
184
185**示例:**
186
187```ts
188import { BusinessError } from '@kit.BasicServicesKit';
189async function test(){
190  let avPlayer = await media.createAVPlayer();
191  avPlayer.on('error', (error: BusinessError) => {
192    console.info('error happened,and error message is :' + error.message);
193    console.info('error happened,and error code is :' + error.code);
194  });
195}
196```
197
198## off('error')<sup>9+</sup>
199
200off(type: 'error', callback?: ErrorCallback): void
201
202取消监听播放的错误事件。
203
204**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
205
206**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
207
208**参数:**
209
210| 参数名 | 类型   | 必填 | 说明                                      |
211| ------ | ------ | ---- | ----------------------------------------- |
212| type   | string | 是   | 错误事件回调类型,取消注册的事件:'error' |
213| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否   | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。<br/>从API version 12开始支持此参数。 |
214
215**示例:**
216
217```ts
218import { BusinessError } from '@kit.BasicServicesKit';
219
220async function test(){
221  let avPlayer = await media.createAVPlayer();
222  avPlayer.off('error');
223}
224```
225
226## setMediaSource<sup>12+</sup>
227
228setMediaSource(src:MediaSource, strategy?: PlaybackStrategy): Promise\<void>
229
230流媒体预下载资源设置,下载url对应的流媒体数据,并暂存在内存中。[视频播放开发指导](../../media/media/video-playback.md)。通过Promise获取返回值。
231
232**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
233
234**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
235
236**参数:**
237
238| 参数名   | 类型     | 必填 | 说明                 |
239| -------- | -------- | ---- | -------------------- |
240| src | [MediaSource](arkts-apis-media-MediaSource.md) | 是   | 流媒体预下载媒体来源。 |
241| strategy | [PlaybackStrategy](arkts-apis-media-i.md#playbackstrategy12) | 否   | 流媒体预下载播放策略。 |
242
243**返回值:**
244
245| 类型           | 说明                                       |
246| -------------- | ------------------------------------------ |
247| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
248
249**错误码:**
250
251以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
252
253| 错误码ID | 错误信息                                  |
254| -------- | ----------------------------------------- |
255| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.      |
256| 5400102  | Operation not allowed. Return by promise. |
257
258**示例:**
259
260<!--code_no_check-->
261```ts
262async function test(){
263  let player = await media.createAVPlayer();
264  let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"};
265  let mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx",  headers);
266  let playStrategy : media.PlaybackStrategy = {
267    preferredWidth: 1,
268    preferredHeight: 2,
269    preferredBufferDuration: 3,
270    preferredHdr: false,
271    preferredBufferDurationForPlaying: 1,
272    thresholdForAutoQuickPlay: 5
273  };
274  player.setMediaSource(mediaSource, playStrategy);
275}
276```
277
278## setPlaybackStrategy<sup>12+</sup>
279
280setPlaybackStrategy(strategy: PlaybackStrategy): Promise\<void>
281
282设置播放策略,只能在initialized状态下调用。
283
284**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
285
286**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
287
288**参数:**
289
290| 参数名   | 类型     | 必填 | 说明                 |
291| -------- | -------- | ---- | -------------------- |
292| strategy | [PlaybackStrategy](arkts-apis-media-i.md#playbackstrategy12) | 是   | 播放策略。 |
293
294**返回值:**
295
296| 类型           | 说明                                  |
297| -------------- | ------------------------------------ |
298| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
299
300**错误码:**
301
302以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
303
304| 错误码ID | 错误信息                                  |
305| -------- | ----------------------------------------- |
306| 401      | Parameter error. Possible causes: 1. Incorrect parameter types. 2. Parameter verification failed. |
307| 5400102  | Operation not allowed. Return by promise. |
308
309**示例:**
310
311<!--code_no_check-->
312```ts
313import { common } from '@kit.AbilityKit';
314
315let player = await media.createAVPlayer();
316let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
317let fileDescriptor = await context.resourceManager.getRawFd('xxx.mp4');
318player.fdSrc = fileDescriptor
319let playStrategy : media.PlaybackStrategy = {
320  preferredWidth: 1,
321  preferredHeight: 2,
322  preferredBufferDuration: 3,
323  preferredHdr: false,
324  mutedMediaType: media.MediaType.MEDIA_TYPE_AUD,
325  preferredBufferDurationForPlaying: 1,
326  thresholdForAutoQuickPlay: 5
327};
328player.setPlaybackStrategy(playStrategy);
329```
330
331## setPlaybackRange<sup>18+</sup>
332
333setPlaybackRange(startTimeMs: number, endTimeMs: number, mode?: SeekMode) : Promise\<void>
334
335设置播放区间,并通过指定的[SeekMode](arkts-apis-media-e.md#seekmode8)跳转到区间开始位置。设置之后,只播放音视频文件设定区间内的内容。该方法异步方式返回执行结果,通过Promise获取返回值。可在**initialized**/**prepared**/**paused**/**stopped**/**completed**状态下使用。
336
337**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
338
339**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
340
341**参数:**
342
343| 参数名   | 类型                   | 必填 | 说明                        |
344| -------- | ---------------------- | ---- | --------------------------- |
345| startTimeMs | number | 是   | 区间开始位置,单位ms,取值[0, duration)。可以设置-1值,系统将会从0位置开始播放。|
346| endTimeMs | number | 是   | 区间结束位置,单位ms,取值(startTimeMs, duration]。可以设置-1值,系统将会播放到资源末尾。|
347| mode | [SeekMode](arkts-apis-media-e.md#seekmode8) | 否   | 支持SeekMode.SEEK_PREV_SYNCSeekMode.SEEK_CLOSEST, <br/>默认值: SeekMode.SEEK_PREV_SYNC。|
348
349**返回值:**
350
351| 类型           | 说明                                  |
352| -------------- | ------------------------------------ |
353| Promise\<void> | Promise对象,无返回结果。 |
354
355**错误码:**
356
357以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
358
359| 错误码ID | 错误信息                                   |
360| -------- | ------------------------------------------ |
361| 401  | The parameter check failed. Return by promise. |
362| 5400102  | Operation not allowed. Return by promise. |
363
364**示例:**
365
366```ts
367import { BusinessError } from '@kit.BasicServicesKit';
368
369async function  test(){
370  let avPlayer = await media.createAVPlayer();
371  avPlayer.setPlaybackRange(0, 6000, media.SeekMode.SEEK_CLOSEST).then(() => {
372    console.info('Succeeded setPlaybackRange');
373  }).catch((err: BusinessError) => {
374    console.error('Failed to setPlaybackRange' + err.message);
375  });
376}
377```
378
379## prepare<sup>9+</sup>
380
381prepare(callback: AsyncCallback\<void>): void
382
383准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。使用callback方式异步获取返回值。
384
385**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
386
387**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
388
389**参数:**
390
391| 参数名   | 类型     | 必填 | 说明                 |
392| -------- | -------- | ---- | -------------------- |
393| callback | AsyncCallback\<void> | 是   | 准备播放的回调方法。 |
394
395**错误码:**
396
397以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
398
399| 错误码ID | 错误信息                                   |
400| -------- | ------------------------------------------ |
401| 5400102  | Operation not allowed. Return by callback. |
402| 5400106  | Unsupported format. Return by callback.      |
403
404**示例:**
405
406```ts
407import { BusinessError } from '@kit.BasicServicesKit';
408
409async function  test(){
410  let avPlayer = await media.createAVPlayer();
411  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至initialized状态后才能调用。
412  avPlayer.prepare((err: BusinessError) => {
413    if (err) {
414      console.error('Failed to prepare,error message is :' + err.message);
415    } else {
416      console.info('Succeeded in preparing');
417    }
418  });
419}
420```
421
422## prepare<sup>9+</sup>
423
424prepare(): Promise\<void>
425
426准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。通过Promise获取返回值。
427
428如果应用使用到多个短视频频繁切换的场景,为了提升切换性能,可以考虑创建多个AVPlayer对象,提前准备下一个视频,详情参见[在线短视频流畅切换](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-smooth-switching)429
430**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
431
432**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
433
434**返回值:**
435
436| 类型           | 说明                      |
437| -------------- | ------------------------- |
438| Promise\<void> | 准备播放的Promise返回值。 |
439
440**错误码:**
441
442以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
443
444| 错误码ID | 错误信息                                  |
445| -------- | ----------------------------------------- |
446| 5400102  | Operation not allowed. Return by promise. |
447| 5400106  | Unsupported format. Return by promise.      |
448
449**示例:**
450
451```ts
452import { BusinessError } from '@kit.BasicServicesKit';
453
454async function  test(){
455  let avPlayer = await media.createAVPlayer();
456  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至initialized状态后才能调用。
457  avPlayer.prepare().then(() => {
458    console.info('Succeeded in preparing');
459  }, (err: BusinessError) => {
460    console.error('Failed to prepare,error message is :' + err.message);
461  });
462}
463```
464
465## setMediaMuted<sup>12+</sup>
466
467setMediaMuted(mediaType: MediaType,  muted: boolean ): Promise\<void>
468
469设置音频静音/取消音频静音。
470
471从API 20开始,支持设置关闭视频画面/取消关闭视频画面。
472
473只能在prepared/playing/paused/completed状态下调用。
474
475**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
476
477**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
478
479**参数:**
480
481| 参数名   | 类型     | 必填 | 说明                 |
482| -------- | -------- | ---- | -------------------- |
483| mediaType | [MediaType](arkts-apis-media-e.md#mediatype8) | 是   | 播放策略。 |
484| muted | boolean | 是   | API 12-19,仅支持设置音频格式,表示音频是否静音播放。true表示是静音播放,false表示不是静音播放。<br>API20增加支持设置视频格式,表示视频画面是否关闭,true表示关闭画面,false表示恢复画面。|
485
486**返回值:**
487
488| 类型           | 说明                      |
489| -------------- | ------------------------- |
490| Promise\<void> | 准备播放的Promise返回值。 |
491
492**错误码:**
493
494以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
495
496| 错误码ID | 错误信息 |
497| -------- | ----------------------------------------- |
498| 401 | The parameter check failed. Return by promise. |
499| 5400102 | Operation not allowed. Return by promise. |
500
501**示例:**
502
503```ts
504import { BusinessError } from '@kit.BasicServicesKit';
505
506async function  test(){
507  let avPlayer = await media.createAVPlayer();
508  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至initialized状态后才能调用。
509  avPlayer.prepare().then(() => {
510    console.info('Succeeded in preparing');
511    avPlayer.setMediaMuted(media.MediaType.MEDIA_TYPE_AUD, true);
512  }, (err: BusinessError) => {
513    console.error('Failed to prepare,error message is :' + err.message);
514  });
515}
516```
517
518## play<sup>9+</sup>
519
520play(callback: AsyncCallback\<void>): void
521
522开始播放音视频资源,只能在prepared/paused/completed状态调用。使用callback方式异步获取返回值。
523
524**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
525
526**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
527
528**参数:**
529
530| 参数名   | 类型     | 必填 | 说明                 |
531| -------- | -------- | ---- | -------------------- |
532| callback | AsyncCallback\<void> | 是   | 开始播放的回调方法。 |
533
534**错误码:**
535
536以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
537
538| 错误码ID | 错误信息                                   |
539| -------- | ------------------------------------------ |
540| 5400102  | Operation not allowed. Return by callback. |
541
542**示例:**
543
544```ts
545import { BusinessError } from '@kit.BasicServicesKit';
546
547async function  test(){
548  let avPlayer = await media.createAVPlayer();
549  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/paused/completed状态后才能调用。
550  avPlayer.play((err: BusinessError) => {
551    if (err) {
552      console.error('Failed to play,error message is :' + err.message);
553    } else {
554      console.info('Succeeded in playing');
555    }
556  });
557}
558```
559
560## play<sup>9+</sup>
561
562play(): Promise\<void>
563
564开始播放音视频资源,只能在prepared/paused/completed状态调用。通过Promise获取返回值。
565
566**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
567
568**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
569
570**返回值:**
571
572| 类型           | 说明                      |
573| -------------- | ------------------------- |
574| Promise\<void> | 开始播放的Promise返回值。 |
575
576**错误码:**
577
578以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
579
580| 错误码ID | 错误信息                                  |
581| -------- | ----------------------------------------- |
582| 5400102  | Operation not allowed. Return by promise. |
583
584**示例:**
585
586```ts
587import { BusinessError } from '@kit.BasicServicesKit';
588
589async function  test(){
590  let avPlayer = await media.createAVPlayer();
591  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/paused/completed状态后才能调用。
592  avPlayer.play().then(() => {
593    console.info('Succeeded in playing');
594  }, (err: BusinessError) => {
595    console.error('Failed to play,error message is :' + err.message);
596  });
597}
598```
599
600## pause<sup>9+</sup>
601
602pause(callback: AsyncCallback\<void>): void
603
604暂停播放音视频资源,只能在playing状态调用。使用callback方式异步获取返回值。
605
606**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
607
608**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
609
610**参数:**
611
612| 参数名   | 类型     | 必填 | 说明                 |
613| -------- | -------- | ---- | -------------------- |
614| callback | AsyncCallback\<void> | 是   | 暂停播放的回调方法。 |
615
616**错误码:**
617
618以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
619
620| 错误码ID | 错误信息                                   |
621| -------- | ------------------------------------------ |
622| 5400102  | Operation not allowed. Return by callback. |
623
624**示例:**
625
626```ts
627import { BusinessError } from '@kit.BasicServicesKit';
628
629async function  test(){
630  let avPlayer = await media.createAVPlayer();
631  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至playing状态后才能调用。
632  avPlayer.pause((err: BusinessError) => {
633    if (err) {
634      console.error('Failed to pause,error message is :' + err.message);
635    } else {
636      console.info('Succeeded in pausing');
637    }
638  });
639}
640```
641
642## pause<sup>9+</sup>
643
644pause(): Promise\<void>
645
646暂停播放音视频资源,只能在playing状态调用。通过Promise获取返回值。
647
648**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
649
650**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
651
652**返回值:**
653
654| 类型           | 说明                      |
655| -------------- | ------------------------- |
656| Promise\<void> | 暂停播放的Promise返回值。 |
657
658**错误码:**
659
660以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
661
662| 错误码ID | 错误信息                                  |
663| -------- | ----------------------------------------- |
664| 5400102  | Operation not allowed. Return by promise. |
665
666**示例:**
667
668```ts
669import { BusinessError } from '@kit.BasicServicesKit';
670
671async function  test(){
672  let avPlayer = await media.createAVPlayer();
673  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至playing状态后才能调用。
674  avPlayer.pause().then(() => {
675    console.info('Succeeded in pausing');
676  }, (err: BusinessError) => {
677    console.error('Failed to pause,error message is :' + err.message);
678  });
679}
680```
681
682## stop<sup>9+</sup>
683
684stop(callback: AsyncCallback\<void>): void
685
686停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。使用callback方式异步获取返回值。
687
688**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
689
690**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
691
692**参数:**
693
694| 参数名   | 类型     | 必填 | 说明                 |
695| -------- | -------- | ---- | -------------------- |
696| callback | AsyncCallback\<void> | 是   | 停止播放的回调方法。 |
697
698**错误码:**
699
700以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
701
702| 错误码ID | 错误信息                                   |
703| -------- | ------------------------------------------ |
704| 5400102  | Operation not allowed. Return by callback. |
705
706**示例:**
707
708```ts
709import { BusinessError } from '@kit.BasicServicesKit';
710
711async function  test(){
712  let avPlayer = await media.createAVPlayer();
713  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused/completed状态后才能调用。
714  avPlayer.stop((err: BusinessError) => {
715    if (err) {
716      console.error('Failed to stop,error message is :' + err.message);
717    } else {
718      console.info('Succeeded in stopping');
719    }
720  });
721}
722```
723
724## stop<sup>9+</sup>
725
726stop(): Promise\<void>
727
728停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。通过Promise获取返回值。
729
730**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
731
732**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
733
734**返回值:**
735
736| 类型           | 说明                      |
737| -------------- | ------------------------- |
738| Promise\<void> | 停止播放的Promise返回值。 |
739
740**错误码:**
741
742以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
743
744| 错误码ID | 错误信息                                  |
745| -------- | ----------------------------------------- |
746| 5400102  | Operation not allowed. Return by promise. |
747
748**示例:**
749
750```ts
751import { BusinessError } from '@kit.BasicServicesKit';
752
753async function  test(){
754  let avPlayer = await media.createAVPlayer();
755  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused/completed状态后才能调用。
756  avPlayer.stop().then(() => {
757    console.info('Succeeded in stopping');
758  }, (err: BusinessError) => {
759    console.error('Failed to stop,error message is :' + err.message);
760  });
761}
762```
763
764## reset<sup>9+</sup>
765
766reset(callback: AsyncCallback\<void>): void
767
768重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。使用callback方式异步获取返回值。
769
770**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
771
772**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
773
774**参数:**
775
776| 参数名   | 类型     | 必填 | 说明                 |
777| -------- | -------- | ---- | -------------------- |
778| callback | AsyncCallback\<void> | 是   | 重置播放的回调方法。 |
779
780**错误码:**
781
782以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
783
784| 错误码ID | 错误信息                                   |
785| -------- | ------------------------------------------ |
786| 5400102  | Operation not allowed. Return by callback. |
787
788**示例:**
789
790```ts
791import { BusinessError } from '@kit.BasicServicesKit';
792
793async function  test(){
794  let avPlayer = await media.createAVPlayer();
795  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至initialized/prepared/playing/paused/completed/stopped/error状态后才能调用。
796  avPlayer.reset((err: BusinessError) => {
797    if (err) {
798      console.error('Failed to reset,error message is :' + err.message);
799    } else {
800      console.info('Succeeded in resetting');
801    }
802  });
803}
804```
805
806## reset<sup>9+</sup>
807
808reset(): Promise\<void>
809
810重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。通过Promise获取返回值。
811
812**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
813
814**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
815
816**返回值:**
817
818| 类型           | 说明                      |
819| -------------- | ------------------------- |
820| Promise\<void> | 重置播放的Promise返回值。 |
821
822**错误码:**
823
824以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
825
826| 错误码ID | 错误信息                                  |
827| -------- | ----------------------------------------- |
828| 5400102  | Operation not allowed. Return by promise. |
829
830**示例:**
831
832```ts
833import { BusinessError } from '@kit.BasicServicesKit';
834
835async function  test(){
836  let avPlayer = await media.createAVPlayer();
837  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至initialized/prepared/playing/paused/completed/stopped/error状态后才能调用。
838  avPlayer.reset().then(() => {
839    console.info('Succeeded in resetting');
840  }, (err: BusinessError) => {
841    console.error('Failed to reset,error message is :' + err.message);
842  });
843}
844```
845
846## release<sup>9+</sup>
847
848release(callback: AsyncCallback\<void>): void
849
850销毁播放资源,除released状态外,均可以调用。使用callback方式异步获取返回值。
851
852**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
853
854**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
855
856**参数:**
857
858| 参数名   | 类型     | 必填 | 说明                 |
859| -------- | -------- | ---- | -------------------- |
860| callback | AsyncCallback\<void> | 是   | 销毁播放的回调方法。 |
861
862**错误码:**
863
864以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
865
866| 错误码ID | 错误信息                                   |
867| -------- | ------------------------------------------ |
868| 5400102  | Operation not allowed. Return by callback. |
869
870**示例:**
871
872```ts
873import { BusinessError } from '@kit.BasicServicesKit';
874
875async function  test(){
876  let avPlayer = await media.createAVPlayer();
877  // 此处仅为示意,实际开发中需要在stateChange事件成功触发除released以外的状态才能调用。
878  avPlayer.release((err: BusinessError) => {
879    if (err) {
880      console.error('Failed to release,error message is :' + err.message);
881    } else {
882      console.info('Succeeded in releasing');
883    }
884  });
885}
886```
887
888## release<sup>9+</sup>
889
890release(): Promise\<void>
891
892销毁播放资源,除released状态,都可以调用。通过Promise获取返回值。
893
894**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
895
896**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
897
898**返回值:**
899
900| 类型           | 说明                      |
901| -------------- | ------------------------- |
902| Promise\<void> | 销毁播放的Promise返回值。 |
903
904**错误码:**
905
906以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
907
908| 错误码ID | 错误信息                                  |
909| -------- | ----------------------------------------- |
910| 5400102  | Operation not allowed. Return by promise. |
911
912**示例:**
913
914```ts
915import { BusinessError } from '@kit.BasicServicesKit';
916
917async function  test(){
918  let avPlayer = await media.createAVPlayer();
919  // 此处仅为示意,实际开发中需要在stateChange事件成功触发除released以外的状态才能调用。
920  avPlayer.release().then(() => {
921    console.info('Succeeded in releasing');
922  }, (err: BusinessError) => {
923    console.error('Failed to release,error message is :' + err.message);
924  });
925}
926```
927
928## getTrackDescription<sup>9+</sup>
929
930getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
931
932获取音视频轨道信息,可以在prepared/playing/paused状态调用。获取所有音视轨道信息,应在数据加载回调后调用。使用callback方式异步获取返回值。
933
934**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
935
936**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
937
938**参数:**
939
940| 参数名   | 类型                                                         | 必填 | 说明                                         |
941| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- |
942| callback | AsyncCallback<Array<[MediaDescription](arkts-apis-media-i.md#mediadescription8)>> | 是   | 回调函数,当获取音视频轨道信息成功,err为undefined,data为获取到的MediaDescription数组;否则为错误对象。|
943
944**错误码:**
945
946以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
947
948| 错误码ID | 错误信息                                   |
949| -------- | ------------------------------------------ |
950| 5400102  | Operation not allowed. Return by callback. |
951
952**示例:**
953
954```ts
955import { BusinessError } from '@kit.BasicServicesKit';
956
957async function  test(){
958  let avPlayer = await media.createAVPlayer();
959  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused状态后才能调用。
960  avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
961    if ((arrList) != null) {
962      console.info('Succeeded in doing getTrackDescription');
963    } else {
964      console.error(`Failed to do getTrackDescription, error:${error}`);
965    }
966  });
967}
968```
969
970## getTrackDescription<sup>9+</sup>
971
972getTrackDescription(): Promise\<Array\<MediaDescription>>
973
974获取音视频轨道信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。
975
976**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
977
978**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
979
980**返回值:**
981
982| 类型                                                   | 说明                                              |
983| ------------------------------------------------------ | ------------------------------------------------- |
984| Promise<Array<[MediaDescription](arkts-apis-media-i.md#mediadescription8)>> | Promise对象,返回音视频轨道信息MediaDescription数组。 |
985
986**错误码:**
987
988以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
989
990| 错误码ID | 错误信息                                  |
991| -------- | ----------------------------------------- |
992| 5400102  | Operation not allowed. Return by promise. |
993
994**示例:**
995
996```ts
997import { BusinessError } from '@kit.BasicServicesKit';
998
999async function  test(){
1000  let avPlayer = await media.createAVPlayer();
1001  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused状态后才能调用。
1002  avPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
1003    console.info('Succeeded in getting TrackDescription');
1004  }).catch((error: BusinessError) => {
1005    console.error(`Failed to get TrackDescription, error:${error}`);
1006  });
1007}
1008```
1009
1010## getSelectedTracks<sup>12+</sup>
1011
1012getSelectedTracks(): Promise\<Array\<number>>
1013
1014获取已选择的音视频轨道索引,可以在prepared/playing/paused状态调用。通过Promise获取返回值。
1015
1016**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1017
1018**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1019
1020**返回值:**
1021
1022| 类型                                                   | 说明                                              |
1023| ------------------------------------------------------ | ------------------------------------------------- |
1024| Promise\<Array\<number>> | Promise对象,返回已选择音视频轨道索引数组。 |
1025
1026**错误码:**
1027
1028以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1029
1030| 错误码ID | 错误信息                                  |
1031| -------- | ----------------------------------------- |
1032| 5400102  | Operation not allowed. |
1033
1034**示例:**
1035
1036```ts
1037import { BusinessError } from '@kit.BasicServicesKit';
1038
1039async function  test(){
1040  let avPlayer = await media.createAVPlayer();
1041  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused状态后才能调用。
1042  avPlayer.getSelectedTracks().then((arrList: Array<number>) => {
1043    console.info('Succeeded in getting SelectedTracks');
1044  }).catch((error: BusinessError) => {
1045    console.error(`Failed to get SelectedTracks, error:${error}`);
1046  });
1047}
1048```
1049
1050## getPlaybackInfo<sup>12+</sup>
1051
1052getPlaybackInfo(): Promise\<PlaybackInfo>
1053
1054获取播放过程信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。
1055
1056**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1057
1058**返回值:**
1059
1060| 类型                                                   | 说明                                              |
1061| ------------------------------------------------------ | ------------------------------------------------- |
1062| Promise<[PlaybackInfo](arkts-apis-media-i.md#playbackinfo12)> | Promise对象,返回播放器信息PlaybackInfo。 |
1063
1064**示例:**
1065
1066```ts
1067import { BusinessError } from '@kit.BasicServicesKit';
1068
1069let avPlayer: media.AVPlayer | undefined = undefined;
1070let playbackInfo: media.PlaybackInfo | undefined = undefined;
1071media.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => {
1072  if (player != null) {
1073    avPlayer = player;
1074    console.info(`Succeeded in creating AVPlayer`);
1075    if (avPlayer) {
1076      try {
1077        playbackInfo = await avPlayer.getPlaybackInfo();
1078        console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值。
1079      } catch (error) {
1080        console.error(`error = ${error}`);
1081      }
1082    }
1083  } else {
1084    console.error(`Failed to create AVPlayer, error message:${err.message}`);
1085  }
1086});
1087```
1088
1089## getPlaybackPosition<sup>18+</sup>
1090
1091getPlaybackPosition(): number
1092
1093获取当前播放位置,可以在prepared/playing/paused/completed状态调用。
1094
1095**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
1096
1097**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1098
1099**返回值:**
1100
1101| 类型                                                   | 说明                                              |
1102| ------------------------------------------------------ | ------------------------------------------------- |
1103| number | 返回当前播放位置的时间,单位:毫秒(ms)。|
1104
1105**错误码:**
1106
1107以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1108
1109| 错误码ID | 错误信息                                  |
1110| -------- | ----------------------------------------- |
1111| 5400102  | Operation not allowed. |
1112
1113**示例:**
1114
1115```ts
1116import { BusinessError } from '@kit.BasicServicesKit';
1117
1118async function  test(){
1119  let avPlayer = await media.createAVPlayer();
1120  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至initialized状态后才能调用。
1121  avPlayer.prepare().then(() => {
1122    console.info('Succeeded in preparing');
1123    let playbackPosition: number = avPlayer.getPlaybackPosition();
1124    console.info(`AVPlayer getPlaybackPosition== ${playbackPosition}`);
1125  }, (err: BusinessError) => {
1126    console.error('Failed to prepare,error message is :' + err.message);
1127  });
1128}
1129```
1130
1131## selectTrack<sup>12+</sup>
1132
1133selectTrack(index: number, mode?: SwitchMode): Promise\<void>
1134
1135使用AVPlayer播放多音视频轨资源时,选择指定轨道播放,通过Promise获取返回值。
1136
1137**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1138
1139**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1140
1141**参数:**
1142
1143| 参数名   | 类型     | 必填 | 说明                 |
1144| -------- | -------- | ---- | -------------------- |
1145| index | number | 是   | 多音视频资源的轨道索引,可通过[getTrackDescription](#gettrackdescription9-1)接口获取当前资源的所有轨道信息[MediaDescription](arkts-apis-media-i.md#mediadescription8)。 |
1146| mode   | [SwitchMode](arkts-apis-media-e.md#switchmode12) | 否   | 切换视频轨道模式,默认为SMOOTH模式,**仅在DASH协议网络流视频轨切换时生效**,其他场景当前暂不支持。 |
1147
1148**返回值:**
1149
1150| 类型           | 说明                      |
1151| -------------- | ------------------------- |
1152| Promise\<void> | 选择轨道完成的Promise返回值。 |
1153
1154**错误码:**
1155
1156以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1157
1158| 错误码ID | 错误信息                                  |
1159| -------- | ----------------------------------------- |
1160| 401      | The parameter check failed. Return by promise.       |
1161| 5400102  | Operation not allowed. Return by promise. |
1162
1163**示例:**
1164
1165<!--code_no_check-->
1166```ts
1167import { BusinessError } from '@kit.BasicServicesKit';
1168
1169let avPlayer: media.AVPlayer = await media.createAVPlayer();
1170let audioTrackIndex: Object = 0;
1171avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
1172  if (arrList != null) {
1173    for (let i = 0; i < arrList.length; i++) {
1174      if (i != 0) {
1175        // 获取音频轨道列表。
1176        audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX];
1177      }
1178    }
1179  } else {
1180    console.error(`Failed to get TrackDescription, error:${error}`);
1181  }
1182});
1183
1184// 选择其中一个音频轨道。
1185avPlayer.selectTrack(parseInt(audioTrackIndex.toString()));
1186```
1187
1188## deselectTrack<sup>12+</sup>
1189
1190deselectTrack(index: number): Promise\<void>
1191
1192使用AVPlayer播放多音轨视频时取消指定音视频轨道播放,通过Promise获取返回值。
1193
1194**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1195
1196**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1197
1198**参数:**
1199
1200| 参数名   | 类型     | 必填 | 说明                 |
1201| -------- | -------- | ---- | -------------------- |
1202| index | number | 是   | 多音视频资源的轨道索引,来自[getTrackDescription](#gettrackdescription9-1)接口所获取的轨道信息[MediaDescription](arkts-apis-media-i.md#mediadescription8)。 |
1203
1204**返回值:**
1205
1206| 类型           | 说明                      |
1207| -------------- | ------------------------- |
1208| Promise\<void> | 取消选择曲目完成的Promise返回值。 |
1209
1210**错误码:**
1211
1212以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1213
1214| 错误码ID | 错误信息                                  |
1215| -------- | ----------------------------------------- |
1216| 401      | The parameter check failed. Return by promise.       |
1217| 5400102  | Operation not allowed. Return by promise. |
1218
1219**示例:**
1220
1221<!--code_no_check-->
1222```ts
1223import { BusinessError } from '@kit.BasicServicesKit';
1224
1225let avPlayer: media.AVPlayer = await media.createAVPlayer();
1226let audioTrackIndex: Object = 0;
1227avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
1228  if (arrList != null) {
1229    for (let i = 0; i < arrList.length; i++) {
1230      if (i != 0) {
1231        // 获取音频轨道列表。
1232        audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX];
1233      }
1234    }
1235  } else {
1236    console.error(`Failed to get TrackDescription, error:${error}`);
1237  }
1238});
1239
1240// 选择其中一个音频轨道。
1241avPlayer.selectTrack(parseInt(audioTrackIndex.toString()));
1242// 取消选择上次选中的音频轨道,并恢复到默认音频轨道。
1243avPlayer.deselectTrack(parseInt(audioTrackIndex.toString()));
1244```
1245
1246## setDecryptionConfig<sup>11+</sup>
1247
1248setDecryptionConfig(mediaKeySession: drm.MediaKeySession, secureVideoPath: boolean): void
1249
1250设置解密配置。当收到[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)时,需根据事件上报的信息创建相关配置并设置解密配置,否则无法播放。
1251
1252**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1253
1254**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1255
1256**参数:**
1257
1258| 参数名   | 类型                                                         | 必填 | 说明                                         |
1259| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- |
1260| mediaKeySession | [drm.MediaKeySession](../apis-drm-kit/arkts-apis-drm-MediaKeySession.md) | 是   | 解密会话 |
1261| secureVideoPath | boolean | 是 | 安全视频通路,true表示选择安全视频通路,false表示选择非安全视频通路 |
1262
1263**错误码:**
1264
1265以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1266
1267| 错误码ID | 错误信息                                  |
1268| -------- | ----------------------------------------- |
1269| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
1270
1271**示例:**
1272
1273关于drm模块的示例具体可见[@ohos.multimedia.drm](../apis-drm-kit/arkts-apis-drm.md)。
1274
1275```ts
1276import { drm } from '@kit.DrmKit';
1277
1278async function  test(){
1279  let avPlayer = await media.createAVPlayer();
1280  // 创建MediaKeySystem系统。
1281  let keySystem:drm.MediaKeySystem = drm.createMediaKeySystem('com.clearplay.drm');
1282  // 创建MediaKeySession解密会话。
1283  let keySession:drm.MediaKeySession = keySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
1284  // 生成许可证请求、设置许可证响应等。
1285  // 安全视频通路标志。
1286  let secureVideoPath:boolean = false;
1287  // 设置解密配置。
1288  avPlayer.setDecryptionConfig(keySession, secureVideoPath);
1289}
1290```
1291
1292## getMediaKeySystemInfos<sup>11+</sup>
1293
1294getMediaKeySystemInfos(): Array\<drm.MediaKeySystemInfo>
1295
1296获取当前播放的媒体资源的MediaKeySystemInfo。需要在[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)触发成功后才能调用。
1297
1298**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1299
1300**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1301
1302**返回值:**
1303
1304| 类型                                                   | 说明                                              |
1305| ------------------------------------------------------ | ------------------------------------------------- |
1306|  Array<[drm.MediaKeySystemInfo](../apis-drm-kit/arkts-apis-drm-i.md#mediakeysysteminfo)> | MediaKeySystemInfo数组,MediaKeySystemInfo具有uuid和pssh两个属性。 |
1307
1308**示例:**
1309
1310```ts
1311import { drm } from '@kit.DrmKit';
1312
1313async function  test(){
1314  let avPlayer = await media.createAVPlayer();
1315  // 此处仅为示意,实际开发中需要在mediaKeySystemInfoUpdate事件触发成功后才能调用。
1316  const infos = avPlayer.getMediaKeySystemInfos();
1317  console.info('GetMediaKeySystemInfos count: ' + infos.length);
1318  for (let i = 0; i < infos.length; i++) {
1319    console.info('GetMediaKeySystemInfos uuid: ' + infos[i]["uuid"]);
1320    console.info('GetMediaKeySystemInfos pssh: ' + infos[i]["pssh"]);
1321  }
1322}
1323```
1324
1325## seek<sup>9+</sup>
1326
1327seek(timeMs: number, mode?:SeekMode): void
1328
1329跳转到指定播放位置,只能在prepared/playing/paused/completed状态调用,可以通过[seekDone事件](#onseekdone9)确认是否生效。
1330注:直播场景不支持seek。
1331
1332**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1333
1334**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1335
1336**参数:**
1337
1338| 参数名 | 类型                   | 必填 | 说明                                                         |
1339| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
1340| timeMs | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, [duration](#属性)]。SEEK_CONTINUOU模式可以额外取值-1,用于表示SEEK_CONTINUOUS模式结束。 |
1341| mode   | [SeekMode](arkts-apis-media-e.md#seekmode8) | 否   | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式,**仅在视频资源播放时设置**。 |
1342
1343**示例:**
1344
1345```ts
1346async function  test(){
1347  let avPlayer = await media.createAVPlayer();
1348  let seekTime: number = 1000;
1349  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused/completed状态后才能调用。
1350  avPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC);
1351}
1352```
1353
1354```ts
1355async function  test(){
1356  // SEEK_CONTINUOUS 可以结合Slider的onChange回调方法进行对应处理,当slideMode为Moving时,触发拖动过程的SeekContinuous。
1357  let avPlayer = await media.createAVPlayer();
1358  let slideMovingTime: number = 2000;
1359  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused/completed状态后才能调用。
1360  avPlayer.seek(slideMovingTime, media.SeekMode.SEEK_CONTINUOUS);
1361
1362  // 当slideMode为End时,调用seek(-1, media.SeekMode.SEEK_CONTINUOUS)结束seek。
1363  avPlayer.seek(-1, media.SeekMode.SEEK_CONTINUOUS);
1364}
1365```
1366
1367## isSeekContinuousSupported<sup>18+</sup>
1368
1369isSeekContinuousSupported() : boolean
1370
1371查询媒体源是否支持以SEEK_CONTINUOUS模式[SeekMode](arkts-apis-media-e.md#seekmode8)进行[seek](#seek9),在prepared/playing/paused/completed状态调用返回实际值,其余状态调用返回false。对于不支持SEEK_CONTINUOUS模式进行seek的设备,返回false。
1372
1373**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
1374
1375**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1376
1377**返回值:**
1378
1379| 类型           | 说明                                       |
1380| -------------- | ------------------------------------------ |
1381| boolean | 媒体源是否支持以SEEK_CONTINUOUS模式进行seek。 |
1382
1383**示例:**
1384
1385```ts
1386async function  test(){
1387  let avPlayer = await media.createAVPlayer();
1388  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused/completed状态后才能调用。
1389  let isSupported = avPlayer.isSeekContinuousSupported();
1390}
1391```
1392
1393## on('seekDone')<sup>9+</sup>
1394
1395on(type: 'seekDone', callback: Callback\<number>): void
1396
1397监听seek生效的事件。
1398
1399**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1400
1401**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1402
1403**参数:**
1404
1405| 参数名   | 类型     | 必填 | 说明                                                         |
1406| -------- | -------- | ---- | ------------------------------------------------------------ |
1407| type     | string   | 是   | seek生效的事件回调类型,支持的事件:'seekDone',除SEEK_CONTINUOUS外的[SeekMode](arkts-apis-media-e.md#seekmode8)每次调用seek后都会回调此事件。 |
1408| callback | Callback\<number> | 是   | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](arkts-apis-media-e.md#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。 |
1409
1410**示例:**
1411
1412```ts
1413async function  test(){
1414  let avPlayer = await media.createAVPlayer();
1415  avPlayer.on('seekDone', (seekDoneTime:number) => {
1416    console.info('seekDone called,and seek time is:' + seekDoneTime);
1417  });
1418}
1419```
1420
1421## off('seekDone')<sup>9+</sup>
1422
1423off(type: 'seekDone', callback?: Callback\<number>): void
1424
1425取消监听seek生效的事件。
1426
1427**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1428
1429**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1430
1431**参数:**
1432
1433| 参数名 | 类型   | 必填 | 说明                                                 |
1434| ------ | ------ | ---- | ---------------------------------------------------- |
1435| type   | string | 是   | seek生效的事件回调类型,取消注册的事件:'seekDone'。 |
1436| callback | Callback\<number> | 否   | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](arkts-apis-media-e.md#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。<br/>从API version 12开始支持此参数。 |
1437
1438**示例:**
1439
1440```ts
1441async function  test(){
1442  let avPlayer = await media.createAVPlayer();
1443  avPlayer.off('seekDone');
1444}
1445```
1446
1447## setSpeed<sup>9+</sup>
1448
1449setSpeed(speed: PlaybackSpeed): void
1450
1451设置倍速模式,只能在prepared/playing/paused/completed状态调用,可以通过[speedDone事件](#onspeeddone9)确认是否生效。
1452注:直播场景不支持setSpeed。
1453
1454**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1455
1456**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1457
1458**参数:**
1459
1460| 参数名 | 类型                             | 必填 | 说明               |
1461| ------ | -------------------------------- | ---- | ------------------ |
1462| speed  | [PlaybackSpeed](arkts-apis-media-e.md#playbackspeed8) | 是   | 指定播放倍速模式。 |
1463
1464**示例:**
1465
1466```ts
1467async function  test(){
1468  let avPlayer = await media.createAVPlayer();
1469  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused/completed状态后才能调用。
1470  avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X);
1471}
1472```
1473
1474## on('speedDone')<sup>9+</sup>
1475
1476on(type: 'speedDone', callback: Callback\<number>): void
1477
1478监听setSpeed生效的事件。
1479
1480**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1481
1482**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1483
1484**参数:**
1485
1486| 参数名   | 类型     | 必填 | 说明                                                         |
1487| -------- | -------- | ---- | ------------------------------------------------------------ |
1488| type     | string   | 是   | setSpeed生效的事件回调类型,支持的事件:'speedDone',每次调用setSpeed后都会回调此事件。 |
1489| callback | Callback\<number> | 是   | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](arkts-apis-media-e.md#playbackspeed8)。 |
1490
1491**示例:**
1492
1493```ts
1494async function  test(){
1495  let avPlayer = await media.createAVPlayer();
1496  avPlayer.on('speedDone', (speed:number) => {
1497    console.info('speedDone called,and speed value is:' + speed);
1498  });
1499}
1500```
1501
1502## off('speedDone')<sup>9+</sup>
1503
1504off(type: 'speedDone', callback?: Callback\<number>): void
1505
1506取消监听setSpeed生效的事件。
1507
1508**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
1509
1510**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1511
1512**参数:**
1513
1514| 参数名 | 类型   | 必填 | 说明                                                      |
1515| ------ | ------ | ---- | --------------------------------------------------------- |
1516| type   | string | 是   | setSpeed生效的事件回调类型,取消注册的事件:'speedDone'。 |
1517| callback | Callback\<number> | 否   | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](arkts-apis-media-e.md#playbackspeed8)。<br/>从API version 12开始支持此参数。 |
1518
1519**示例:**
1520
1521```ts
1522async function  test(){
1523  let avPlayer = await media.createAVPlayer();
1524  avPlayer.off('speedDone');
1525}
1526```
1527
1528## setPlaybackRate<sup>20+</sup>
1529
1530setPlaybackRate(rate: number): void
1531
1532设置倍速模式。只能在prepared/playing/paused/completed状态调用,取值范围是[0.125, 4.0],可以通过[playbackRateDone](#onplaybackratedone20)事件确认是否生效。
1533
1534> **注意:**
1535>
1536> 直播场景不支持setPlaybackRate。
1537
1538**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
1539
1540**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1541
1542**参数:**
1543
1544| 参数名 | 类型                             | 必填 | 说明               |
1545| ------ | -------------------------------- | ---- | ------------------ |
1546| rate  | number | 是   | 指定播放倍速速率,取值范围为[0.125, 4.0]。 |
1547
1548**错误码:**
1549
1550以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1551
1552| 错误码ID | 错误信息                                   |
1553| -------- | ------------------------------------------ |
1554| 5400108  | The parameter check failed, parameter value out of range.      |
1555| 5400102  | Operation not allowed,if invalid state or live stream.      |
1556
1557**示例:**
1558
1559```ts
1560async function test(){
1561  let avPlayer = await media.createAVPlayer();
1562  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused/completed状态后才能调用。
1563  avPlayer.setPlaybackRate(2.0);
1564}
1565```
1566
1567## on('playbackRateDone')<sup>20+</sup>
1568
1569on(type: 'playbackRateDone', callback: OnPlaybackRateDone): void
1570
1571监听[setPlaybackRate](#setplaybackrate20)生效的事件。
1572
1573**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
1574
1575**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1576
1577**参数:**
1578
1579| 参数名   | 类型     | 必填 | 说明                                                         |
1580| -------- | -------- | ---- | ------------------------------------------------------------ |
1581| type     | string   | 是   | setPlaybackRate生效的事件回调类型,支持的事件:'playbackRateDone',每次调用setPlaybackRate后都会回调此事件。 |
1582| callback | [OnPlaybackRateDone](#onplaybackratedone20) | 是   | setPlaybackRate生效的事件回调方法,上报设置后的播放速率。<br/>从API version 20开始支持此参数。 |
1583
1584**示例:**
1585
1586```ts
1587async function test(){
1588  let avPlayer = await media.createAVPlayer();
1589  avPlayer.on('playbackRateDone', (rate:number) => {
1590    console.info('playbackRateDone called,and rate value is:' + rate);
1591  });
1592}
1593```
1594
1595## off('playbackRateDone')<sup>20+</sup>
1596
1597off(type: 'playbackRateDone', callback?: OnPlaybackRateDone): void
1598
1599取消监听[setPlaybackRate](#setplaybackrate20)生效的事件。
1600
1601**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
1602
1603**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1604
1605**参数:**
1606
1607| 参数名 | 类型   | 必填 | 说明                                                      |
1608| ------ | ------ | ---- | --------------------------------------------------------- |
1609| type   | string | 是   | setPlaybackRate生效的事件回调类型,取消注册的事件:'playbackRateDone'。 |
1610| callback | [OnPlaybackRateDone](#onplaybackratedone20) | 否   |  setPlaybackRate生效的事件回调方法,上报设置后的播放速率。如填写该参数,则仅取消注册此回调方法,否则取消注册playbackRateDone事件的所有回调方法。<br/>从API version 20开始支持此参数。 |
1611
1612**示例:**
1613
1614```ts
1615async function test(){
1616  let avPlayer = await media.createAVPlayer();
1617  avPlayer.off('playbackRateDone');
1618}
1619```
1620
1621## setBitrate<sup>9+</sup>
1622
1623setBitrate(bitrate: number): void
1624
1625设置比特率,以播放所指定比特率的流媒体资源,当前仅对**HLS/DASH协议网络流**有效。默认情况下,AVPlayer会根据网络连接速度选择合适的比特率。只能在prepared/playing/paused/completed状态调用,可以通过[bitrateDone](#onbitratedone9)事件确认是否生效。
1626
1627**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1628
1629**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1630
1631**参数:**
1632
1633| 参数名  | 类型   | 必填 | 说明                                                         |
1634| ------- | ------ | ---- | ------------------------------------------------------------ |
1635| bitrate | number | 是   | 指定比特率,须通过[availableBitrates](#onavailablebitrates9)事件获得当前HLS/DASH协议网络流可用的比特率列表,如果用户指定的比特率不在此列表中,则播放器将从可用比特率列表中选择最接近的比特率。如果通过availableBitrates事件获得的比特率列表长度为0,则不支持指定比特率,也不会产生bitrateDone回调。 |
1636
1637**示例:**
1638
1639```ts
1640async function  test(){
1641  let avPlayer = await media.createAVPlayer();
1642  let bitrate: number = 96000;
1643  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至prepared/playing/paused/completed状态后才能调用。
1644  avPlayer.setBitrate(bitrate);
1645}
1646```
1647
1648## on('bitrateDone')<sup>9+</sup>
1649
1650on(type: 'bitrateDone', callback: Callback\<number>): void
1651
1652监听setBitrate生效的事件。
1653
1654**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1655
1656**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1657
1658**参数:**
1659
1660| 参数名   | 类型     | 必填 | 说明                                                         |
1661| -------- | -------- | ---- | ------------------------------------------------------------ |
1662| type     | string   | 是   | setBitrate生效的事件回调类型,支持的事件:'bitrateDone',每次调用setBitrate后都会回调此事件。 |
1663| callback | Callback\<number> | 是   | setBitrate生效的事件回调方法,上报生效的比特率。             |
1664
1665**示例:**
1666
1667```ts
1668async function  test(){
1669  let avPlayer = await media.createAVPlayer();
1670  avPlayer.on('bitrateDone', (bitrate:number) => {
1671    console.info('bitrateDone called,and bitrate value is:' + bitrate);
1672  });
1673}
1674```
1675
1676## off('bitrateDone')<sup>9+</sup>
1677
1678off(type: 'bitrateDone', callback?: Callback\<number>): void
1679
1680取消监听setBitrate生效的事件。
1681
1682**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
1683
1684**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1685
1686**参数:**
1687
1688| 参数名 | 类型   | 必填 | 说明                                                         |
1689| ------ | ------ | ---- | ------------------------------------------------------------ |
1690| type   | string | 是   | setBitrate生效的事件回调类型,取消注册的事件:'bitrateDone'。 |
1691| callback | Callback\<number> | 否   | setBitrate生效的事件回调方法,上报生效的比特率。<br/>从API version 12开始支持此参数。             |
1692
1693**示例:**
1694
1695```ts
1696async function  test(){
1697  let avPlayer = await media.createAVPlayer();
1698  avPlayer.off('bitrateDone');
1699}
1700```
1701
1702## on('availableBitrates')<sup>9+</sup>
1703
1704on(type: 'availableBitrates', callback: Callback\<Array\<number>>): void
1705
1706监听HLS/DASH协议网络流可用的比特率列表,只会在切换prepared状态后上报。
1707
1708**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1709
1710**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1711
1712**参数:**
1713
1714| 参数名   | 类型     | 必填 | 说明                                                         |
1715| -------- | -------- | ---- | ------------------------------------------------------------ |
1716| type     | string   | 是   | HLS/DASH协议网络流可用比特率上报事件回调类型,支持的事件:'availableBitrates',只会在prepared之后上报一次。 |
1717| callback | Callback\<Array\<number>> | 是   | HLS/DASH协议网络流可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。 |
1718
1719**示例:**
1720
1721```ts
1722async function  test(){
1723  let avPlayer = await media.createAVPlayer();
1724  avPlayer.on('availableBitrates', (bitrates: Array<number>) => {
1725    console.info('availableBitrates called,and availableBitrates length is:' + bitrates.length);
1726  });
1727}
1728```
1729
1730## off('availableBitrates')<sup>9+</sup>
1731
1732off(type: 'availableBitrates', callback?: Callback\<Array\<number>>): void
1733
1734取消监听HLS/DASH协议网络流可用的比特率列表,调用[prepare](#prepare9)后,上报此事件。
1735
1736**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1737
1738**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1739
1740**参数:**
1741
1742| 参数名 | 类型   | 必填 | 说明                                                         |
1743| ------ | ------ | ---- | ------------------------------------------------------------ |
1744| type   | string | 是   | HLS/DASH协议网络流可用比特率上报事件回调类型,取消注册的事件:'availableBitrates'。 |
1745| callback | Callback\<Array\<number>> | 否   | HLS/DASH协议网络流可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。<br/>从API version 12开始支持此参数。 |
1746
1747**示例:**
1748
1749```ts
1750async function test(){
1751  let avPlayer = await media.createAVPlayer();
1752  avPlayer.off('availableBitrates');
1753}
1754```
1755
1756
1757## on('mediaKeySystemInfoUpdate')<sup>11+</sup>
1758
1759on(type: 'mediaKeySystemInfoUpdate', callback: Callback\<Array\<drm.MediaKeySystemInfo>>): void
1760
1761监听mediaKeySystemInfoUpdate事件。
1762
1763**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1764
1765**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1766
1767**参数:**
1768
1769| 参数名   | 类型     | 必填 | 说明                                                         |
1770| -------- | -------- | ---- | ------------------------------------------------------------ |
1771| type     | string   | 是   | 版权保护信息更新上报事件回调类型,支持的事件:'mediaKeySystemInfoUpdate',当播放内容的版权保护信息更新时上报事件。 |
1772| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/arkts-apis-drm-i.md#mediakeysysteminfo)>> | 是   | 版权保护信息更新上报事件回调方法,上报MediaKeySystemInfo数组。 |
1773
1774**示例:**
1775
1776```ts
1777import { drm } from '@kit.DrmKit';
1778
1779async function test(){
1780  let avPlayer = await media.createAVPlayer();
1781  avPlayer.on('mediaKeySystemInfoUpdate', (mediaKeySystemInfo: Array<drm.MediaKeySystemInfo>) => {
1782    for (let i = 0; i < mediaKeySystemInfo.length; i++) {
1783      console.info('mediaKeySystemInfoUpdate happened uuid: ' + mediaKeySystemInfo[i]["uuid"]);
1784      console.info('mediaKeySystemInfoUpdate happened pssh: ' + mediaKeySystemInfo[i]["pssh"]);
1785    }
1786  });
1787}
1788```
1789
1790## off('mediaKeySystemInfoUpdate')<sup>11+</sup>
1791
1792off(type: 'mediaKeySystemInfoUpdate', callback?: Callback\<Array\<drm.MediaKeySystemInfo>>): void;
1793
1794取消监听mediaKeySystemInfoUpdate事件。
1795
1796**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1797
1798**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1799
1800**参数:**
1801
1802| 参数名 | 类型   | 必填 | 说明                                                         |
1803| ------ | ------ | ---- | ------------------------------------------------------------ |
1804| type   | string | 是   | 版权保护信息更新上报事件回调类型,取消注册的事件:'mediaKeySystemInfoUpdate'。 |
1805| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/arkts-apis-drm-i.md#mediakeysysteminfo)>> | 否   | 版权保护信息更新上报事件回调方法,上报版权保护信息数组。如填写该参数,则仅取消注册此回调方法,否则取消注册mediaKeySystemInfoUpdate事件的所有回调方法。 |
1806
1807**示例:**
1808
1809```ts
1810async function test(){
1811  let avPlayer = await media.createAVPlayer();
1812  avPlayer.off('mediaKeySystemInfoUpdate');
1813}
1814```
1815
1816## setVolume<sup>9+</sup>
1817
1818setVolume(volume: number): void
1819
1820设置媒体播放音量,只能在prepared/playing/paused/completed状态调用,可以通过[volumeChange事件](#onvolumechange9)确认是否生效。
1821
1822**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1823
1824**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1825
1826**参数:**
1827
1828| 参数名 | 类型   | 必填 | 说明                                                         |
1829| ------ | ------ | ---- | ------------------------------------------------------------ |
1830| volume | number | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
1831
1832**示例:**
1833
1834```ts
1835async function test(){
1836  let avPlayer = await media.createAVPlayer();
1837  let volume: number = 1.0;
1838  avPlayer.setVolume(volume);
1839}
1840```
1841
1842## on('volumeChange')<sup>9+</sup>
1843
1844on(type: 'volumeChange', callback: Callback\<number>): void
1845
1846监听setVolume生效的事件。
1847
1848**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1849
1850**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1851
1852**参数:**
1853
1854| 参数名   | 类型     | 必填 | 说明                                                         |
1855| -------- | -------- | ---- | ------------------------------------------------------------ |
1856| type     | string   | 是   | setVolume生效的事件回调类型,支持的事件:'volumeChange',每次调用setVolume后都会回调此事件。 |
1857| callback | Callback\<number> | 是   | setVolume生效的事件回调方法,上报生效的媒体音量。            |
1858
1859**示例:**
1860
1861```ts
1862async function test(){
1863  let avPlayer = await media.createAVPlayer();
1864  avPlayer.on('volumeChange', (vol: number) => {
1865    console.info('volumeChange called,and new volume is :' + vol);
1866  });
1867}
1868```
1869
1870## off('volumeChange')<sup>9+</sup>
1871
1872off(type: 'volumeChange', callback?: Callback\<number>): void
1873
1874取消监听setVolume生效的事件。
1875
1876**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
1877
1878**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1879
1880**参数:**
1881
1882| 参数名 | 类型   | 必填 | 说明                                                         |
1883| ------ | ------ | ---- | ------------------------------------------------------------ |
1884| type   | string | 是   | setVolume生效的事件回调类型,取消注册的事件:'volumeChange'。 |
1885| callback | Callback\<number> | 否   | setVolume生效的事件回调方法,上报生效的媒体音量。<br/>从API version 12开始支持此参数。            |
1886
1887**示例:**
1888
1889```ts
1890async function test(){
1891  let avPlayer = await media.createAVPlayer();
1892  avPlayer.off('volumeChange');
1893}
1894```
1895
1896## on('endOfStream')<sup>9+</sup>
1897
1898on(type: 'endOfStream', callback: Callback\<void>): void
1899
1900监听资源播放至结尾的事件;如果用户设置[loop](#属性)=true,播放会跳转至开头重播;如果用户没有设置loop,会通过[stateChange](#onstatechange9)上报completed状态。
1901
1902**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1903
1904**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1905
1906**参数:**
1907
1908| 参数名   | 类型     | 必填 | 说明                                                         |
1909| -------- | -------- | ---- | ------------------------------------------------------------ |
1910| type     | string   | 是   | 资源播放至结尾的事件回调类型,支持的事件:'endOfStream',当播放至结尾时会上报此事件。 |
1911| callback | Callback\<void> | 是   | 资源播放至结尾的事件回调方法。                               |
1912
1913**示例:**
1914
1915```ts
1916async function test(){
1917  let avPlayer = await media.createAVPlayer();
1918  avPlayer.on('endOfStream', () => {
1919    console.info('endOfStream called');
1920  });
1921}
1922```
1923
1924## off('endOfStream')<sup>9+</sup>
1925
1926off(type: 'endOfStream', callback?: Callback\<void>): void
1927
1928取消监听资源播放至结尾的事件。
1929
1930**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
1931
1932**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1933
1934**参数:**
1935
1936| 参数名 | 类型   | 必填 | 说明                                                         |
1937| ------ | ------ | ---- | ------------------------------------------------------------ |
1938| type   | string | 是   | 资源播放至结尾的事件回调类型,取消注册的事件:'endOfStream'。 |
1939| callback | Callback\<void> | 否   | 资源播放至结尾的事件回调方法。<br/>从API version 12开始支持此参数。                               |
1940
1941**示例:**
1942
1943```ts
1944async function test(){
1945  let avPlayer = await media.createAVPlayer();
1946  avPlayer.off('endOfStream');
1947}
1948```
1949
1950## on('timeUpdate')<sup>9+</sup>
1951
1952on(type: 'timeUpdate', callback: Callback\<number>): void
1953
1954监听资源播放当前时间,单位为毫秒(ms),用于刷新进度条当前位置,默认间隔100ms时间上报,因用户操作(seek)产生的时间变化会立刻上报。
1955
1956注:直播场景不支持timeUpdate上报。
1957
1958**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1959
1960**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1961
1962**参数:**
1963
1964| 参数名   | 类型     | 必填 | 说明                                           |
1965| -------- | -------- | ---- | ---------------------------------------------- |
1966| type     | string   | 是   | 时间更新的回调类型,支持的事件:'timeUpdate'。 |
1967| callback | Callback\<number> | 是   | 回调函数。返回当前时间。                                     |
1968
1969**示例:**
1970
1971```ts
1972async function test(){
1973  let avPlayer = await media.createAVPlayer();
1974  avPlayer.on('timeUpdate', (time:number) => {
1975    console.info('timeUpdate called,and new time is :' + time);
1976  });
1977}
1978```
1979
1980## off('timeUpdate')<sup>9+</sup>
1981
1982off(type: 'timeUpdate', callback?: Callback\<number>): void
1983
1984取消监听资源播放当前时间。
1985
1986**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1987
1988**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1989
1990**参数:**
1991
1992| 参数名 | 类型   | 必填 | 说明                                               |
1993| ------ | ------ | ---- | -------------------------------------------------- |
1994| type   | string | 是   | 时间更新的回调类型,取消注册的事件:'timeUpdate'。 |
1995| callback | Callback\<number> | 否   | 回调函数。返回当前时间。<br/>从API version 12开始支持此参数。             |
1996
1997**示例:**
1998
1999```ts
2000async function test(){
2001  let avPlayer = await media.createAVPlayer();
2002  avPlayer.off('timeUpdate');
2003}
2004```
2005
2006## on('durationUpdate')<sup>9+</sup>
2007
2008
2009on(type: 'durationUpdate', callback: Callback\<number>): void
2010
2011监听资源播放资源的时长,单位为毫秒(ms),用于刷新进度条长度,默认只在prepared上报一次,同时允许一些特殊码流刷新多次时长。
2012注:直播场景不支持durationUpdate上报。
2013
2014**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2015
2016**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2017
2018**参数:**
2019
2020| 参数名   | 类型     | 必填 | 说明                                               |
2021| -------- | -------- | ---- | -------------------------------------------------- |
2022| type     | string   | 是   | 时长更新的回调类型,支持的事件:'durationUpdate'。 |
2023| callback | Callback\<number> | 是   | 回调函数。返回资源时长。        |
2024
2025**示例:**
2026
2027```ts
2028async function test(){
2029  let avPlayer = await media.createAVPlayer();
2030  avPlayer.on('durationUpdate', (duration: number) => {
2031    console.info('durationUpdate called,new duration is :' + duration);
2032  });
2033}
2034```
2035
2036## off('durationUpdate')<sup>9+</sup>
2037
2038off(type: 'durationUpdate', callback?: Callback\<number>): void
2039
2040取消监听资源播放资源的时长。
2041
2042**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
2043
2044**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2045
2046**参数:**
2047
2048| 参数名 | 类型   | 必填 | 说明                                                   |
2049| ------ | ------ | ---- | ------------------------------------------------------ |
2050| type   | string | 是   | 时长更新的回调类型,取消注册的事件:'durationUpdate'。 |
2051| callback | Callback\<number> | 否   | 回调函数。返回资源时长。<br/>从API version 12开始支持此参数。        |
2052
2053**示例:**
2054
2055```ts
2056async function test(){
2057  let avPlayer = await media.createAVPlayer();
2058  avPlayer.off('durationUpdate');
2059}
2060```
2061
2062## on('bufferingUpdate')<sup>9+</sup>
2063
2064on(type: 'bufferingUpdate', callback: OnBufferingUpdateHandler): void
2065
2066订阅音视频缓存更新事件,仅网络播放支持该订阅事件。
2067
2068**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2069
2070**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2071
2072**参数:**
2073
2074| 参数名   | 类型     | 必填 | 说明                                                         |
2075| -------- | -------- | ---- | ------------------------------------------------------------ |
2076| type     | string   | 是   | 播放缓存事件回调类型,支持的事件:'bufferingUpdate'。        |
2077| callback | [OnBufferingUpdateHandler](arkts-apis-media-t.md#onbufferingupdatehandler12) | 是   | 播放缓存事件回调方法。 |
2078
2079**示例:**
2080
2081```ts
2082async function test(){
2083  let avPlayer = await media.createAVPlayer();
2084  avPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
2085    console.info('bufferingUpdate called,and infoType value is:' + infoType + ', value is :' + value);
2086  });
2087}
2088```
2089
2090## off('bufferingUpdate')<sup>9+</sup>
2091
2092off(type: 'bufferingUpdate', callback?: OnBufferingUpdateHandler): void
2093
2094取消监听音视频缓存更新事件。
2095
2096**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2097
2098**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2099
2100**参数:**
2101
2102| 参数名 | 类型   | 必填 | 说明                                                      |
2103| ------ | ------ | ---- | --------------------------------------------------------- |
2104| type   | string | 是   | 播放缓存事件回调类型,取消注册的事件:'bufferingUpdate'。 |
2105| callback | [OnBufferingUpdateHandler](arkts-apis-media-t.md#onbufferingupdatehandler12) | 否   | 播放缓存事件回调方法。 |
2106
2107**示例:**
2108
2109```ts
2110async function test(){
2111  let avPlayer = await media.createAVPlayer();
2112  avPlayer.off('bufferingUpdate');
2113}
2114```
2115
2116## on('startRenderFrame')<sup>9+</sup>
2117
2118on(type: 'startRenderFrame', callback: Callback\<void>): void
2119
2120订阅视频播放开始首帧渲染的更新事件,仅视频播放支持该订阅事件,该事件仅代表播放服务将第一帧画面送显示模块,实际效果依赖显示服务渲染性能。
2121
2122**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2123
2124**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2125
2126**参数:**
2127
2128| 参数名   | 类型     | 必填 | 说明                                                         |
2129| -------- | -------- | ---- | ------------------------------------------------------------ |
2130| type     | string   | 是   | 视频播放开始首帧渲染事件回调类型,支持的事件:'startRenderFrame'。 |
2131| callback | Callback\<void> | 是   | 视频播放开始首帧渲染事件回调方法。                           |
2132
2133**示例:**
2134
2135```ts
2136async function test(){
2137  let avPlayer = await media.createAVPlayer();
2138  avPlayer.on('startRenderFrame', () => {
2139    console.info('startRenderFrame called');
2140  });
2141}
2142```
2143
2144## off('startRenderFrame')<sup>9+</sup>
2145
2146off(type: 'startRenderFrame', callback?: Callback\<void>): void
2147
2148取消监听视频播放开始首帧渲染的更新事件。
2149
2150**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
2151
2152**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2153
2154**参数:**
2155
2156| 参数名 | 类型   | 必填 | 说明                                                         |
2157| ------ | ------ | ---- | ------------------------------------------------------------ |
2158| type   | string | 是   | 视频播放开始首帧渲染事件回调类型,取消注册的事件:'startRenderFrame'。 |
2159| callback | Callback\<void> | 否   | 视频播放开始首帧渲染事件回调方法。<br/>从API version 12开始支持此参数。                   |
2160
2161**示例:**
2162
2163```ts
2164async function test(){
2165  let avPlayer = await media.createAVPlayer();
2166  avPlayer.off('startRenderFrame');
2167}
2168```
2169
2170## on('videoSizeChange')<sup>9+</sup>
2171
2172on(type: 'videoSizeChange', callback: OnVideoSizeChangeHandler): void
2173
2174监听视频播放宽高变化事件,仅视频播放支持该订阅事件,默认只在prepared状态上报一次,但HLS协议码流会在切换分辨率时上报。
2175
2176**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2177
2178**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2179
2180**参数:**
2181
2182| 参数名   | 类型     | 必填 | 说明                                                         |
2183| -------- | -------- | ---- | ------------------------------------------------------------ |
2184| type     | string   | 是   | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChange'。 |
2185| callback | [OnVideoSizeChangeHandler](arkts-apis-media-t.md#onvideosizechangehandler12) | 是   | 视频播放宽高变化事件回调方法。    |
2186
2187**示例:**
2188
2189```ts
2190async function test(){
2191  let avPlayer = await media.createAVPlayer();
2192  avPlayer.on('videoSizeChange', (width: number, height: number) => {
2193    console.info('videoSizeChange called,and width is:' + width + ', height is :' + height);
2194  });
2195}
2196```
2197
2198## off('videoSizeChange')<sup>9+</sup>
2199
2200off(type: 'videoSizeChange', callback?: OnVideoSizeChangeHandler): void
2201
2202取消监听视频播放宽高变化事件。
2203
2204**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2205
2206**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2207
2208**参数:**
2209
2210| 参数名 | 类型   | 必填 | 说明                                                         |
2211| ------ | ------ | ---- | ------------------------------------------------------------ |
2212| type   | string | 是   | 视频播放宽高变化事件回调类型,取消注册的事件:'videoSizeChange'。 |
2213| callback | [OnVideoSizeChangeHandler](arkts-apis-media-t.md#onvideosizechangehandler12) | 否   | 视频播放宽高变化事件回调方法。<br/>从API version 12开始支持此参数。    |
2214
2215**示例:**
2216
2217```ts
2218async function test(){
2219  let avPlayer = await media.createAVPlayer();
2220  avPlayer.off('videoSizeChange');
2221}
2222```
2223
2224## on('audioInterrupt')<sup>9+</sup>
2225
2226on(type: 'audioInterrupt', callback: Callback\<audio.InterruptEvent>): void
2227
2228监听音频焦点变化事件,多个音视频资源同时播放时,会根据音频焦点模型[audio.InterruptMode](../apis-audio-kit/arkts-apis-audio-e.md#interruptmode9)触发此事件。应用需根据不同焦点变化事件作相应处理。具体可参考[处理音频焦点事件](../../media/audio/audio-playback-concurrency.md)。
2229
2230**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2231
2232**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2233
2234**参数:**
2235
2236| 参数名   | 类型                                                         | 必填 | 说明                                                     |
2237| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
2238| type     | string                                                       | 是   | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 |
2239| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/arkts-apis-audio-i.md#interruptevent9)> | 是   | 音频焦点变化事件回调方法。                           |
2240
2241**示例:**
2242
2243```ts
2244import { audio } from '@kit.AudioKit';
2245
2246async function test(){
2247  let avPlayer = await media.createAVPlayer();
2248  avPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
2249    console.info('audioInterrupt called,and InterruptEvent info is:' + info);
2250  });
2251}
2252```
2253
2254## off('audioInterrupt')<sup>9+</sup>
2255
2256off(type: 'audioInterrupt', callback?: Callback<audio.InterruptEvent>): void
2257
2258取消监听音频焦点变化事件。
2259
2260**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2261
2262**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2263
2264**参数:**
2265
2266| 参数名 | 类型   | 必填 | 说明                                                         |
2267| ------ | ------ | ---- | ------------------------------------------------------------ |
2268| type   | string | 是   | 音频焦点变化事件回调类型,取消注册的事件:'audioInterrupt'。 |
2269| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/arkts-apis-audio-i.md#interruptevent9)> | 否   | 音频焦点变化事件回调方法。<br/>从API version 12开始支持此参数。             |
2270
2271**示例:**
2272
2273```ts
2274async function test(){
2275  let avPlayer = await media.createAVPlayer();
2276  avPlayer.off('audioInterrupt');
2277}
2278```
2279
2280## on('audioOutputDeviceChangeWithInfo')<sup>11+</sup>
2281
2282on(type: 'audioOutputDeviceChangeWithInfo', callback: Callback\<audio.AudioStreamDeviceChangeInfo>): void
2283
2284订阅监听音频流输出设备变化及原因,使用callback方式返回结果。
2285
2286在订阅此监听时,建议参考[响应音频流输出设备变更](../../media/audio/audio-output-device-change.md)自行实现设备连接或者断开时的播放器行为。
2287
2288**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2289
2290**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2291
2292**参数:**
2293
2294| 参数名   | 类型                       | 必填 | 说明                                        |
2295| :------- | :------------------------- | :--- | :------------------------------------------ |
2296| type     | string                     | 是   | 事件回调类型,支持的事件为:'audioOutputDeviceChangeWithInfo'。 |
2297| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/arkts-apis-audio-i.md#audiostreamdevicechangeinfo11)> | 是   | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 |
2298
2299**错误码:**
2300
2301| 错误码ID | 错误信息                                   |
2302| -------- | ------------------------------------------ |
2303| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.       |
2304
2305**示例:**
2306
2307```ts
2308import { audio } from '@kit.AudioKit';
2309
2310async function test(){
2311  let avPlayer = await media.createAVPlayer();
2312  avPlayer.on('audioOutputDeviceChangeWithInfo', (data: audio.AudioStreamDeviceChangeInfo) => {
2313    console.info(`${JSON.stringify(data)}`);
2314  });
2315}
2316```
2317
2318## off('audioOutputDeviceChangeWithInfo')<sup>11+</sup>
2319
2320off(type: 'audioOutputDeviceChangeWithInfo', callback?: Callback\<audio.AudioStreamDeviceChangeInfo>): void
2321
2322取消订阅监听音频流输出设备变化及原因,使用callback方式返回结果。
2323
2324**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2325
2326**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2327
2328**参数:**
2329
2330| 参数名   | 类型                       | 必填 | 说明                                        |
2331| :------- | :------------------------- | :--- | :------------------------------------------ |
2332| type     | string                     | 是   | 事件回调类型,支持的事件为:'audioOutputDeviceChangeWithInfo'。 |
2333| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/arkts-apis-audio-i.md#audiostreamdevicechangeinfo11)> | 否   | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 |
2334
2335**错误码:**
2336
2337| 错误码ID | 错误信息                                   |
2338| -------- | ------------------------------------------ |
2339| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.      |
2340
2341**示例:**
2342
2343```ts
2344async function test(){
2345  let avPlayer = await media.createAVPlayer();
2346  avPlayer.off('audioOutputDeviceChangeWithInfo');
2347}
2348```
2349
2350## addSubtitleFromFd<sup>12+</sup>
2351
2352addSubtitleFromFd(fd: number, offset?: number, length?: number): Promise\<void>
2353
2354依据fd为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。
2355
2356**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2357
2358**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2359
2360**参数:**
2361
2362| 参数名 | 类型                   | 必填 | 说明                                                         |
2363| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
2364| fd | number   | 是   | 资源句柄,通过[resourceManager.getRawFd](../apis-localization-kit/js-apis-resource-manager.md#getrawfd9)获取。 |
2365| offset | number | 否   | 资源偏移量,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误,默认值:0。 |
2366| length | number | 否   | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误,默认值:0。 |
2367
2368**返回值:**
2369
2370| 类型           | 说明                                       |
2371| -------------- | ------------------------------------------ |
2372| Promise\<void> | 添加外挂字幕addSubtitleFromFd方法的Promise返回值。 |
2373
2374**错误码:**
2375
2376| 错误码ID | 错误信息                                   |
2377| -------- | ------------------------------------------ |
2378| 401      | The parameter check failed. Return by promise. |
2379| 5400102  | Operation not allowed. Return by promise. |
2380
2381**示例:**
2382
2383<!--code_no_check-->
2384```ts
2385import { common } from '@kit.AbilityKit'
2386
2387let avPlayer = await media.createAVPlayer();
2388let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
2389let fileDescriptor = await context.resourceManager.getRawFd('xxx.srt');
2390
2391avPlayer.addSubtitleFromFd(fileDescriptor.fd, fileDescriptor.offset, fileDescriptor.length);
2392```
2393
2394## addSubtitleFromUrl<sup>12+</sup>
2395
2396addSubtitleFromUrl(url: string): Promise\<void>
2397
2398依据url为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。
2399
2400**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2401
2402**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2403
2404**参数:**
2405
2406| 参数名 | 类型   | 必填 | 说明                                                         |
2407| ------ | ------ | ---- | ------------------------------------------------------------ |
2408| url    | string | 是   | 外挂字幕文件地址。 |
2409
2410**返回值:**
2411
2412| 类型           | 说明                                       |
2413| -------------- | ------------------------------------------ |
2414| Promise\<void> | 添加外挂字幕addSubtitleFromUrl方法的Promise返回值。 |
2415
2416**错误码:**
2417
2418| 错误码ID | 错误信息                                   |
2419| -------- | ------------------------------------------ |
2420| 401      | The parameter check failed. Return by promise. |
2421| 5400102  | Operation not allowed. Return by promise. |
2422
2423**示例:**
2424
2425<!--code_no_check-->
2426```ts
2427async function test(){
2428  let fdUrl:string = 'http://xxx.xxx.xxx/xx/index.srt';
2429  let avPlayer: media.AVPlayer = await media.createAVPlayer();
2430  avPlayer.addSubtitleFromUrl(fdUrl);
2431}
2432```
2433
2434## on('subtitleUpdate')<sup>12+</sup>
2435
2436on(type: 'subtitleUpdate', callback: Callback\<SubtitleInfo>): void
2437
2438订阅获取外挂字幕的事件,当有外挂字幕时,会通过订阅的回调方法通知用户。用户只能订阅一个外挂字幕事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
2439
2440**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2441
2442**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2443
2444**参数:**
2445
2446| 参数名   | 类型     | 必填 | 说明                                                         |
2447| -------- | -------- | ---- | ------------------------------------------------------------ |
2448| type | string | 是   | 事件回调类型,支持的事件为:'subtitleUpdate'。 |
2449| callback | Callback\<[SubtitleInfo](arkts-apis-media-i.md#subtitleinfo12)> | 是   | 外挂字幕事件回调方法。 |
2450
2451**示例:**
2452
2453```ts
2454async function test(){
2455  let avPlayer = await media.createAVPlayer();
2456  avPlayer.on('subtitleUpdate', async (info: media.SubtitleInfo) => {
2457    if (info) {
2458      let text = (!info.text) ? '' : info.text
2459      let startTime = (!info.startTime) ? 0 : info.startTime
2460      let duration = (!info.duration) ? 0 : info.duration
2461      console.info('subtitleUpdate info: text=' + text + ' startTime=' + startTime +' duration=' + duration);
2462    } else {
2463      console.info('subtitleUpdate info is null');
2464    }
2465  });
2466}
2467```
2468
2469## off('subtitleUpdate')<sup>12+</sup>
2470
2471off(type: 'subtitleUpdate', callback?: Callback\<SubtitleInfo>): void
2472
2473取消订阅获取外挂字幕的事件。
2474
2475**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2476
2477**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2478
2479**参数:**
2480
2481| 参数名   | 类型     | 必填 | 说明                                                         |
2482| -------- | -------- | ---- | ------------------------------------------------------------ |
2483| type | string | 是   | 事件回调类型,支持的事件为:'subtitleUpdate'。 |
2484| callback | function | 否   | 取消外挂字幕事件的回调方法。 |
2485
2486**示例:**
2487
2488```ts
2489async function test(){
2490  let avPlayer = await media.createAVPlayer();
2491  avPlayer.off('subtitleUpdate');
2492}
2493```
2494
2495## on('trackChange')<sup>12+</sup>
2496
2497on(type: 'trackChange', callback: OnTrackChangeHandler): void
2498
2499订阅获取轨道变更的事件,当播放的轨道变更时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
2500
2501**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2502
2503**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2504
2505**参数:**
2506
2507| 参数名   | 类型     | 必填 | 说明                                                         |
2508| -------- | -------- | ---- | ------------------------------------------------------------ |
2509| type | string | 是   | 事件回调类型,支持的事件为:'trackChange'。 |
2510| callback | [OnTrackChangeHandler](arkts-apis-media-t.md#ontrackchangehandler12) | 是   | 轨道变更事件回调方法。 |
2511
2512**示例:**
2513
2514```ts
2515async function test(){
2516  let avPlayer = await media.createAVPlayer();
2517  avPlayer.on('trackChange', (index: number, isSelect: boolean) => {
2518    console.info('trackChange info: index=' + index + ' isSelect=' + isSelect);
2519  });
2520}
2521```
2522
2523## off('trackChange')<sup>12+</sup>
2524
2525off(type: 'trackChange', callback?: OnTrackChangeHandler): void
2526
2527取消订阅获取轨道变更的事件。
2528
2529**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2530
2531**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2532
2533**参数:**
2534
2535| 参数名   | 类型     | 必填 | 说明                                                         |
2536| -------- | -------- | ---- | ------------------------------------------------------------ |
2537| type | string | 是   | 事件回调类型,支持的事件为:'trackChange'。 |
2538| callback | [OnTrackChangeHandler](arkts-apis-media-t.md#ontrackchangehandler12) | 否   | 取消轨道变更事件的回调方法。 |
2539
2540**示例:**
2541
2542```ts
2543async function test(){
2544  let avPlayer = await media.createAVPlayer();
2545  avPlayer.off('trackChange');
2546}
2547```
2548
2549## on('trackInfoUpdate')<sup>12+</sup>
2550
2551on(type: 'trackInfoUpdate', callback: Callback\<Array\<MediaDescription>>): void
2552
2553订阅获取轨道信息更新的事件,当播放的轨道有更新时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
2554
2555**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2556
2557**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2558
2559**参数:**
2560
2561| 参数名   | 类型     | 必填 | 说明                                                         |
2562| -------- | -------- | ---- | ------------------------------------------------------------ |
2563| type | string | 是   | 事件回调类型,支持的事件为:'trackInfoUpdate'。 |
2564| callback | Callback\<Array\<[MediaDescription](arkts-apis-media-i.md#mediadescription8)>> | 是   | 轨道信息更新事件回调方法。 |
2565
2566**示例:**
2567
2568```ts
2569async function test(){
2570  let avPlayer = await media.createAVPlayer();
2571  avPlayer.on('trackInfoUpdate', (info: Array<media.MediaDescription>) => {
2572    if (info) {
2573      for (let i = 0; i < info.length; i++) {
2574        let propertyIndex: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX];
2575        let propertyType: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_TYPE];
2576        console.info('track info: index=' + propertyIndex + ' tracktype=' + propertyType);
2577      }
2578    } else {
2579      console.info('track info is null');
2580    }
2581  });
2582}
2583```
2584
2585## off('trackInfoUpdate')<sup>12+</sup>
2586
2587off(type: 'trackInfoUpdate', callback?: Callback\<Array\<MediaDescription>>): void
2588
2589取消订阅获取轨道变更的事件。
2590
2591**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2592
2593**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2594
2595**参数:**
2596
2597| 参数名   | 类型     | 必填 | 说明                                                         |
2598| -------- | -------- | ---- | ------------------------------------------------------------ |
2599| type | string | 是   | 事件回调类型,支持的事件为:'trackInfoUpdate'。 |
2600| callback | Callback\<Array\<[MediaDescription](arkts-apis-media-i.md#mediadescription8)>> | 否   | 取消轨道信息更新事件的回调方法。 |
2601
2602**示例:**
2603
2604```ts
2605async function test(){
2606  let avPlayer = await media.createAVPlayer();
2607  avPlayer.off('trackInfoUpdate');
2608}
2609```
2610
2611## on('amplitudeUpdate')<sup>13+</sup>
2612
2613on(type: 'amplitudeUpdate', callback: Callback\<Array\<number>>): void
2614
2615订阅音频最大电平值,音频资源播放时定时上报。
2616
2617**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2618
2619**参数:**
2620
2621| 参数名   | 类型     | 必填 | 说明                                                         |
2622| -------- | -------- | ---- | ------------------------------------------------------------ |
2623| type     | string   | 是   | 事件回调类型,支持的事件为:'amplitudeUpdate'。 |
2624| callback | Callback\<Array\<number>> | 是   | 音频最大电平值更新事件回调方法。 |
2625
2626**示例:**
2627
2628```ts
2629async function test(){
2630  let avPlayer = await media.createAVPlayer();
2631  avPlayer.on('amplitudeUpdate', (value: Array<number>) => {
2632    console.info(`amplitudeUpdate called,and amplitudeUpdate = ${value}`);
2633  });
2634}
2635```
2636
2637## off('amplitudeUpdate')<sup>13+</sup>
2638
2639off(type: 'amplitudeUpdate', callback?: Callback\<Array\<number>>): void
2640
2641取消订阅获取音频最大电平值事件。
2642
2643**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2644
2645**参数:**
2646
2647| 参数名 | 类型   | 必填 | 说明                                                         |
2648| ------ | ------ | ---- | ------------------------------------------------------------ |
2649| type   | string | 是   | 事件回调类型,支持的事件为:'amplitudeUpdate'。 |
2650| callback | Callback\<Array\<number>> | 否   | 取消音频最大电平值更新事件回调方法。 |
2651
2652**示例:**
2653
2654```ts
2655async function test(){
2656  let avPlayer = await media.createAVPlayer();
2657  avPlayer.off('amplitudeUpdate');
2658}
2659```
2660
2661## on('seiMessageReceived')<sup>18+</sup>
2662
2663on(type: 'seiMessageReceived', payloadTypes: Array\<number>, callback: OnSeiMessageHandle): void
2664
2665订阅获取SEI信息事件,仅适用于HTTP-FLV直播,视频流中包含SEI信息时上报。需在prepare之前订阅,当用户重复订阅时,以最后一次订阅的回调接口为准。
2666
2667**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
2668
2669**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2670
2671**参数:**
2672
2673| 参数名   | 类型     | 必填 | 说明                                                         |
2674| -------- | -------- | ---- | ------------------------------------------------------------ |
2675| type     | string | 是 | 事件回调类型,支持的事件为:'seiMessageReceived'。 |
2676| payloadTypes | Array\<number> | 是 | SEI信息的订阅负载类型数组。当前仅支持负载类型为5,即payloadType = 5。|
2677| callback | [OnSeiMessageHandle](arkts-apis-media-t.md#onseimessagehandle18) | 是 | 用于监听SEI信息事件的回调函数,接收订阅的负载类型。 |
2678
2679**示例:**
2680
2681```ts
2682import { util } from '@kit.ArkTS';
2683
2684async function test(){
2685  let avPlayer = await media.createAVPlayer();
2686
2687  avPlayer.on('seiMessageReceived', [5], (messages: Array<media.SeiMessage>, playbackPosition?: number) =>
2688  {
2689    console.info('seiMessageReceived playbackPosition ' + playbackPosition);
2690
2691    for (let key = 0; key < messages.length; key++) {
2692      console.info('seiMessageReceived messages payloadType ' + messages[key].payloadType + ' payload size ' + messages[key].payload.byteLength);
2693
2694      let textDecoder = util.TextDecoder.create("utf-8",{ignoreBOM: true});
2695      let ab = messages[key]?.payload?.slice(16, messages[key].payload.byteLength);
2696      let result: Uint8Array = new Uint8Array(ab);
2697      let retStr: string = textDecoder.decodeToString(result);
2698      console.info('seiMessageReceived messages payload ' + retStr);
2699    }
2700  });
2701}
2702```
2703
2704## off('seiMessageReceived')<sup>18+</sup>
2705
2706off(type: 'seiMessageReceived', payloadTypes?: Array\<number>, callback?: OnSeiMessageHandle): void
2707
2708取消订阅获取SEI信息事件。
2709
2710**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
2711
2712**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2713
2714**参数:**
2715
2716| 参数名 | 类型   | 必填 | 说明                                                         |
2717| ------ | ------ | ---- | ------------------------------------------------------------ |
2718| type     | string   | 是   | 事件回调类型,支持的事件为:'seiMessageReceived'。 |
2719| payloadTypes | Array\<number> | 否   | SEI信息的订阅负载类型。 |
2720| callback | [OnSeiMessageHandle](arkts-apis-media-t.md#onseimessagehandle18) | 否   | 用于监听SEI信息事件的回调函数,接收订阅的负载类型。 |
2721
2722**示例:**
2723
2724```ts
2725async function test(){
2726  let avPlayer = await media.createAVPlayer();
2727  avPlayer.off('seiMessageReceived');
2728}
2729```
2730
2731## setSuperResolution<sup>18+</sup>
2732
2733setSuperResolution(enabled: boolean) : Promise\<void>
2734
2735动态开启/关闭超分算法,可以在 'initialized' | 'prepared' | 'playing' | 'paused' | 'completed' | 'stopped' 状态调用。使用Promise方式返回结果。
2736
2737在调用[prepare()](#prepare9)前先通过[PlaybackStrategy](arkts-apis-media-i.md#playbackstrategy12)使能超分。
2738
2739**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
2740
2741**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2742
2743**参数:**
2744
2745| 参数名 | 类型   | 必填 | 说明                                                         |
2746| ------ | ------ | ---- | ------------------------------------------------------------ |
2747| enabled    | boolean | 是   | 表示是否开启超分。true表示开启超分,false表示关闭超分。 |
2748
2749**返回值:**
2750
2751| 类型           | 说明                                       |
2752| -------------- | ------------------------------------------ |
2753| Promise\<void> | 开启/关闭超分setSuperResolution方法的Promise返回值。 |
2754
2755**错误码:**
2756
2757以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2758
2759| 错误码ID | 错误信息                                   |
2760| -------- | ------------------------------------------ |
2761| 5400102  | Operation not allowed. Return by promise. |
2762| 5410003  | Super-resolution not supported. Return by promise. |
2763| 5410004  | Missing enable super-resolution feature in [PlaybackStrategy](arkts-apis-media-i.md#playbackstrategy12). Return by promise. |
2764
2765**示例:**
2766
2767```ts
2768async function test(){
2769  let avPlayer = await media.createAVPlayer();
2770  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至initialized/prepared/playing/paused/completed/stopped状态后才能调用。
2771  avPlayer.setSuperResolution(true);
2772}
2773```
2774
2775## setVideoWindowSize<sup>18+</sup>
2776
2777setVideoWindowSize(width: number, height: number) : Promise\<void>
2778
2779动态设置超分算法的输出分辨率,可以在 'initialized' | 'prepared' | 'playing' | 'paused' | 'completed' | 'stopped' 状态调用。使用Promise方式返回结果。输入参数须在 320x320 ~ 1920x1080 范围内,单位为像素。
2780
2781在调用[prepare()](#prepare9)前先通过[PlaybackStrategy](arkts-apis-media-i.md#playbackstrategy12)使能超分。
2782
2783**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
2784
2785**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2786
2787**参数:**
2788
2789| 参数名 | 类型   | 必填 | 说明                                                         |
2790| ------ | ------ | ---- | ------------------------------------------------------------ |
2791| width    | number | 是   | 超分算法的目标输出视频宽度,取值范围为[320-1920],单位为像素。 |
2792| height    | number | 是   | 超分算法的目标输出视频高度,取值范围为[320-1080],单位为像素。 |
2793
2794**返回值:**
2795
2796| 类型           | 说明                                       |
2797| -------------- | ------------------------------------------ |
2798| Promise\<void> | 配置超分目标输出分辨率setVideoWindowSize方法的Promise返回值。 |
2799
2800**错误码:**
2801
2802以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。
2803
2804| 错误码ID | 错误信息                                   |
2805| -------- | ------------------------------------------ |
2806| 401      | Parameter error. Return by promise. |
2807| 5400102  | Operation not allowed. Return by promise. |
2808| 5410003  | Super-resolution not supported. Return by promise. |
2809| 5410004  | Missing enable super-resolution feature in [PlaybackStrategy](arkts-apis-media-i.md#playbackstrategy12). Return by promise. |
2810
2811**示例:**
2812
2813```ts
2814async function test(){
2815  let avPlayer = await media.createAVPlayer();
2816  // 此处仅为示意,实际开发中需要在stateChange事件成功触发至initialized/prepared/playing/paused/completed/stopped状态后才能调用。
2817  avPlayer.setVideoWindowSize(1920, 1080);
2818}
2819```
2820
2821## on('superResolutionChanged')<sup>18+</sup>
2822
2823on(type:'superResolutionChanged', callback: OnSuperResolutionChanged): void
2824
2825订阅监听超分算法开启/关闭事件。
2826
2827**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
2828
2829**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2830
2831**参数:**
2832
2833| 参数名   | 类型     | 必填 | 说明                                                         |
2834| -------- | -------- | ---- | ------------------------------------------------------------ |
2835| type     | string | 是 | 事件回调类型,支持的事件为:'superResolutionChanged',当超分算法开启/关闭状态变化时,触发该事件。 |
2836| callback | [OnSuperResolutionChanged](arkts-apis-media-t.md#onsuperresolutionchanged-18) | 是 | 超分开关事件回调方法。 |
2837
2838**示例:**
2839
2840```ts
2841async function test(){
2842  let avPlayer = await media.createAVPlayer();
2843  avPlayer.on('superResolutionChanged', (enabled: boolean) => {
2844    console.info('superResolutionChanged called, and enabled is:' + enabled);
2845  });
2846}
2847```
2848
2849## off('superResolutionChanged')<sup>18+</sup>
2850
2851off(type:'superResolutionChanged', callback?: OnSuperResolutionChanged): void
2852
2853取消监听超分算法开启/关闭事件。
2854
2855**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
2856
2857**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2858
2859**参数:**
2860
2861| 参数名   | 类型     | 必填 | 说明                                                         |
2862| -------- | -------- | ---- | ------------------------------------------------------------ |
2863| type     | string | 是 | 事件回调类型,支持的事件为:'superResolutionChanged',当超分算法开启/关闭状态变化时,触发该事件。 |
2864| callback | [OnSuperResolutionChanged](arkts-apis-media-t.md#onsuperresolutionchanged-18) | 否 | 超分开关事件回调方法。 |
2865
2866**示例:**
2867
2868```ts
2869async function test(){
2870  let avPlayer = await media.createAVPlayer();
2871  avPlayer.off('superResolutionChanged');
2872}
2873```
2874