1# @ohos.multimedia.media (媒体服务)
2
3> **说明:**
4> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
5
6媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统的媒体资源。
7
8媒体子系统包含了音视频相关媒体业务,提供以下常用功能:
9
10- 音视频播放([AVPlayer](#avplayer9)<sup>9+</sup>)
11
12- 音视频录制([AVRecorder](#avrecorder9)<sup>9+</sup>)
13
14- 视频转码([AVTranscoder](#avtranscoder12)<sup>12+</sup>)
15
16- 获取音视频元数据([AVMetadataExtractor](#avmetadataextractor11)<sup>11+</sup>)
17
18- 获取视频缩略图([AVImageGenerator](#avimagegenerator12)<sup>12+</sup>)
19
20- 屏幕录制([AVScreenCaptureRecorder](#avscreencapturerecorder12)<sup>12+</sup>)
21
22## 导入模块
23
24```ts
25import { media } from '@kit.MediaKit';
26```
27
28## media.createAVPlayer<sup>9+</sup>
29
30createAVPlayer(callback: AsyncCallback\<AVPlayer>): void
31
32异步方式创建音视频播放实例,通过注册回调函数获取返回值。
33
34> **说明:**
35>
36> - 推荐单个应用创建的音视频播放实例(即音频、视频、音视频三类相加)不超过16个。<!--Del-->
37> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放实例。<!--DelEnd-->
38
39**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
40
41**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
42
43**参数:**
44
45| 参数名   | 类型                                  | 必填 | 说明                                                         |
46| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
47| callback | AsyncCallback\<[AVPlayer](#avplayer9)> | 是   | 回调函数。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 |
48
49**错误码:**
50
51以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
52
53| 错误码ID | 错误信息                       |
54| -------- | ------------------------------ |
55| 5400101  | No memory. Return by callback. |
56
57**示例:**
58
59```ts
60import { BusinessError } from '@kit.BasicServicesKit';
61
62let avPlayer: media.AVPlayer;
63media.createAVPlayer((error: BusinessError, video: media.AVPlayer) => {
64  if (video != null) {
65    avPlayer = video;
66    console.info('Succeeded in creating AVPlayer');
67  } else {
68    console.error(`Failed to create AVPlayer, error message:${error.message}`);
69  }
70});
71```
72
73## media.createAVPlayer<sup>9+</sup>
74
75createAVPlayer(): Promise\<AVPlayer>
76
77异步方式创建音视频播放实例,通过Promise获取返回值。
78
79> **说明:**
80>
81> - 推荐单个应用创建的音视频播放实例(即音频、视频、音视频三类相加)不超过16个。<!--Del-->
82> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放实例。<!--DelEnd-->
83
84**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
85
86**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
87
88**返回值:**
89
90| 类型                            | 说明                                                         |
91| ------------------------------- | ------------------------------------------------------------ |
92| Promise\<[AVPlayer](#avplayer9)> | Promise对象。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 |
93
94**错误码:**
95
96以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
97
98| 错误码ID | 错误信息                      |
99| -------- | ----------------------------- |
100| 5400101  | No memory. Return by promise. |
101
102**示例:**
103
104```ts
105import { BusinessError } from '@kit.BasicServicesKit';
106
107let avPlayer: media.AVPlayer;
108media.createAVPlayer().then((video: media.AVPlayer) => {
109  if (video != null) {
110    avPlayer = video;
111    console.info('Succeeded in creating AVPlayer');
112  } else {
113    console.error('Failed to create AVPlayer');
114  }
115}).catch((error: BusinessError) => {
116  console.error(`Failed to create AVPlayer, error message:${error.message}`);
117});
118```
119
120## media.createAVRecorder<sup>9+</sup>
121
122createAVRecorder(callback: AsyncCallback\<AVRecorder>): void
123
124异步方式创建音视频录制实例。通过注册回调函数获取返回值。
125
126> **说明:**
127>
128> - 可创建的音视频录制实例不能超过2个。
129> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。
130
131**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
132
133**参数:**
134
135| 参数名   | 类型                                       | 必填 | 说明                                                         |
136| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
137| callback | AsyncCallback\<[AVRecorder](#avrecorder9)> | 是   | 回调函数。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 |
138
139**错误码:**
140
141以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
142
143| 错误码ID | 错误信息                       |
144| -------- | ------------------------------ |
145| 5400101  | No memory. Return by callback. |
146
147**示例:**
148
149```ts
150import { BusinessError } from '@kit.BasicServicesKit';
151let avRecorder: media.AVRecorder;
152
153media.createAVRecorder((error: BusinessError, recorder: media.AVRecorder) => {
154  if (recorder != null) {
155    avRecorder = recorder;
156    console.info('Succeeded in creating AVRecorder');
157  } else {
158    console.error(`Failed to create AVRecorder, error message:${error.message}`);
159  }
160});
161```
162
163## media.createAVRecorder<sup>9+</sup>
164
165createAVRecorder(): Promise\<AVRecorder>
166
167异步方式创建音视频录制实例。通过Promise获取返回值。
168
169> **说明:**
170>
171> - 可创建的音视频录制实例不能超过2个。
172> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。
173
174**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
175
176**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
177
178**返回值:**
179
180| 类型                                 | 说明                                                         |
181| ------------------------------------ | ------------------------------------------------------------ |
182| Promise\<[AVRecorder](#avrecorder9)> | Promise对象。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 |
183
184**错误码:**
185
186以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
187
188| 错误码ID | 错误信息                      |
189| -------- | ----------------------------- |
190| 5400101  | No memory. Return by promise. |
191
192**示例:**
193
194```ts
195import { BusinessError } from '@kit.BasicServicesKit';
196
197let avRecorder: media.AVRecorder;
198media.createAVRecorder().then((recorder: media.AVRecorder) => {
199  if (recorder != null) {
200    avRecorder = recorder;
201    console.info('Succeeded in creating AVRecorder');
202  } else {
203    console.error('Failed to create AVRecorder');
204  }
205}).catch((error: BusinessError) => {
206  console.error(`Failed to create AVRecorder, error message:${error.message}`);
207});
208```
209
210## media.createAVTranscoder<sup>12+</sup>
211
212createAVTranscoder(): Promise\<AVTranscoder>
213
214异步方式创建视频转码实例,通过Promise获取返回值。
215
216> **说明:**
217
218> 可创建的视频转码实例不能超过2个。
219
220**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
221
222**返回值:**
223
224| 类型                            | 说明                                                         |
225| ------------------------------- | ------------------------------------------------------------ |
226| Promise\<[AVTranscoder](#avtranscoder12)> | Promise对象。异步返回AVTranscoder实例,失败时返回null。可用于视频转码。 |
227
228**错误码:**
229
230以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
231
232| 错误码ID | 错误信息                      |
233| -------- | ----------------------------- |
234| 5400101  | No memory. Return by promise. |
235
236**示例:**
237
238```ts
239import { BusinessError } from '@kit.BasicServicesKit';
240
241let avTranscoder: media.AVTranscoder;
242media.createAVTranscoder().then((transcoder: media.AVTranscoder) => {
243  if (transcoder != null) {
244    avTranscoder = transcoder;
245    console.info('Succeeded in creating AVTranscoder');
246  } else {
247    console.error('Failed to create AVTranscoder');
248  }
249}).catch((error: BusinessError) => {
250  console.error(`Failed to create AVTranscoder, error message:${error.message}`);
251});
252```
253
254## media.createAVMetadataExtractor<sup>11+</sup>
255
256createAVMetadataExtractor(callback: AsyncCallback\<AVMetadataExtractor>): void
257
258异步方式创建AVMetadataExtractor实例,通过注册回调函数获取返回值。
259
260**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
261
262**参数:**
263
264| 参数名   | 类型                                  | 必填 | 说明                                                         |
265| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
266| callback | AsyncCallback\<[AVMetadataExtractor](#avmetadataextractor11)> | 是   | 回调函数。当创建AVMetadataExtractor实例成功,err为undefined,data为获取到的AVMetadataExtractor实例,否则为错误对象。 |
267
268**错误码:**
269
270以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
271
272| 错误码ID | 错误信息                       |
273| -------- | ------------------------------ |
274| 5400101  | No memory. Returned by callback. |
275
276**示例:**
277
278```ts
279import { BusinessError } from '@kit.BasicServicesKit';
280
281let avMetadataExtractor: media.AVMetadataExtractor;
282media.createAVMetadataExtractor((error: BusinessError, extractor: media.AVMetadataExtractor) => {
283  if (extractor != null) {
284    avMetadataExtractor = extractor;
285    console.info('Succeeded in creating AVMetadataExtractor');
286  } else {
287    console.error(`Failed to create AVMetadataExtractor, error message:${error.message}`);
288  }
289});
290```
291
292## media.createAVMetadataExtractor<sup>11+</sup>
293
294createAVMetadataExtractor(): Promise\<AVMetadataExtractor>
295
296异步方式创建AVMetadataExtractor实例,通过Promise获取返回值。
297
298**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
299
300**错误码:**
301
302以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
303
304| 错误码ID | 错误信息                       |
305| -------- | ------------------------------ |
306| 5400101  | No memory. Returned by promise. |
307
308**示例:**
309
310```ts
311import { BusinessError } from '@kit.BasicServicesKit';
312
313let avMetadataExtractor: media.AVMetadataExtractor;
314media.createAVMetadataExtractor().then((extractor: media.AVMetadataExtractor) => {
315  if (extractor != null) {
316    avMetadataExtractor = extractor;
317    console.info('Succeeded in creating AVMetadataExtractor');
318  } else {
319    console.error(`Failed to create AVMetadataExtractor`);
320  }
321}).catch((error: BusinessError) => {
322  console.error(`Failed to create AVMetadataExtractor, error message:${error.message}`);
323});
324```
325
326## media.createSoundPool<sup>10+</sup>
327
328createSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo, callback: AsyncCallback\<SoundPool>): void
329
330创建音频池实例,使用callback方式异步获取返回值。
331
332**系统能力:** SystemCapability.Multimedia.Media.SoundPool
333
334**参数:**
335
336| 参数名   | 类型                                            | 必填 | 说明                                                         |
337| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ |
338| maxStreams | number | 是   | soundPool实例的最大播放的流数 |
339| audioRenderInfo | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8)  | 是   | 音频播放参数信息。其中audioRenderInfo中的参数usage取值为STREAM_USAGE_UNKNOWN,STREAM_USAGE_MUSIC,STREAM_USAGE_MOVIE,STREAM_USAGE_AUDIOBOOK时,SoundPool播放短音时为混音模式,不会打断其他音频播放。 |
340| callback | AsyncCallback<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | 是   | 回调函数。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 |
341
342**错误码:**
343
344以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
345
346| 错误码ID | 错误信息                       |
347| -------- | ------------------------------ |
348| 5400101  | No memory. Return by callback. |
349
350**示例:**
351
352```js
353import { audio } from '@kit.AudioKit';
354
355let soundPool: media.SoundPool;
356let audioRendererInfo: audio.AudioRendererInfo = {
357  usage : audio.StreamUsage.STREAM_USAGE_MUSIC,
358  rendererFlags : 0
359}
360
361media.createSoundPool(5, audioRendererInfo, (error, soundPool_: media.SoundPool) => {
362  if (error) {
363    console.error(`Failed to createSoundPool`)
364    return;
365  } else {
366    soundPool = soundPool_;
367    console.info(`Succeeded in createSoundPool`)
368  }
369});
370```
371
372## media.createSoundPool<sup>10+</sup>
373
374createSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo): Promise\<SoundPool>
375
376创建音频池实例,通过Promise获取返回值。
377
378**系统能力:** SystemCapability.Multimedia.Media.SoundPool
379
380**参数:**
381
382| 参数名   | 类型                                            | 必填 | 说明                                                         |
383| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ |
384| maxStreams | number | 是   | soundPool实例的最大播放的流数 |
385| audioRenderInfo | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8)  | 是   | 音频播放参数信息 |
386
387**返回值:**
388
389| 类型                                      | 说明                                                         |
390| ----------------------------------------- | ------------------------------------------------------------ |
391| Promise<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | Promise对象。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 |
392
393**错误码:**
394
395以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
396
397| 错误码ID | 错误信息                      |
398| -------- | ----------------------------- |
399| 5400101  | No memory. Return by promise. |
400
401**示例:**
402
403```js
404import { audio } from '@kit.AudioKit';
405import { BusinessError } from '@kit.BasicServicesKit';
406
407let soundPool: media.SoundPool;
408let audioRendererInfo: audio.AudioRendererInfo = {
409  usage : audio.StreamUsage.STREAM_USAGE_MUSIC,
410  rendererFlags : 0
411}
412
413media.createSoundPool(5, audioRendererInfo).then((soundpool_: media.SoundPool) => {
414  if (soundpool_ != null) {
415    soundPool = soundpool_;
416    console.info('Succceeded in creating SoundPool');
417  } else {
418    console.error('Failed to create SoundPool');
419  }
420}, (error: BusinessError) => {
421  console.error(`soundpool catchCallback, error message:${error.message}`);
422});
423```
424
425## media.createAVScreenCaptureRecorder<sup>12+</sup>
426
427createAVScreenCaptureRecorder(): Promise\<AVScreenCaptureRecorder>
428
429创建屏幕录制实例,通过Promise获取返回值。
430
431**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
432
433**返回值:**
434
435| 类型                                                         | 说明                                                         |
436| ------------------------------------------------------------ | ------------------------------------------------------------ |
437| Promise\<[AVScreenCaptureRecorder](#avscreencapturerecorder12)> | Promise对象。异步返回AVScreenCaptureRecorder实例,失败时返回null。可用于进行屏幕录制。 |
438
439**错误码:**
440
441| 错误码ID | 错误信息                       |
442| -------- | ------------------------------ |
443| 5400101  | No memory. Return by promise. |
444
445**示例:**
446
447```ts
448import { BusinessError } from '@kit.BasicServicesKit';
449
450let avScreenCaptureRecorder: media.AVScreenCaptureRecorder;
451media.createAVScreenCaptureRecorder().then((captureRecorder: media.AVScreenCaptureRecorder) => {
452  if (captureRecorder != null) {
453    avScreenCaptureRecorder = captureRecorder;
454    console.info('Succeeded in createAVScreenCaptureRecorder');
455  } else {
456    console.error('Failed to createAVScreenCaptureRecorder');
457  }
458}).catch((error: BusinessError) => {
459  console.error(`createAVScreenCaptureRecorder catchCallback, error message:${error.message}`);
460});
461```
462
463## SoundPool<sup>10+</sup>
464
465type SoundPool = _SoundPool
466
467音频池,提供了系统声音的加载、播放、音量设置、循环设置、停止播放、资源卸载等功能。
468
469**系统能力:** SystemCapability.Multimedia.Media.SoundPool
470
471| 类型     | 说明                       |
472| -------- | ------------------------------ |
473| [SoundPool](js-apis-inner-multimedia-soundPool.md#soundpool)  | 音频池,提供了系统声音的加载、播放、音量设置、循环设置、停止播放、资源卸载等功能。 |
474
475## PlayParameters<sup>10+</sup>
476
477type PlayParameters = _PlayParameters
478
479表示音频池播放参数设置。
480
481**系统能力:** SystemCapability.Multimedia.Media.SoundPool
482
483| 类型     | 说明                       |
484| -------- | ------------------------------ |
485| [PlayParameters](js-apis-inner-multimedia-soundPool.md#playparameters)  | 表示音频池播放参数设置。 |
486
487## AVErrorCode<sup>9+</sup>
488
489[媒体错误码](errorcode-media.md)类型枚举
490
491**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
492
493**系统能力:** SystemCapability.Multimedia.Media.Core
494
495| 名称                                  | 值      | 说明                                 |
496| :------------------------------------ | ------- | ------------------------------------ |
497| AVERR_OK                              | 0       | 表示操作成功。                       |
498| AVERR_NO_PERMISSION                   | 201     | 表示无权限执行此操作。               |
499| AVERR_INVALID_PARAMETER               | 401     | 表示传入入参无效。                   |
500| AVERR_UNSUPPORT_CAPABILITY            | 801     | 表示当前版本不支持该API能力。        |
501| AVERR_NO_MEMORY                       | 5400101 | 表示系统内存不足或服务数量达到上限。 |
502| AVERR_OPERATE_NOT_PERMIT              | 5400102 | 表示当前状态不允许或无权执行此操作。 |
503| AVERR_IO                              | 5400103 | 表示数据流异常信息。                 |
504| AVERR_TIMEOUT                         | 5400104 | 表示系统或网络响应超时。             |
505| AVERR_SERVICE_DIED                    | 5400105 | 表示服务进程死亡。                   |
506| AVERR_UNSUPPORT_FORMAT                | 5400106 | 表示不支持当前媒体资源的格式。       |
507| AVERR_AUDIO_INTERRUPTED<sup>11+</sup> | 5400107 | 表示音频焦点被抢占                   |
508| AVERR_IO_HOST_NOT_FOUND<sup>14+</sup> | 5411001 | 表示解析或链接服务端地址错误。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
509| AVERR_IO_CONNECTION_TIMEOUT<sup>14+</sup> | 5411002 | 表示网络连接超时。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
510| AVERR_IO_NETWORK_ABNORMAL<sup>14+</sup> | 5411003 | 表示网络异常导致的数据或链路异常。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
511| AVERR_IO_NETWORK_UNAVAILABLE<sup>14+</sup> | 5411004 | 表示网络被禁用。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
512| AVERR_IO_NO_PERMISSION<sup>14+</sup> | 5411005 | 表示无访问权限。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
513| AVERR_IO_REQUEST_DENIED<sup>14+</sup> | 5411006 | 表示客户端请求参数错误或超出处理能力。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
514| AVERR_IO_RESOURCE_NOT_FOUND<sup>14+</sup> | 5411007 | 表示无可用网络资源。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
515| AVERR_IO_SSL_CLIENT_CERT_NEEDED<sup>14+</sup> | 5411008 | 表示服务端校验客户端证书失败。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
516| AVERR_IO_SSL_CONNECTION_FAILED<sup>14+</sup> | 5411009 | 表示SSL连接失败。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
517| AVERR_IO_SSL_SERVER_CERT_UNTRUSTED<sup>14+</sup> | 5411010 | 表示客户端校验服务端证书失败。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
518| AVERR_IO_UNSUPPORTED_REQUEST<sup>14+</sup> | 5411011 | 表示网络协议的原因导致请求不受支持。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。        |
519
520## MediaType<sup>8+</sup>
521
522媒体类型枚举。
523
524**系统能力:** SystemCapability.Multimedia.Media.Core
525
526| 名称           | 值                    | 说明                 |
527| -------------- | --------------------- | ------------------- |
528| MEDIA_TYPE_AUD | 0                     | 表示音频。 <br> **原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。           |
529| MEDIA_TYPE_VID | 1                     | 表示视频。  <br> **原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。          |
530| MEDIA_TYPE_SUBTITLE<sup>12+</sup> | 2    | 表示字幕。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
531
532## CodecMimeType<sup>8+</sup>
533
534Codec MIME类型枚举。
535
536**系统能力:** SystemCapability.Multimedia.Media.Core
537
538| 名称         | 值                    | 说明                     |
539| ------------ | --------------------- | ------------------------ |
540| VIDEO_H263   | 'video/h263'          | 表示视频/h263类型。      |
541| VIDEO_AVC    | 'video/avc'           | 表示视频/avc类型。       |
542| VIDEO_MPEG2  | 'video/mpeg2'         | 表示视频/mpeg2类型。     |
543| VIDEO_MPEG4  | 'video/mp4v-es'         | 表示视频/mpeg4类型。     |
544| VIDEO_VP8    | 'video/x-vnd.on2.vp8' | 表示视频/vp8类型。       |
545| VIDEO_HEVC<sup>11+</sup>   | 'video/hevc'          | 表示视频/H265类型。|
546| AUDIO_AAC    | 'audio/mp4a-latm'     | 表示音频/mp4a-latm类型。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
547| AUDIO_VORBIS | 'audio/vorbis'        | 表示音频/vorbis类型。    |
548| AUDIO_FLAC   | 'audio/flac'          | 表示音频/flac类型。      |
549| AUDIO_MP3<sup>12+</sup>   | 'audio/mpeg'          | 表示音频/mpeg类型。      |
550| AUDIO_G711MU<sup>12+</sup>   | 'audio/g711mu'     | 表示音频/G711-mulaw类型。 |
551
552## MediaDescriptionKey<sup>8+</sup>
553
554媒体信息描述枚举。
555
556**系统能力:** SystemCapability.Multimedia.Media.Core
557
558| 名称                     | 值              | 说明                                                         |
559| ------------------------ | --------------- | ------------------------------------------------------------ |
560| MD_KEY_TRACK_INDEX       | 'track_index'   | 表示轨道序号,其对应键值类型为number。 <br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
561| MD_KEY_TRACK_TYPE        | 'track_type'    | 表示轨道类型,其对应键值类型为number,参考[MediaType](#mediatype8)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
562| MD_KEY_CODEC_MIME        | 'codec_mime'    | 表示codec_mime类型,其对应键值类型为string。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
563| MD_KEY_DURATION          | 'duration'      | 表示媒体时长,其对应键值类型为number,单位为毫秒(ms)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
564| MD_KEY_BITRATE           | 'bitrate'       | 表示比特率,其对应键值类型为number,单位为比特率(bps)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
565| MD_KEY_WIDTH             | 'width'         | 表示视频宽度,其对应键值类型为number,单位为像素(px)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
566| MD_KEY_HEIGHT            | 'height'        | 表示视频高度,其对应键值类型为number,单位为像素(px)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
567| MD_KEY_FRAME_RATE        | 'frame_rate'    | 表示视频帧率,其对应键值类型为number,单位为每100秒的帧数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
568| MD_KEY_AUD_CHANNEL_COUNT | 'channel_count' | 表示声道数,其对应键值类型为number。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
569| MD_KEY_AUD_SAMPLE_RATE   | 'sample_rate'   | 表示采样率,其对应键值类型为number,单位为赫兹(Hz)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
570| MD_KEY_AUD_SAMPLE_DEPTH<sup>12+</sup>  | 'sample_depth'  | 表示位深,其对应键值类型为number,单位为位(bit)。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
571| MD_KEY_LANGUAGE<sup>12+</sup>  | 'language'  | 表示字幕语言,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
572| MD_KEY_TRACK_NAME<sup>12+</sup>  | 'track_name'  | 表示track名称,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
573| MD_KEY_HDR_TYPE<sup>12+</sup>  | 'hdr_type'  | 表示视频轨类型,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
574
575## PlaybackInfoKey<sup>12+</sup>
576
577播放信息描述枚举。
578
579**系统能力:** SystemCapability.Multimedia.Media.Core
580
581| 名称                     | 值              | 说明                                                         |
582| ------------------------ | --------------- | ------------------------------------------------------------ |
583| SERVER_IP_ADDRESS        | 'server_ip_address'    | 表示服务器IP地址,其对应键值类型为string。  |
584| AVG_DOWNLOAD_RATE        | 'average_download_rate'| 表示平均下载速率,其对应键值类型为number,单位为比特率(bps)。 |
585| DOWNLOAD_RATE            | 'download_rate'        | 表示1s的下载速率,其对应键值类型为number,单位为比特率(bps)。|
586| IS_DOWNLOADING           | 'is_downloading'       | 表示下载状态,1表示在下载状态,0表示非下载状态(下载完成),其对应键值类型为number。|
587| BUFFER_DURATION          | 'buffer_duration'      | 表示缓存数据的可播放时长,其对应键值类型为number,单位为秒(s)。|
588
589## BufferingInfoType<sup>8+</sup>
590
591缓存事件类型枚举。
592
593**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
594
595**系统能力:** SystemCapability.Multimedia.Media.Core
596
597| 名称              | 值   | 说明                             |
598| ----------------- | ---- | -------------------------------- |
599| BUFFERING_START   | 1    | 表示开始缓冲。当上报BUFFERING_START时,播放器会暂停播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                   |
600| BUFFERING_END     | 2    | 表示结束缓冲。当上报BUFFERING_END时,播放器会恢复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                   |
601| BUFFERING_PERCENT | 3    | 表示缓冲百分比。可参考该事件感知缓冲进度。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                 |
602| CACHED_DURATION   | 4    |  表示已缓冲数据预估可播放时长,单位为毫秒(ms)。缓冲区中的数据变化量大于500ms,上报一次。可参考该事件做进度条。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。  |
603
604## StateChangeReason<sup>9+</sup>
605
606表示播放或录制实例状态机切换原因的枚举,伴随state一起上报。
607
608**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
609
610**系统能力:** SystemCapability.Multimedia.Media.Core
611
612| 名称       | 值   | 说明                                                         |
613| ---------- | ---- | ------------------------------------------------------------ |
614| USER       | 1    | 表示用户行为造成的状态切换,由用户或客户端主动调用接口产生。 |
615| BACKGROUND | 2    | 表示后台系统行为造成的状态切换,比如应用未注册播控中心权限,退到后台时被系统强制暂停或停止。 |
616
617## AVPlayer<sup>9+</sup>
618
619播放管理类,用于管理和播放媒体资源。在调用AVPlayer的方法前,需要先通过[createAVPlayer()](#mediacreateavplayer9)构建一个AVPlayer实例。
620
621Audio/Video播放demo可参考:[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)、[视频播放开发指导](../../media/media/video-playback.md)。
622
623> **说明:**
624>
625> 在使用AVPlayer实例的方法时,建议开发者注册相关回调,主动获取当前状态变化。
626> - [on('stateChange')](#onstatechange9):监听播放状态机AVPlayerState切换。
627> - [on('error')](#onerror9):监听错误事件。
628
629### 属性
630
631**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
632
633| 名称                                                | 类型                                                         | 只读 | 可选 | 说明                                                         |
634| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
635| url<sup>9+</sup>                                    | string                                                       | 否   | 是   | 媒体URL,只允许在**idle**状态下设置。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr)。<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开始,该接口支持在原子化服务中使用。 |
636| fdSrc<sup>9+</sup>                                  | [AVFileDescriptor](#avfiledescriptor9)                       | 否   | 是   | 媒体文件描述,只允许在**idle**状态下设置。<br/>使用场景:应用中的媒体资源被连续存储在同一个文件中。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr)。<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开始,该接口支持在原子化服务中使用。 |
637| dataSrc<sup>10+</sup>                               | [AVDataSrcDescriptor](#avdatasrcdescriptor10)                | 否   | 是   | 流式媒体资源描述,只允许在**idle**状态下设置。<br/>使用场景:应用播放从远端下载到本地的文件,在应用未下载完整音视频资源时,提前播放已获取的资源文件。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr)。<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开始,该接口支持在原子化服务中使用。 |
638| 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#getxcomponentsurfaceid)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
639| loop<sup>9+</sup>                                   | boolean                                                      | 否   | 否   | 视频循环播放属性,默认'false',设置为'true'表示循环播放,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>直播场景不支持loop设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
640| videoScaleType<sup>9+</sup>                         | [VideoScaleType](#videoscaletype9)                           | 否   | 是   | 视频缩放模式,默认VIDEO_SCALE_TYPE_FIT,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
641| audioInterruptMode<sup>9+</sup>                     | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9)       | 否   | 是   | 音频焦点模型,默认SHARE_MODE,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>在第一次调用[play()](#play9)之前设置, 以便此后中断模式生效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
642| audioRendererInfo<sup>10+</sup>                     | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8) | 否   | 是   | 设置音频渲染信息。若媒体源包含视频,则usage默认值为STREAM_USAGE_MOVIE,否则usage默认值为STREAM_USAGE_MUSIC。rendererFlags默认值为0。若默认usage不满足需求,则须主动配置[audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8)。<br/>只允许在**initialized**状态下设置。<br/>在第一次调用[prepare()](#prepare9)之前设置,以便音频渲染器信息在之后生效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
643| audioEffectMode<sup>10+</sup>                       | [audio.AudioEffectMode](../apis-audio-kit/js-apis-audio.md#audioeffectmode10)  | 否   | 是   | 设置音频音效模式,默认值为EFFECT_DEFAULT,动态属性。audioRendererInfo的usage变动时会恢复为默认值,只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
644| state<sup>9+</sup>                                  | [AVPlayerState](#avplayerstate9)                             | 是   | 否   | 音视频播放的状态,全状态有效,可查询参数。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                  |
645| currentTime<sup>9+</sup>                            | number                                                       | 是   | 否   | 视频的当前播放位置,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
646| duration<sup>9+</sup> | number                                                       | 是   | 否   | 视频时长,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
647| width<sup>9+</sup>                                  | number                                                       | 是   | 否   | 视频宽,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
648| height<sup>9+</sup>                                 | number                                                       | 是   | 否   | 视频高,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
649
650### on('stateChange')<sup>9+</sup>
651
652on(type: 'stateChange', callback: OnAVPlayerStateChangeHandle): void
653
654监听播放状态机AVPlayerState切换的事件。
655
656**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。
657
658**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
659
660**参数:**
661
662| 参数名   | 类型     | 必填 | 说明                                                         |
663| -------- | -------- | ---- | ------------------------------------------------------------ |
664| type     | string   | 是   | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 |
665| callback | [OnAVPlayerStateChangeHandle](#onavplayerstatechangehandle12) | 是   | 状态机切换事件回调方法。 |
666
667**示例:**
668
669```ts
670avPlayer.on('stateChange', async (state: string, reason: media.StateChangeReason) => {
671  switch (state) {
672    case 'idle':
673      console.info('state idle called');
674      break;
675    case 'initialized':
676      console.info('initialized prepared called');
677      break;
678    case 'prepared':
679      console.info('state prepared called');
680      break;
681    case 'playing':
682      console.info('state playing called');
683      break;
684    case 'paused':
685      console.info('state paused called');
686      break;
687    case 'completed':
688      console.info('state completed called');
689      break;
690    case 'stopped':
691      console.info('state stopped called');
692      break;
693    case 'released':
694      console.info('state released called');
695      break;
696    case 'error':
697      console.info('state error called');
698      break;
699    default:
700      console.info('unknown state :' + state);
701      break;
702  }
703})
704```
705
706### off('stateChange')<sup>9+</sup>
707
708off(type: 'stateChange', callback?: OnAVPlayerStateChangeHandle): void
709
710取消监听播放状态机[AVPlayerState](#avplayerstate9)切换的事件。
711
712**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
713
714**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
715
716**参数:**
717
718| 参数名 | 类型   | 必填 | 说明                                                  |
719| ------ | ------ | ---- | ----------------------------------------------------- |
720| type   | string | 是   | 状态机切换事件回调类型,取消注册的事件:'stateChange' |
721| callback   | [OnAVPlayerStateChangeHandle](#onavplayerstatechangehandle12) | 否   | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 |
722
723**示例:**
724
725```ts
726avPlayer.off('stateChange')
727```
728
729### on('error')<sup>9+</sup>
730
731on(type: 'error', callback: ErrorCallback): void
732
733监听[AVPlayer](#avplayer9)的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVPlayerState](#avplayerstate9)也切至error状态,用户需要通过[reset()](#reset9)或者[release()](#release9)退出播放操作。
734
735**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。
736
737**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
738
739**参数:**
740
741| 参数名   | 类型     | 必填 | 说明                                                         |
742| -------- | -------- | ---- | ------------------------------------------------------------ |
743| type     | string   | 是   | 错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。 |
744| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。 |
745
746**错误码:**
747
748以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
749
750在API version 9-13,针对网络、服务器等数据流异常,接口上报5400103;从API version 14开始,对应错误细化为错误码5411001-5411011。
751
752| 错误码ID | 错误信息              |
753| -------- | --------------------- |
754| 201      | Permission denied     |
755| 401      | The parameter check failed. |
756| 801      | Capability not supported. |
757| 5400101  | No memory. |
758| 5400102  | Operation not allowed.|
759| 5400103  | I/O error             |
760| 5400104  | Time out              |
761| 5400105  | Service died.         |
762| 5400106  | Unsupported format.     |
763| 5411001  | IO can not find host.    |
764| 5411002  | IO connection timeout.  |
765| 5411003  | IO network abnormal.     |
766| 5411004  | IO network unavailable.  |
767| 5411005  | IO no permission.        |
768| 5411006  | IO request denied.  |
769| 5411007  | IO resource not found. |
770| 5411008  | IO SSL client cert needed.    |
771| 5411009  | IO SSL connect fail.     |
772| 5411010  | IO SSL server cert untrusted.    |
773| 5411011  | IO unsupported request.      |
774
775**示例:**
776
777```ts
778import { BusinessError } from '@kit.BasicServicesKit';
779
780avPlayer.on('error', (error: BusinessError) => {
781  console.info('error happened,and error message is :' + error.message)
782  console.info('error happened,and error code is :' + error.code)
783})
784```
785
786### off('error')<sup>9+</sup>
787
788off(type: 'error', callback?: ErrorCallback): void
789
790取消监听播放的错误事件。
791
792**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
793
794**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
795
796**参数:**
797
798| 参数名 | 类型   | 必填 | 说明                                      |
799| ------ | ------ | ---- | ----------------------------------------- |
800| type   | string | 是   | 错误事件回调类型,取消注册的事件:'error' |
801| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否   | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。<br/>从API version 12开始支持此参数。 |
802
803**示例:**
804
805```ts
806avPlayer.off('error')
807```
808
809### setMediaSource<sup>12+</sup>
810
811setMediaSource(src:MediaSource, strategy?: PlaybackStrategy): Promise\<void>
812
813流媒体预下载资源设置,下载url对应的流媒体数据,并暂存在内存中。[视频播放开发指导](../../media/media/video-playback.md)。通过Promise获取返回值。
814
815**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
816
817**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
818
819**参数:**
820
821| 参数名   | 类型     | 必填 | 说明                 |
822| -------- | -------- | ---- | -------------------- |
823| src | [MediaSource](#mediasource12) | 是   | 流媒体预下载媒体来源。 |
824| strategy | [PlaybackStrategy](#playbackstrategy12) | 否   | 流媒体预下载播放策略。 |
825
826**返回值:**
827
828| 类型           | 说明                                       |
829| -------------- | ------------------------------------------ |
830| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
831
832**错误码:**
833
834以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
835
836| 错误码ID | 错误信息                                  |
837| -------- | ----------------------------------------- |
838| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.      |
839| 5400102  | Operation not allowed. Return by promise. |
840
841**示例:**
842
843<!--code_no_check-->
844```ts
845let player = await media.createAVPlayer();
846let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"};
847let mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx",  headers);
848let playStrategy : media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 3, preferredHdr: false};
849player.setMediaSource(mediaSource, playStrategy);
850```
851
852### setPlaybackStrategy<sup>12+</sup>
853
854setPlaybackStrategy(strategy: PlaybackStrategy): Promise\<void>
855
856设置播放策略,只能在initialized状态下调用。
857
858**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
859
860**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
861
862**参数:**
863
864| 参数名   | 类型     | 必填 | 说明                 |
865| -------- | -------- | ---- | -------------------- |
866| strategy | [PlaybackStrategy](#playbackstrategy12) | 是   | 播放策略。 |
867
868**返回值:**
869
870| 类型           | 说明                                  |
871| -------------- | ------------------------------------ |
872| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
873
874**错误码:**
875
876以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
877
878| 错误码ID | 错误信息                                  |
879| -------- | ----------------------------------------- |
880| 401      | Parameter error. Possible causes: 1. Incorrect parameter types. 2. Parameter verification failed. |
881| 5400102  | Operation not allowed. Return by promise. |
882
883**示例:**
884
885<!--code_no_check-->
886```ts
887import { common } from '@kit.AbilityKit';
888
889let player = await media.createAVPlayer();
890let context = getContext(this) as common.UIAbilityContext
891let fileDescriptor = await context.resourceManager.getRawFd('xxx.mp4')
892player.fdSrc = fileDescriptor
893let playStrategy : media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 3,
894  preferredHdr: false, mutedMediaType: media.MediaType.MEDIA_TYPE_AUD};
895player.setPlaybackStrategy(playStrategy);
896```
897
898### prepare<sup>9+</sup>
899
900prepare(callback: AsyncCallback\<void>): void
901
902准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。使用callback方式异步获取返回值。
903
904**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
905
906**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
907
908**参数:**
909
910| 参数名   | 类型     | 必填 | 说明                 |
911| -------- | -------- | ---- | -------------------- |
912| callback | AsyncCallback\<void> | 是   | 准备播放的回调方法。 |
913
914**错误码:**
915
916以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
917
918| 错误码ID | 错误信息                                   |
919| -------- | ------------------------------------------ |
920| 5400102  | Operation not allowed. Return by callback. |
921| 5400106  | Unsupported format. Return by callback.      |
922
923**示例:**
924
925```ts
926import { BusinessError } from '@kit.BasicServicesKit';
927
928avPlayer.prepare((err: BusinessError) => {
929  if (err) {
930    console.error('Failed to prepare,error message is :' + err.message)
931  } else {
932    console.info('Succeeded in preparing');
933  }
934})
935```
936
937### prepare<sup>9+</sup>
938
939prepare(): Promise\<void>
940
941准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。通过Promise获取返回值。
942
943**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
944
945**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
946
947**返回值:**
948
949| 类型           | 说明                      |
950| -------------- | ------------------------- |
951| Promise\<void> | 准备播放的Promise返回值。 |
952
953**错误码:**
954
955以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
956
957| 错误码ID | 错误信息                                  |
958| -------- | ----------------------------------------- |
959| 5400102  | Operation not allowed. Return by promise. |
960| 5400106  | Unsupported format. Return by promise.      |
961
962**示例:**
963
964```ts
965import { BusinessError } from '@kit.BasicServicesKit';
966
967avPlayer.prepare().then(() => {
968  console.info('Succeeded in preparing');
969}, (err: BusinessError) => {
970  console.error('Failed to prepare,error message is :' + err.message)
971})
972```
973
974### setMediaMuted<sup>12+</sup>
975
976setMediaMuted(mediaType: MediaType,  muted: boolean ): Promise\<void>
977
978设置音频静音/取消音频静音。只能在prepared/playing/paused/completed状态下调用。仅支持设置mediaType为音频格式。
979
980**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
981
982**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
983
984**参数:**
985
986| 参数名   | 类型     | 必填 | 说明                 |
987| -------- | -------- | ---- | -------------------- |
988| mediaType | [MediaType](#mediatype8) | 是   | 播放策略。 |
989| muted | boolean | 是   | 是否静音播放。 |
990
991**返回值:**
992
993| 类型           | 说明                      |
994| -------------- | ------------------------- |
995| Promise\<void> | 准备播放的Promise返回值。 |
996
997**错误码:**
998
999以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1000
1001| 错误码ID | 错误信息 |
1002| -------- | ----------------------------------------- |
1003| 401 | The parameter check failed. Return by promise. |
1004| 5400102 | Operation not allowed. Return by promise. |
1005
1006**示例:**
1007
1008```ts
1009import { BusinessError } from '@kit.BasicServicesKit';
1010
1011avPlayer.prepare().then(() => {
1012  console.info('Succeeded in preparing');
1013  avPlayer.setMediaMuted(media.MediaType.MEDIA_TYPE_AUD, true)
1014}, (err: BusinessError) => {
1015  console.error('Failed to prepare,error message is :' + err.message)
1016})
1017```
1018
1019### play<sup>9+</sup>
1020
1021play(callback: AsyncCallback\<void>): void
1022
1023开始播放音视频资源,只能在prepared/paused/completed状态调用。使用callback方式异步获取返回值。
1024
1025**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1026
1027**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1028
1029**参数:**
1030
1031| 参数名   | 类型     | 必填 | 说明                 |
1032| -------- | -------- | ---- | -------------------- |
1033| callback | AsyncCallback\<void> | 是   | 开始播放的回调方法。 |
1034
1035**错误码:**
1036
1037以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1038
1039| 错误码ID | 错误信息                                   |
1040| -------- | ------------------------------------------ |
1041| 5400102  | Operation not allowed. Return by callback. |
1042
1043**示例:**
1044
1045```ts
1046import { BusinessError } from '@kit.BasicServicesKit';
1047
1048avPlayer.play((err: BusinessError) => {
1049  if (err) {
1050    console.error('Failed to play,error message is :' + err.message)
1051  } else {
1052    console.info('Succeeded in playing');
1053  }
1054})
1055```
1056
1057### play<sup>9+</sup>
1058
1059play(): Promise\<void>
1060
1061开始播放音视频资源,只能在prepared/paused/completed状态调用。通过Promise获取返回值。
1062
1063**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1064
1065**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1066
1067**返回值:**
1068
1069| 类型           | 说明                      |
1070| -------------- | ------------------------- |
1071| Promise\<void> | 开始播放的Promise返回值。 |
1072
1073**错误码:**
1074
1075以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1076
1077| 错误码ID | 错误信息                                  |
1078| -------- | ----------------------------------------- |
1079| 5400102  | Operation not allowed. Return by promise. |
1080
1081**示例:**
1082
1083```ts
1084import { BusinessError } from '@kit.BasicServicesKit';
1085
1086avPlayer.play().then(() => {
1087  console.info('Succeeded in playing');
1088}, (err: BusinessError) => {
1089  console.error('Failed to play,error message is :' + err.message)
1090})
1091```
1092
1093### pause<sup>9+</sup>
1094
1095pause(callback: AsyncCallback\<void>): void
1096
1097暂停播放音视频资源,只能在playing状态调用。使用callback方式异步获取返回值。
1098
1099**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1100
1101**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1102
1103**参数:**
1104
1105| 参数名   | 类型     | 必填 | 说明                 |
1106| -------- | -------- | ---- | -------------------- |
1107| callback | AsyncCallback\<void> | 是   | 暂停播放的回调方法。 |
1108
1109**错误码:**
1110
1111以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1112
1113| 错误码ID | 错误信息                                   |
1114| -------- | ------------------------------------------ |
1115| 5400102  | Operation not allowed. Return by callback. |
1116
1117**示例:**
1118
1119```ts
1120import { BusinessError } from '@kit.BasicServicesKit';
1121
1122avPlayer.pause((err: BusinessError) => {
1123  if (err) {
1124    console.error('Failed to pause,error message is :' + err.message)
1125  } else {
1126    console.info('Succeeded in pausing');
1127  }
1128})
1129```
1130
1131### pause<sup>9+</sup>
1132
1133pause(): Promise\<void>
1134
1135暂停播放音视频资源,只能在playing状态调用。通过Promise获取返回值。
1136
1137**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1138
1139**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1140
1141**返回值:**
1142
1143| 类型           | 说明                      |
1144| -------------- | ------------------------- |
1145| Promise\<void> | 暂停播放的Promise返回值。 |
1146
1147**错误码:**
1148
1149以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1150
1151| 错误码ID | 错误信息                                  |
1152| -------- | ----------------------------------------- |
1153| 5400102  | Operation not allowed. Return by promise. |
1154
1155**示例:**
1156
1157```ts
1158import { BusinessError } from '@kit.BasicServicesKit';
1159
1160avPlayer.pause().then(() => {
1161  console.info('Succeeded in pausing');
1162}, (err: BusinessError) => {
1163  console.error('Failed to pause,error message is :' + err.message)
1164})
1165```
1166
1167### stop<sup>9+</sup>
1168
1169stop(callback: AsyncCallback\<void>): void
1170
1171停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。使用callback方式异步获取返回值。
1172
1173**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1174
1175**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1176
1177**参数:**
1178
1179| 参数名   | 类型     | 必填 | 说明                 |
1180| -------- | -------- | ---- | -------------------- |
1181| callback | AsyncCallback\<void> | 是   | 停止播放的回调方法。 |
1182
1183**错误码:**
1184
1185以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1186
1187| 错误码ID | 错误信息                                   |
1188| -------- | ------------------------------------------ |
1189| 5400102  | Operation not allowed. Return by callback. |
1190
1191**示例:**
1192
1193```ts
1194import { BusinessError } from '@kit.BasicServicesKit';
1195
1196avPlayer.stop((err: BusinessError) => {
1197  if (err) {
1198    console.error('Failed to stop,error message is :' + err.message)
1199  } else {
1200    console.info('Succeeded in stopping');
1201  }
1202})
1203```
1204
1205### stop<sup>9+</sup>
1206
1207stop(): Promise\<void>
1208
1209停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。通过Promise获取返回值。
1210
1211**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1212
1213**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1214
1215**返回值:**
1216
1217| 类型           | 说明                      |
1218| -------------- | ------------------------- |
1219| Promise\<void> | 停止播放的Promise返回值。 |
1220
1221**错误码:**
1222
1223以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1224
1225| 错误码ID | 错误信息                                  |
1226| -------- | ----------------------------------------- |
1227| 5400102  | Operation not allowed. Return by promise. |
1228
1229**示例:**
1230
1231```ts
1232import { BusinessError } from '@kit.BasicServicesKit';
1233
1234avPlayer.stop().then(() => {
1235  console.info('Succeeded in stopping');
1236}, (err: BusinessError) => {
1237  console.error('Failed to stop,error message is :' + err.message)
1238})
1239```
1240
1241### reset<sup>9+</sup>
1242
1243reset(callback: AsyncCallback\<void>): void
1244
1245重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。使用callback方式异步获取返回值。
1246
1247**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1248
1249**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1250
1251**参数:**
1252
1253| 参数名   | 类型     | 必填 | 说明                 |
1254| -------- | -------- | ---- | -------------------- |
1255| callback | AsyncCallback\<void> | 是   | 重置播放的回调方法。 |
1256
1257**错误码:**
1258
1259以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1260
1261| 错误码ID | 错误信息                                   |
1262| -------- | ------------------------------------------ |
1263| 5400102  | Operation not allowed. Return by callback. |
1264
1265**示例:**
1266
1267```ts
1268import { BusinessError } from '@kit.BasicServicesKit';
1269
1270avPlayer.reset((err: BusinessError) => {
1271  if (err) {
1272    console.error('Failed to reset,error message is :' + err.message)
1273  } else {
1274    console.info('Succeeded in resetting');
1275  }
1276})
1277```
1278
1279### reset<sup>9+</sup>
1280
1281reset(): Promise\<void>
1282
1283重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。通过Promise获取返回值。
1284
1285**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1286
1287**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1288
1289**返回值:**
1290
1291| 类型           | 说明                      |
1292| -------------- | ------------------------- |
1293| Promise\<void> | 重置播放的Promise返回值。 |
1294
1295**错误码:**
1296
1297以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1298
1299| 错误码ID | 错误信息                                  |
1300| -------- | ----------------------------------------- |
1301| 5400102  | Operation not allowed. Return by promise. |
1302
1303**示例:**
1304
1305```ts
1306import { BusinessError } from '@kit.BasicServicesKit';
1307
1308avPlayer.reset().then(() => {
1309  console.info('Succeeded in resetting');
1310}, (err: BusinessError) => {
1311  console.error('Failed to reset,error message is :' + err.message)
1312})
1313```
1314
1315### release<sup>9+</sup>
1316
1317release(callback: AsyncCallback\<void>): void
1318
1319销毁播放资源,除released状态外,均可以调用。使用callback方式异步获取返回值。
1320
1321**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1322
1323**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1324
1325**参数:**
1326
1327| 参数名   | 类型     | 必填 | 说明                 |
1328| -------- | -------- | ---- | -------------------- |
1329| callback | AsyncCallback\<void> | 是   | 销毁播放的回调方法。 |
1330
1331**错误码:**
1332
1333以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1334
1335| 错误码ID | 错误信息                                   |
1336| -------- | ------------------------------------------ |
1337| 5400102  | Operation not allowed. Return by callback. |
1338
1339**示例:**
1340
1341```ts
1342import { BusinessError } from '@kit.BasicServicesKit';
1343
1344avPlayer.release((err: BusinessError) => {
1345  if (err) {
1346    console.error('Failed to release,error message is :' + err.message)
1347  } else {
1348    console.info('Succeeded in releasing');
1349  }
1350})
1351```
1352
1353### release<sup>9+</sup>
1354
1355release(): Promise\<void>
1356
1357销毁播放资源,除released状态,都可以调用。通过Promise获取返回值。
1358
1359**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1360
1361**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1362
1363**返回值:**
1364
1365| 类型           | 说明                      |
1366| -------------- | ------------------------- |
1367| Promise\<void> | 销毁播放的Promise返回值。 |
1368
1369**错误码:**
1370
1371以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1372
1373| 错误码ID | 错误信息                                  |
1374| -------- | ----------------------------------------- |
1375| 5400102  | Operation not allowed. Return by promise. |
1376
1377**示例:**
1378
1379```ts
1380import { BusinessError } from '@kit.BasicServicesKit';
1381
1382avPlayer.release().then(() => {
1383  console.info('Succeeded in releasing');
1384}, (err: BusinessError) => {
1385  console.error('Failed to release,error message is :' + err.message)
1386})
1387```
1388
1389### getTrackDescription<sup>9+</sup>
1390
1391getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
1392
1393获取音视频轨道信息,可以在prepared/playing/paused状态调用。获取所有音视轨道信息,应在数据加载回调后调用。使用callback方式异步获取返回值。
1394
1395**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1396
1397**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1398
1399**参数:**
1400
1401| 参数名   | 类型                                                         | 必填 | 说明                                         |
1402| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- |
1403| callback | AsyncCallback<Array<[MediaDescription](#mediadescription8)>> | 是   | 回调函数,当获取音频轨道信息成功,err为undefined,data为获取到的MediaDescription数组;否则为错误对象。|
1404
1405**错误码:**
1406
1407以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1408
1409| 错误码ID | 错误信息                                   |
1410| -------- | ------------------------------------------ |
1411| 5400102  | Operation not allowed. Return by callback. |
1412
1413**示例:**
1414
1415```ts
1416import { BusinessError } from '@kit.BasicServicesKit';
1417
1418avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
1419  if ((arrList) != null) {
1420    console.info('Succeeded in doing getTrackDescription');
1421  } else {
1422    console.error(`Failed to do getTrackDescription, error:${error}`);
1423  }
1424});
1425```
1426
1427### getTrackDescription<sup>9+</sup>
1428
1429getTrackDescription(): Promise\<Array\<MediaDescription>>
1430
1431获取音视频轨道信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。
1432
1433**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1434
1435**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1436
1437**返回值:**
1438
1439| 类型                                                   | 说明                                              |
1440| ------------------------------------------------------ | ------------------------------------------------- |
1441| Promise<Array<[MediaDescription](#mediadescription8)>> | Promise对象,返回音视频轨道信息MediaDescription数组。 |
1442
1443**错误码:**
1444
1445以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1446
1447| 错误码ID | 错误信息                                  |
1448| -------- | ----------------------------------------- |
1449| 5400102  | Operation not allowed. Return by promise. |
1450
1451**示例:**
1452
1453```ts
1454import { BusinessError } from '@kit.BasicServicesKit';
1455
1456avPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
1457  console.info('Succeeded in getting TrackDescription');
1458}).catch((error: BusinessError) => {
1459  console.error(`Failed to get TrackDescription, error:${error}`);
1460});
1461```
1462
1463### getSelectedTracks<sup>12+</sup>
1464
1465getSelectedTracks(): Promise\<Array\<number>>
1466
1467获取已选择的音视频轨道索引,可以在prepared/playing/paused状态调用。通过Promise获取返回值。
1468
1469**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1470
1471**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1472
1473**返回值:**
1474
1475| 类型                                                   | 说明                                              |
1476| ------------------------------------------------------ | ------------------------------------------------- |
1477| Promise<Array<[number]>> | Promise对象,返回已选择音视频轨道索引数组。 |
1478
1479**错误码:**
1480
1481以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1482
1483| 错误码ID | 错误信息                                  |
1484| -------- | ----------------------------------------- |
1485| 5400102  | Operation not allowed. |
1486
1487**示例:**
1488
1489```ts
1490import { BusinessError } from '@kit.BasicServicesKit';
1491
1492avPlayer.getSelectedTracks().then((arrList: Array<number>) => {
1493  console.info('Succeeded in getting SelectedTracks');
1494}).catch((error: BusinessError) => {
1495  console.error(`Failed to get SelectedTracks, error:${error}`);
1496});
1497```
1498
1499### getPlaybackInfo<sup>12+</sup>
1500
1501getPlaybackInfo(): Promise\<PlaybackInfo>
1502
1503获取播放过程信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。
1504
1505**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1506
1507**返回值:**
1508
1509| 类型                                                   | 说明                                              |
1510| ------------------------------------------------------ | ------------------------------------------------- |
1511| Promise<[PlaybackInfo](#playbackinfo12)> | Promise对象,返回播放器信息PlaybackInfo。 |
1512
1513**示例:**
1514
1515```ts
1516import { BusinessError } from '@kit.BasicServicesKit';
1517
1518let avPlayer: media.AVPlayer | undefined = undefined;
1519let playbackInfo: media.PlaybackInfo | undefined = undefined;
1520media.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => {
1521  if (player != null) {
1522    avPlayer = player;
1523    console.info(`Succeeded in creating AVPlayer`);
1524    if (avPlayer) {
1525      try {
1526        playbackInfo = await avPlayer.getPlaybackInfo();
1527        console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值
1528      } catch (error) {
1529        console.error(`error = ${error}`);
1530      }
1531    }
1532  } else {
1533    console.error(`Failed to create AVPlayer, error message:${err.message}`);
1534  }
1535});
1536```
1537
1538### selectTrack<sup>12+</sup>
1539
1540selectTrack(index: number, mode?: SwitchMode): Promise\<void>
1541
1542使用AVPlayer播放多音视频轨资源时,选择指定轨道播放,通过Promise获取返回值。
1543
1544**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1545
1546**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1547
1548**参数:**
1549
1550| 参数名   | 类型     | 必填 | 说明                 |
1551| -------- | -------- | ---- | -------------------- |
1552| index | number | 是   | 多音视频资源的轨道索引,可通过[getTrackDescription](#gettrackdescription9-1)接口获取当前资源的所有轨道信息[MediaDescription](#mediadescription8)。 |
1553| mode   | [SwitchMode](#switchmode12) | 否   | 切换视频轨道模式,默认为SMOOTH模式,**仅在DASH协议网络流视频轨切换时生效**,其他场景当前暂不支持。 |
1554
1555**返回值:**
1556
1557| 类型           | 说明                      |
1558| -------------- | ------------------------- |
1559| Promise\<void> | 选择轨道完成的Promise返回值。 |
1560
1561**错误码:**
1562
1563以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1564
1565| 错误码ID | 错误信息                                  |
1566| -------- | ----------------------------------------- |
1567| 401      | The parameter check failed. Return by promise.       |
1568| 5400102  | Operation not allowed. Return by promise. |
1569
1570**示例:**
1571
1572<!--code_no_check-->
1573```ts
1574import { BusinessError } from '@kit.BasicServicesKit';
1575
1576let avPlayer: media.AVPlayer = await media.createAVPlayer();
1577let audioTrackIndex: Object = 0;
1578avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
1579  if (arrList != null) {
1580    for (let i = 0; i < arrList.length; i++) {
1581      if (i != 0) {
1582        // 获取音频轨道列表
1583        audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX];
1584      }
1585    }
1586  } else {
1587    console.error(`Failed to get TrackDescription, error:${error}`);
1588  }
1589});
1590
1591// 选择其中一个音频轨道
1592avPlayer.selectTrack(parseInt(audioTrackIndex.toString()));
1593```
1594
1595### deselectTrack<sup>12+</sup>
1596
1597deselectTrack(index: number): Promise\<void>
1598
1599使用AVPlayer播放多音轨视频时取消指定音视频轨道播放,通过Promise获取返回值。
1600
1601**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1602
1603**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1604
1605**参数:**
1606
1607| 参数名   | 类型     | 必填 | 说明                 |
1608| -------- | -------- | ---- | -------------------- |
1609| index | number | 是   | 多音视频资源的轨道索引,来自[getTrackDescription](#gettrackdescription9-1)接口所获取的轨道信息[MediaDescription](#mediadescription8)。 |
1610
1611**返回值:**
1612
1613| 类型           | 说明                      |
1614| -------------- | ------------------------- |
1615| Promise\<void> | 取消选择曲目完成的Promise返回值。 |
1616
1617**错误码:**
1618
1619以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1620
1621| 错误码ID | 错误信息                                  |
1622| -------- | ----------------------------------------- |
1623| 401      | The parameter check failed. Return by promise.       |
1624| 5400102  | Operation not allowed. Return by promise. |
1625
1626**示例:**
1627
1628<!--code_no_check-->
1629```ts
1630import { BusinessError } from '@kit.BasicServicesKit';
1631
1632let avPlayer: media.AVPlayer = await media.createAVPlayer();
1633let audioTrackIndex: Object = 0;
1634avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
1635  if (arrList != null) {
1636    for (let i = 0; i < arrList.length; i++) {
1637      if (i != 0) {
1638        // 获取音频轨道列表
1639        audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX];
1640      }
1641    }
1642  } else {
1643    console.error(`Failed to get TrackDescription, error:${error}`);
1644  }
1645});
1646
1647// 选择其中一个音频轨道
1648avPlayer.selectTrack(parseInt(audioTrackIndex.toString()));
1649// 取消选择上次选中的音频轨道,并恢复到默认音频轨道。
1650avPlayer.deselectTrack(parseInt(audioTrackIndex.toString()));
1651```
1652
1653### setDecryptionConfig<sup>11+</sup>
1654
1655setDecryptionConfig(mediaKeySession: drm.MediaKeySession, secureVideoPath: boolean): void
1656
1657设置解密配置。当收到[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)时,需根据事件上报的信息创建相关配置并设置解密配置,否则无法播放。
1658
1659**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1660
1661**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1662
1663**参数:**
1664
1665| 参数名   | 类型                                                         | 必填 | 说明                                         |
1666| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- |
1667| mediaKeySession | [drm.MediaKeySession](../apis-drm-kit/js-apis-drm.md#mediakeysession) | 是   | 解密会话 |
1668| secureVideoPath | boolean | 是 | 安全视频通路,true表示选择安全视频通路,false表示选择非安全视频通路 |
1669
1670**错误码:**
1671
1672以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1673
1674| 错误码ID | 错误信息                                  |
1675| -------- | ----------------------------------------- |
1676| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
1677
1678**示例:**
1679
1680关于drm模块的示例具体可见[js-apis-drm.md](../apis-drm-kit/js-apis-drm.md)。
1681```ts
1682import { drm } from '@kit.DrmKit';
1683
1684// 创建MediaKeySystem系统
1685let keySystem:drm.MediaKeySystem = drm.createMediaKeySystem('com.clearplay.drm');
1686// 创建MediaKeySession解密会话
1687let keySession:drm.MediaKeySession = keySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
1688// 生成许可证请求、设置许可证响应等
1689// 安全视频通路标志
1690let secureVideoPath:boolean = false;
1691// 设置解密配置
1692avPlayer.setDecryptionConfig(keySession, secureVideoPath);
1693```
1694
1695### getMediaKeySystemInfos<sup>11+</sup>
1696
1697getMediaKeySystemInfos(): Array\<drm.MediaKeySystemInfo>
1698
1699获取当前播放的媒体资源的MediaKeySystemInfo。需要在[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)触发成功后才能调用。
1700
1701**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1702
1703**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1704
1705**返回值:**
1706
1707| 类型                                                   | 说明                                              |
1708| ------------------------------------------------------ | ------------------------------------------------- |
1709|  Array<[drm.MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)> | MediaKeySystemInfo数组,MediaKeySystemInfo具有uuid和pssh两个属性。 |
1710
1711**示例:**
1712
1713```ts
1714import { drm } from '@kit.DrmKit';
1715
1716const infos = avPlayer.getMediaKeySystemInfos();
1717console.info('GetMediaKeySystemInfos count: ' + infos.length);
1718for (let i = 0; i < infos.length; i++) {
1719  console.info('GetMediaKeySystemInfos uuid: ' + infos[i]["uuid"]);
1720  console.info('GetMediaKeySystemInfos pssh: ' + infos[i]["pssh"]);
1721}
1722```
1723
1724### seek<sup>9+</sup>
1725
1726seek(timeMs: number, mode?:SeekMode): void
1727
1728跳转到指定播放位置,只能在prepared/playing/paused/completed状态调用,可以通过[seekDone事件](#onseekdone9)确认是否生效。
1729注:直播场景不支持seek。
1730
1731**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1732
1733**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1734
1735**参数:**
1736
1737| 参数名 | 类型                   | 必填 | 说明                                                         |
1738| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
1739| timeMs | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, [duration](#属性)]。 |
1740| mode   | [SeekMode](#seekmode8) | 否   | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式,**仅在视频资源播放时设置**。 |
1741
1742**示例:**
1743
1744```ts
1745let seekTime: number = 1000
1746avPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC)
1747```
1748
1749### on('seekDone')<sup>9+</sup>
1750
1751on(type: 'seekDone', callback: Callback\<number>): void
1752
1753监听seek生效的事件。
1754
1755**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1756
1757**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1758
1759**参数:**
1760
1761| 参数名   | 类型     | 必填 | 说明                                                         |
1762| -------- | -------- | ---- | ------------------------------------------------------------ |
1763| type     | string   | 是   | seek生效的事件回调类型,支持的事件:'seekDone',每次调用seek后都会回调此事件。 |
1764| callback | Callback\<number> | 是   | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。 |
1765
1766**示例:**
1767
1768```ts
1769avPlayer.on('seekDone', (seekDoneTime:number) => {
1770  console.info('seekDone called,and seek time is:' + seekDoneTime)
1771})
1772```
1773
1774### off('seekDone')<sup>9+</sup>
1775
1776off(type: 'seekDone', callback?: Callback\<number>): void
1777
1778取消监听seek生效的事件。
1779
1780**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1781
1782**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1783
1784**参数:**
1785
1786| 参数名 | 类型   | 必填 | 说明                                                 |
1787| ------ | ------ | ---- | ---------------------------------------------------- |
1788| type   | string | 是   | seek生效的事件回调类型,取消注册的事件:'seekDone'。 |
1789| callback | Callback\<number> | 否   | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。<br/>从API version 12开始支持此参数。 |
1790
1791**示例:**
1792
1793```ts
1794avPlayer.off('seekDone')
1795```
1796
1797### setSpeed<sup>9+</sup>
1798
1799setSpeed(speed: PlaybackSpeed): void
1800
1801设置倍速模式,只能在prepared/playing/paused/completed状态调用,可以通过[speedDone事件](#onspeeddone9)确认是否生效。
1802注:直播场景不支持setSpeed。
1803
1804**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1805
1806**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1807
1808**参数:**
1809
1810| 参数名 | 类型                             | 必填 | 说明               |
1811| ------ | -------------------------------- | ---- | ------------------ |
1812| speed  | [PlaybackSpeed](#playbackspeed8) | 是   | 指定播放倍速模式。 |
1813
1814**示例:**
1815
1816```ts
1817avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X)
1818```
1819
1820### on('speedDone')<sup>9+</sup>
1821
1822on(type: 'speedDone', callback: Callback\<number>): void
1823
1824监听setSpeed生效的事件
1825
1826**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1827
1828**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1829
1830**参数:**
1831
1832| 参数名   | 类型     | 必填 | 说明                                                         |
1833| -------- | -------- | ---- | ------------------------------------------------------------ |
1834| type     | string   | 是   | setSpeed生效的事件回调类型,支持的事件:'speedDone',每次调用setSpeed后都会回调此事件。 |
1835| callback | Callback\<number> | 是   | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。 |
1836
1837**示例:**
1838
1839```ts
1840avPlayer.on('speedDone', (speed:number) => {
1841  console.info('speedDone called,and speed value is:' + speed)
1842})
1843```
1844
1845### off('speedDone')<sup>9+</sup>
1846
1847off(type: 'speedDone', callback?: Callback\<number>): void
1848
1849取消监听setSpeed生效的事件。
1850
1851**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1852
1853**参数:**
1854
1855| 参数名 | 类型   | 必填 | 说明                                                      |
1856| ------ | ------ | ---- | --------------------------------------------------------- |
1857| type   | string | 是   | setSpeed生效的事件回调类型,取消注册的事件:'speedDone'。 |
1858| callback | Callback\<number> | 否   | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。<br/>从API version 12开始支持此参数。 |
1859
1860**示例:**
1861
1862```ts
1863avPlayer.off('speedDone')
1864```
1865
1866### setBitrate<sup>9+</sup>
1867
1868setBitrate(bitrate: number): void
1869
1870设置比特率,以播放所指定比特率的流媒体资源,当前仅对**HLS/DASH协议网络流**有效。默认情况下,AVPlayer会根据网络连接速度选择合适的比特率。只能在prepared/playing/paused/completed状态调用,可以通过[bitrateDone](#onbitratedone9)事件确认是否生效。
1871
1872**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1873
1874**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1875
1876**参数:**
1877
1878| 参数名  | 类型   | 必填 | 说明                                                         |
1879| ------- | ------ | ---- | ------------------------------------------------------------ |
1880| bitrate | number | 是   | 指定比特率,须通过[availableBitrates](#onavailablebitrates9)事件获得当前HLS/DASH协议网络流可用的比特率列表,如果用户指定的比特率不在此列表中,则播放器将从可用比特率列表中选择最接近的比特率。如果通过availableBitrates事件获得的比特率列表长度为0,则不支持指定比特率,也不会产生bitrateDone回调。 |
1881
1882**示例:**
1883
1884```ts
1885let bitrate: number = 96000
1886avPlayer.setBitrate(bitrate)
1887```
1888
1889### on('bitrateDone')<sup>9+</sup>
1890
1891on(type: 'bitrateDone', callback: Callback\<number>): void
1892
1893监听setBitrate生效的事件。
1894
1895**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1896
1897**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1898
1899**参数:**
1900
1901| 参数名   | 类型     | 必填 | 说明                                                         |
1902| -------- | -------- | ---- | ------------------------------------------------------------ |
1903| type     | string   | 是   | setBitrate生效的事件回调类型,支持的事件:'bitrateDone',每次调用setBitrate后都会回调此事件。 |
1904| callback | Callback\<number> | 是   | setBitrate生效的事件回调方法,上报生效的比特率。             |
1905
1906**示例:**
1907
1908```ts
1909avPlayer.on('bitrateDone', (bitrate:number) => {
1910  console.info('bitrateDone called,and bitrate value is:' + bitrate)
1911})
1912```
1913
1914### off('bitrateDone')<sup>9+</sup>
1915
1916off(type: 'bitrateDone', callback?: Callback\<number>): void
1917
1918取消监听setBitrate生效的事件。
1919
1920**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1921
1922**参数:**
1923
1924| 参数名 | 类型   | 必填 | 说明                                                         |
1925| ------ | ------ | ---- | ------------------------------------------------------------ |
1926| type   | string | 是   | setBitrate生效的事件回调类型,取消注册的事件:'bitrateDone'。 |
1927| callback | Callback\<number> | 否   | setBitrate生效的事件回调方法,上报生效的比特率。<br/>从API version 12开始支持此参数。             |
1928
1929**示例:**
1930
1931```ts
1932avPlayer.off('bitrateDone')
1933```
1934
1935### on('availableBitrates')<sup>9+</sup>
1936
1937on(type: 'availableBitrates', callback: Callback\<Array\<number>>): void
1938
1939监听HLS/DASH协议网络流可用的比特率列表,只会在切换prepared状态后上报。
1940
1941**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1942
1943**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1944
1945**参数:**
1946
1947| 参数名   | 类型     | 必填 | 说明                                                         |
1948| -------- | -------- | ---- | ------------------------------------------------------------ |
1949| type     | string   | 是   | HLS/DASH协议网络流可用比特率上报事件回调类型,支持的事件:'availableBitrates',只会在prepared之后上报一次。 |
1950| callback | Callback\<Array\<number>> | 是   | HLS/DASH协议网络流可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。 |
1951
1952**示例:**
1953
1954```ts
1955avPlayer.on('availableBitrates', (bitrates: Array<number>) => {
1956  console.info('availableBitrates called,and availableBitrates length is:' + bitrates.length)
1957})
1958```
1959
1960### off('availableBitrates')<sup>9+</sup>
1961
1962off(type: 'availableBitrates', callback?: Callback\<Array\<number>>): void
1963
1964取消监听HLS/DASH协议网络流可用的比特率列表,调用[prepare](#prepare9)后,上报此事件。
1965
1966**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1967
1968**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1969
1970**参数:**
1971
1972| 参数名 | 类型   | 必填 | 说明                                                         |
1973| ------ | ------ | ---- | ------------------------------------------------------------ |
1974| type   | string | 是   | HLS/DASH协议网络流可用比特率上报事件回调类型,取消注册的事件:'availableBitrates'。 |
1975| callback | Callback\<Array\<number>> | 否   | HLS/DASH协议网络流可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。<br/>从API version 12开始支持此参数。 |
1976
1977**示例:**
1978
1979```ts
1980avPlayer.off('availableBitrates')
1981```
1982
1983
1984### on('mediaKeySystemInfoUpdate')<sup>11+</sup>
1985
1986on(type: 'mediaKeySystemInfoUpdate', callback: Callback\<Array\<drm.MediaKeySystemInfo>>): void
1987
1988监听mediaKeySystemInfoUpdate事件。
1989
1990**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1991
1992**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1993
1994**参数:**
1995
1996| 参数名   | 类型     | 必填 | 说明                                                         |
1997| -------- | -------- | ---- | ------------------------------------------------------------ |
1998| type     | string   | 是   | 版权保护信息更新上报事件回调类型,支持的事件:'mediaKeySystemInfoUpdate',当播放内容的版权保护信息更新时上报事件。 |
1999| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)>> | 是   | 版权保护信息更新上报事件回调方法,上报MediaKeySystemInfo数组。 |
2000
2001**示例:**
2002
2003```ts
2004import { drm } from '@kit.DrmKit';
2005
2006avPlayer.on('mediaKeySystemInfoUpdate', (mediaKeySystemInfo: Array<drm.MediaKeySystemInfo>) => {
2007    for (let i = 0; i < mediaKeySystemInfo.length; i++) {
2008      console.info('mediaKeySystemInfoUpdate happened uuid: ' + mediaKeySystemInfo[i]["uuid"]);
2009      console.info('mediaKeySystemInfoUpdate happened pssh: ' + mediaKeySystemInfo[i]["pssh"]);
2010    }
2011})
2012```
2013
2014### off('mediaKeySystemInfoUpdate')<sup>11+</sup>
2015
2016off(type: 'mediaKeySystemInfoUpdate', callback?: Callback\<Array\<drm.MediaKeySystemInfo>>): void;
2017
2018取消监听mediaKeySystemInfoUpdate事件。
2019
2020**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2021
2022**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2023
2024**参数:**
2025
2026| 参数名 | 类型   | 必填 | 说明                                                         |
2027| ------ | ------ | ---- | ------------------------------------------------------------ |
2028| type   | string | 是   | 版权保护信息更新上报事件回调类型,取消注册的事件:'mediaKeySystemInfoUpdate'。 |
2029| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)>> | 否   | 版权保护信息更新上报事件回调方法,上报版权保护信息数组。如填写该参数,则仅取消注册此回调方法,否则取消注册mediaKeySystemInfoUpdate事件的所有回调方法。 |
2030
2031**示例:**
2032
2033```ts
2034avPlayer.off('mediaKeySystemInfoUpdate')
2035```
2036
2037### setVolume<sup>9+</sup>
2038
2039setVolume(volume: number): void
2040
2041设置媒体播放音量,只能在prepared/playing/paused/completed状态调用,可以通过[volumeChange事件](#onvolumechange9)确认是否生效。
2042
2043**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2044
2045**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2046
2047**参数:**
2048
2049| 参数名 | 类型   | 必填 | 说明                                                         |
2050| ------ | ------ | ---- | ------------------------------------------------------------ |
2051| volume | number | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
2052
2053**示例:**
2054
2055```ts
2056let volume: number = 1.0
2057avPlayer.setVolume(volume)
2058```
2059
2060### on('volumeChange')<sup>9+</sup>
2061
2062on(type: 'volumeChange', callback: Callback\<number>): void
2063
2064监听setVolume生效的事件。
2065
2066**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2067
2068**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2069
2070**参数:**
2071
2072| 参数名   | 类型     | 必填 | 说明                                                         |
2073| -------- | -------- | ---- | ------------------------------------------------------------ |
2074| type     | string   | 是   | setVolume生效的事件回调类型,支持的事件:'volumeChange',每次调用setVolume后都会回调此事件。 |
2075| callback | Callback\<number> | 是   | setVolume生效的事件回调方法,上报生效的媒体音量。            |
2076
2077**示例:**
2078
2079```ts
2080avPlayer.on('volumeChange', (vol: number) => {
2081  console.info('volumeChange called,and new volume is :' + vol)
2082})
2083```
2084
2085### off('volumeChange')<sup>9+</sup>
2086
2087off(type: 'volumeChange', callback?: Callback\<number>): void
2088
2089取消监听setVolume生效的事件。
2090
2091**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2092
2093**参数:**
2094
2095| 参数名 | 类型   | 必填 | 说明                                                         |
2096| ------ | ------ | ---- | ------------------------------------------------------------ |
2097| type   | string | 是   | setVolume生效的事件回调类型,取消注册的事件:'volumeChange'。 |
2098| callback | Callback\<number> | 否   | setVolume生效的事件回调方法,上报生效的媒体音量。<br/>从API version 12开始支持此参数。            |
2099
2100**示例:**
2101
2102```ts
2103avPlayer.off('volumeChange')
2104```
2105
2106### on('endOfStream')<sup>9+</sup>
2107
2108on(type: 'endOfStream', callback: Callback\<void>): void
2109
2110监听资源播放至结尾的事件;如果用户设置[loop](#属性)=true,播放会跳转至开头重播;如果用户没有设置loop,会通过[stateChange](#onstatechange9)上报completed状态。
2111
2112**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2113
2114**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2115
2116**参数:**
2117
2118| 参数名   | 类型     | 必填 | 说明                                                         |
2119| -------- | -------- | ---- | ------------------------------------------------------------ |
2120| type     | string   | 是   | 资源播放至结尾的事件回调类型,支持的事件:'endOfStream',当播放至结尾时会上报此事件。 |
2121| callback | Callback\<void> | 是   | 资源播放至结尾的事件回调方法。                               |
2122
2123**示例:**
2124
2125```ts
2126avPlayer.on('endOfStream', () => {
2127  console.info('endOfStream called')
2128})
2129```
2130
2131### off('endOfStream')<sup>9+</sup>
2132
2133off(type: 'endOfStream', callback?: Callback\<void>): void
2134
2135取消监听资源播放至结尾的事件。
2136
2137**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2138
2139**参数:**
2140
2141| 参数名 | 类型   | 必填 | 说明                                                         |
2142| ------ | ------ | ---- | ------------------------------------------------------------ |
2143| type   | string | 是   | 资源播放至结尾的事件回调类型,取消注册的事件:'endOfStream'。 |
2144| callback | Callback\<void> | 否   | 资源播放至结尾的事件回调方法。<br/>从API version 12开始支持此参数。                               |
2145
2146**示例:**
2147
2148```ts
2149avPlayer.off('endOfStream')
2150```
2151
2152### on('timeUpdate')<sup>9+</sup>
2153
2154on(type: 'timeUpdate', callback: Callback\<number>): void
2155
2156监听资源播放当前时间,单位为毫秒(ms),用于刷新进度条当前位置,默认间隔100ms时间上报,因用户操作(seek)产生的时间变化会立刻上报。
2157
2158注:直播场景不支持timeUpdate上报。
2159
2160**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2161
2162**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2163
2164**参数:**
2165
2166| 参数名   | 类型     | 必填 | 说明                                           |
2167| -------- | -------- | ---- | ---------------------------------------------- |
2168| type     | string   | 是   | 时间更新的回调类型,支持的事件:'timeUpdate'。 |
2169| callback | Callback\<number> | 是   | 回调函数。返回当前时间。                                     |
2170
2171**示例:**
2172
2173```ts
2174avPlayer.on('timeUpdate', (time:number) => {
2175  console.info('timeUpdate called,and new time is :' + time)
2176})
2177```
2178
2179### off('timeUpdate')<sup>9+</sup>
2180
2181off(type: 'timeUpdate', callback?: Callback\<number>): void
2182
2183取消监听资源播放当前时间。
2184
2185**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2186
2187**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2188
2189**参数:**
2190
2191| 参数名 | 类型   | 必填 | 说明                                               |
2192| ------ | ------ | ---- | -------------------------------------------------- |
2193| type   | string | 是   | 时间更新的回调类型,取消注册的事件:'timeUpdate'。 |
2194| callback | Callback\<number> | 否   | 回调函数。返回当前时间。<br/>从API version 12开始支持此参数。             |
2195
2196**示例:**
2197
2198```ts
2199avPlayer.off('timeUpdate')
2200```
2201
2202### on('durationUpdate')<sup>9+</sup>
2203
2204
2205on(type: 'durationUpdate', callback: Callback\<number>): void
2206
2207监听资源播放资源的时长,单位为毫秒(ms),用于刷新进度条长度,默认只在prepared上报一次,同时允许一些特殊码流刷新多次时长。
2208注:直播场景不支持durationUpdate上报。
2209
2210**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2211
2212**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2213
2214**参数:**
2215
2216| 参数名   | 类型     | 必填 | 说明                                               |
2217| -------- | -------- | ---- | -------------------------------------------------- |
2218| type     | string   | 是   | 时长更新的回调类型,支持的事件:'durationUpdate'。 |
2219| callback | Callback\<number> | 是   | 回调函数。返回资源时长。        |
2220
2221**示例:**
2222
2223```ts
2224avPlayer.on('durationUpdate', (duration: number) => {
2225  console.info('durationUpdate called,new duration is :' + duration)
2226})
2227```
2228
2229### off('durationUpdate')<sup>9+</sup>
2230
2231off(type: 'durationUpdate', callback?: Callback\<number>): void
2232
2233取消监听资源播放资源的时长。
2234
2235**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2236
2237**参数:**
2238
2239| 参数名 | 类型   | 必填 | 说明                                                   |
2240| ------ | ------ | ---- | ------------------------------------------------------ |
2241| type   | string | 是   | 时长更新的回调类型,取消注册的事件:'durationUpdate'。 |
2242| callback | Callback\<number> | 否   | 回调函数。返回资源时长。<br/>从API version 12开始支持此参数。        |
2243
2244**示例:**
2245
2246```ts
2247avPlayer.off('durationUpdate')
2248```
2249
2250### on('bufferingUpdate')<sup>9+</sup>
2251
2252on(type: 'bufferingUpdate', callback: OnBufferingUpdateHandler): void
2253
2254订阅音视频缓存更新事件,仅网络播放支持该订阅事件。
2255
2256**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2257
2258**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2259
2260**参数:**
2261
2262| 参数名   | 类型     | 必填 | 说明                                                         |
2263| -------- | -------- | ---- | ------------------------------------------------------------ |
2264| type     | string   | 是   | 播放缓存事件回调类型,支持的事件:'bufferingUpdate'。        |
2265| callback | [OnBufferingUpdateHandler](#onbufferingupdatehandler12) | 是   | 播放缓存事件回调方法。 |
2266
2267**示例:**
2268
2269```ts
2270avPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
2271  console.info('bufferingUpdate called,and infoType value is:' + infoType + ', value is :' + value)
2272})
2273```
2274
2275### off('bufferingUpdate')<sup>9+</sup>
2276
2277off(type: 'bufferingUpdate', callback?: OnBufferingUpdateHandler): void
2278
2279取消监听音视频缓存更新事件。
2280
2281**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2282
2283**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2284
2285**参数:**
2286
2287| 参数名 | 类型   | 必填 | 说明                                                      |
2288| ------ | ------ | ---- | --------------------------------------------------------- |
2289| type   | string | 是   | 播放缓存事件回调类型,取消注册的事件:'bufferingUpdate'。 |
2290| callback | [OnBufferingUpdateHandler](#onbufferingupdatehandler12) | 否   | 播放缓存事件回调方法。 |
2291
2292**示例:**
2293
2294```ts
2295avPlayer.off('bufferingUpdate')
2296```
2297
2298### on('startRenderFrame')<sup>9+</sup>
2299
2300on(type: 'startRenderFrame', callback: Callback\<void>): void
2301
2302订阅视频播放开始首帧渲染的更新事件,仅视频播放支持该订阅事件,该事件仅代表播放服务将第一帧画面送显示模块,实际效果依赖显示服务渲染性能。
2303
2304**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2305
2306**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2307
2308**参数:**
2309
2310| 参数名   | 类型     | 必填 | 说明                                                         |
2311| -------- | -------- | ---- | ------------------------------------------------------------ |
2312| type     | string   | 是   | 视频播放开始首帧渲染事件回调类型,支持的事件:'startRenderFrame'。 |
2313| callback | Callback\<void> | 是   | 视频播放开始首帧渲染事件回调方法。                           |
2314
2315**示例:**
2316
2317```ts
2318avPlayer.on('startRenderFrame', () => {
2319  console.info('startRenderFrame called')
2320})
2321```
2322
2323### off('startRenderFrame')<sup>9+</sup>
2324
2325off(type: 'startRenderFrame', callback?: Callback\<void>): void
2326
2327取消监听视频播放开始首帧渲染的更新事件。
2328
2329**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2330
2331**参数:**
2332
2333| 参数名 | 类型   | 必填 | 说明                                                         |
2334| ------ | ------ | ---- | ------------------------------------------------------------ |
2335| type   | string | 是   | 视频播放开始首帧渲染事件回调类型,取消注册的事件:'startRenderFrame'。 |
2336| callback | Callback\<void> | 否   | 视频播放开始首帧渲染事件回调方法。<br/>从API version 12开始支持此参数。                   |
2337
2338**示例:**
2339
2340```ts
2341avPlayer.off('startRenderFrame')
2342```
2343
2344### on('videoSizeChange')<sup>9+</sup>
2345
2346on(type: 'videoSizeChange', callback: OnVideoSizeChangeHandler): void
2347
2348监听视频播放宽高变化事件,仅视频播放支持该订阅事件,默认只在prepared状态上报一次,但HLS协议码流会在切换分辨率时上报。
2349
2350**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2351
2352**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2353
2354**参数:**
2355
2356| 参数名   | 类型     | 必填 | 说明                                                         |
2357| -------- | -------- | ---- | ------------------------------------------------------------ |
2358| type     | string   | 是   | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChange'。 |
2359| callback | [OnVideoSizeChangeHandler](#onvideosizechangehandler12) | 是   | 视频播放宽高变化事件回调方法。    |
2360
2361**示例:**
2362
2363```ts
2364avPlayer.on('videoSizeChange', (width: number, height: number) => {
2365  console.info('videoSizeChange called,and width is:' + width + ', height is :' + height)
2366})
2367```
2368
2369### off('videoSizeChange')<sup>9+</sup>
2370
2371off(type: 'videoSizeChange', callback?: OnVideoSizeChangeHandler): void
2372
2373取消监听视频播放宽高变化事件。
2374
2375**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2376
2377**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2378
2379**参数:**
2380
2381| 参数名 | 类型   | 必填 | 说明                                                         |
2382| ------ | ------ | ---- | ------------------------------------------------------------ |
2383| type   | string | 是   | 视频播放宽高变化事件回调类型,取消注册的事件:'videoSizeChange'。 |
2384| callback | [OnVideoSizeChangeHandler](#onvideosizechangehandler12) | 否   | 视频播放宽高变化事件回调方法。<br/>从API version 12开始支持此参数。    |
2385
2386**示例:**
2387
2388```ts
2389avPlayer.off('videoSizeChange')
2390```
2391
2392### on('audioInterrupt')<sup>9+</sup>
2393
2394on(type: 'audioInterrupt', callback: Callback\<audio.InterruptEvent>): void
2395
2396监听音频焦点变化事件,多个音视频资源同时播放时,会根据音频焦点模型[audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9)触发此事件。应用需根据不同焦点变化事件作相应处理。具体可参考[处理音频焦点事件](../../media/audio/audio-playback-concurrency.md)。
2397
2398**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2399
2400**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2401
2402**参数:**
2403
2404| 参数名   | 类型                                                         | 必填 | 说明                                                     |
2405| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
2406| type     | string                                                       | 是   | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 |
2407| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)> | 是   | 音频焦点变化事件回调方法。                           |
2408
2409**示例:**
2410
2411```ts
2412import { audio } from '@kit.AudioKit';
2413
2414avPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
2415  console.info('audioInterrupt called,and InterruptEvent info is:' + info)
2416})
2417```
2418
2419### off('audioInterrupt')<sup>9+</sup>
2420
2421off(type: 'audioInterrupt', callback?: Callback<audio.InterruptEvent>): void
2422
2423取消监听音频焦点变化事件。
2424
2425**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2426
2427**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2428
2429**参数:**
2430
2431| 参数名 | 类型   | 必填 | 说明                                                         |
2432| ------ | ------ | ---- | ------------------------------------------------------------ |
2433| type   | string | 是   | 音频焦点变化事件回调类型,取消注册的事件:'audioInterrupt'。 |
2434| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)> | 否   | 音频焦点变化事件回调方法。<br/>从API version 12开始支持此参数。             |
2435
2436**示例:**
2437
2438```ts
2439avPlayer.off('audioInterrupt')
2440```
2441
2442### on('audioOutputDeviceChangeWithInfo')<sup>11+</sup>
2443
2444on(type: 'audioOutputDeviceChangeWithInfo', callback: Callback\<audio.AudioStreamDeviceChangeInfo>): void
2445
2446订阅监听音频流输出设备变化及原因,使用callback方式返回结果。
2447
2448在订阅此监听时,建议参考[响应音频流输出设备变更](../../media/audio/audio-output-device-change.md)自行实现设备连接或者断开时的播放器行为。
2449
2450**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2451
2452**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2453
2454**参数:**
2455
2456| 参数名   | 类型                       | 必填 | 说明                                        |
2457| :------- | :------------------------- | :--- | :------------------------------------------ |
2458| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChangeWithInfo'。 |
2459| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 是   | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 |
2460
2461**错误码:**
2462
2463| 错误码ID | 错误信息                                   |
2464| -------- | ------------------------------------------ |
2465| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.       |
2466
2467**示例:**
2468
2469```ts
2470import { audio } from '@kit.AudioKit';
2471
2472avPlayer.on('audioOutputDeviceChangeWithInfo', (data: audio.AudioStreamDeviceChangeInfo) => {
2473  console.info(`${JSON.stringify(data)}`);
2474});
2475```
2476
2477### off('audioOutputDeviceChangeWithInfo')<sup>11+</sup>
2478
2479off(type: 'audioOutputDeviceChangeWithInfo', callback?: Callback\<audio.AudioStreamDeviceChangeInfo>): void
2480
2481取消订阅监听音频流输出设备变化及原因,使用callback方式返回结果。
2482
2483**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2484
2485**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2486
2487**参数:**
2488
2489| 参数名   | 类型                       | 必填 | 说明                                        |
2490| :------- | :------------------------- | :--- | :------------------------------------------ |
2491| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
2492| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 否   | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 |
2493
2494**错误码:**
2495
2496| 错误码ID | 错误信息                                   |
2497| -------- | ------------------------------------------ |
2498| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.      |
2499
2500**示例:**
2501
2502```ts
2503avPlayer.off('audioOutputDeviceChangeWithInfo');
2504```
2505
2506### addSubtitleFromFd<sup>12+</sup>
2507
2508addSubtitleFromFd(fd: number, offset?: number, length?: number): Promise\<void>
2509
2510依据fd为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。
2511
2512**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2513
2514**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2515
2516**参数:**
2517
2518| 参数名 | 类型                   | 必填 | 说明                                                         |
2519| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
2520| fd | number   | 是   | 资源句柄,通过[resourceManager.getRawFd](../apis-localization-kit/js-apis-resource-manager.md#getrawfd9)获取。 |
2521| offset | number | 否   | 资源偏移量,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误。 |
2522| length | number | 否   | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误。 |
2523
2524**返回值:**
2525
2526| 类型           | 说明                                       |
2527| -------------- | ------------------------------------------ |
2528| Promise\<void> | 添加外挂字幕addSubtitleFromFd方法的Promise返回值。 |
2529
2530**错误码:**
2531
2532| 错误码ID | 错误信息                                   |
2533| -------- | ------------------------------------------ |
2534| 401      | The parameter check failed. Return by promise. |
2535| 5400102  | Operation not allowed. Return by promise. |
2536
2537**示例:**
2538
2539<!--code_no_check-->
2540```ts
2541import { common } from '@kit.AbilityKit'
2542
2543let context = getContext(this) as common.UIAbilityContext
2544let fileDescriptor = await context.resourceManager.getRawFd('xxx.srt')
2545
2546avPlayer.addSubtitleFromFd(fileDescriptor.fd, fileDescriptor.offset, fileDescriptor.length)
2547```
2548
2549### addSubtitleFromUrl<sup>12+</sup>
2550
2551addSubtitleFromUrl(url: string): Promise\<void>
2552
2553依据url为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。
2554
2555**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2556
2557**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2558
2559**参数:**
2560
2561| 参数名 | 类型   | 必填 | 说明                                                         |
2562| ------ | ------ | ---- | ------------------------------------------------------------ |
2563| url    | string | 是   | 外挂字幕文件地址。 |
2564
2565**返回值:**
2566
2567| 类型           | 说明                                       |
2568| -------------- | ------------------------------------------ |
2569| Promise\<void> | 添加外挂字幕addSubtitleFromUrl方法的Promise返回值。 |
2570
2571**错误码:**
2572
2573| 错误码ID | 错误信息                                   |
2574| -------- | ------------------------------------------ |
2575| 401      | The parameter check failed. Return by promise. |
2576| 5400102  | Operation not allowed. Return by promise. |
2577
2578**示例:**
2579
2580<!--code_no_check-->
2581```ts
2582let fdUrl:string = 'http://xxx.xxx.xxx/xx/index.srt'
2583
2584let avPlayer: media.AVPlayer = await media.createAVPlayer()
2585avPlayer.addSubtitleFromUrl(fdUrl)
2586```
2587
2588### on('subtitleUpdate')<sup>12+</sup>
2589
2590on(type: 'subtitleUpdate', callback: Callback\<SubtitleInfo>): void
2591
2592订阅获取外挂字幕的事件,当有外挂字幕时,会通过订阅的回调方法通知用户。用户只能订阅一个外挂字幕事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
2593
2594**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2595
2596**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2597
2598**参数:**
2599
2600| 参数名   | 类型     | 必填 | 说明                                                         |
2601| -------- | -------- | ---- | ------------------------------------------------------------ |
2602| type | string | 是   | 事件回调类型,支持的事件为:'subtitleUpdate'。 |
2603| callback | function | 是   | 外挂字幕事件回调方法。 |
2604
2605**示例:**
2606
2607```ts
2608avPlayer.on('subtitleUpdate', async (info: media.SubtitleInfo) => {
2609  if (info) {
2610    let text = (!info.text) ? '' : info.text
2611    let startTime = (!info.startTime) ? 0 : info.startTime
2612    let duration = (!info.duration) ? 0 : info.duration
2613    console.info('subtitleUpdate info: text=' + text + ' startTime=' + startTime +' duration=' + duration)
2614  } else {
2615    console.info('subtitleUpdate info is null')
2616  }
2617})
2618```
2619
2620### off('subtitleUpdate')<sup>12+</sup>
2621
2622off(type: 'subtitleUpdate', callback?: Callback\<SubtitleInfo>): void
2623
2624取消订阅获取外挂字幕的事件。
2625
2626**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2627
2628**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2629
2630**参数:**
2631
2632| 参数名   | 类型     | 必填 | 说明                                                         |
2633| -------- | -------- | ---- | ------------------------------------------------------------ |
2634| type | string | 是   | 事件回调类型,支持的事件为:'subtitleUpdate'。 |
2635| callback | function | 否   | 取消外挂字幕事件的回调方法。 |
2636
2637**示例:**
2638
2639```ts
2640avPlayer.off('subtitleUpdate')
2641```
2642
2643### on('trackChange')<sup>12+</sup>
2644
2645on(type: 'trackChange', callback: OnTrackChangeHandler): void
2646
2647订阅获取轨道变更的事件,当播放的轨道变更时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
2648
2649**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2650
2651**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2652
2653**参数:**
2654
2655| 参数名   | 类型     | 必填 | 说明                                                         |
2656| -------- | -------- | ---- | ------------------------------------------------------------ |
2657| type | string | 是   | 事件回调类型,支持的事件为:'trackChange'。 |
2658| callback | [OnTrackChangeHandler](#ontrackchangehandler12) | 是   | 轨道变更事件回调方法。 |
2659
2660**示例:**
2661
2662```ts
2663avPlayer.on('trackChange', (index: number, isSelect: boolean) => {
2664  console.info('trackChange info: index=' + index + ' isSelect=' + isSelect)
2665})
2666```
2667
2668### off('trackChange')<sup>12+</sup>
2669
2670off(type: 'trackChange', callback?: OnTrackChangeHandler): void
2671
2672取消订阅获取轨道变更的事件。
2673
2674**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2675
2676**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2677
2678**参数:**
2679
2680| 参数名   | 类型     | 必填 | 说明                                                         |
2681| -------- | -------- | ---- | ------------------------------------------------------------ |
2682| type | string | 是   | 事件回调类型,支持的事件为:'trackChange'。 |
2683| callback | [OnTrackChangeHandler](#ontrackchangehandler12) | 否   | 取消轨道变更事件的回调方法。 |
2684
2685**示例:**
2686
2687```ts
2688avPlayer.off('trackChange')
2689```
2690
2691### on('trackInfoUpdate')<sup>12+</sup>
2692
2693on(type: 'trackInfoUpdate', callback: Callback\<Array\<MediaDescription>>): void
2694
2695订阅获取轨道信息更新的事件,当播放的轨道有更新时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
2696
2697**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2698
2699**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2700
2701**参数:**
2702
2703| 参数名   | 类型     | 必填 | 说明                                                         |
2704| -------- | -------- | ---- | ------------------------------------------------------------ |
2705| type | string | 是   | 事件回调类型,支持的事件为:'trackInfoUpdate'。 |
2706| callback | Callback\<Array\<[MediaDescription](#mediadescription8)>> | 是   | 轨道信息更新事件回调方法。 |
2707
2708**示例:**
2709
2710```ts
2711avPlayer.on('trackInfoUpdate', (info: Array<media.MediaDescription>) => {
2712  if (info) {
2713    for (let i = 0; i < info.length; i++) {
2714      let propertyIndex: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX];
2715      let propertyType: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_TYPE];
2716      console.info('track info: index=' + propertyIndex + ' tracktype=' + propertyType)
2717    }
2718  } else {
2719    console.info('track info is null')
2720  }
2721})
2722```
2723
2724### off('trackInfoUpdate')<sup>12+</sup>
2725
2726off(type: 'trackInfoUpdate', callback?: Callback\<Array\<MediaDescription>>): void
2727
2728取消订阅获取轨道变更的事件。
2729
2730**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2731
2732**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2733
2734**参数:**
2735
2736| 参数名   | 类型     | 必填 | 说明                                                         |
2737| -------- | -------- | ---- | ------------------------------------------------------------ |
2738| type | string | 是   | 事件回调类型,支持的事件为:'trackInfoUpdate'。 |
2739| callback | Callback\<Array\<[MediaDescription](#mediadescription8)>> | 否   | 取消轨道信息更新事件的回调方法。 |
2740
2741**示例:**
2742
2743```ts
2744avPlayer.off('trackInfoUpdate')
2745```
2746
2747### on('amplitudeUpdate')<sup>13+</sup>
2748
2749on(type: 'amplitudeUpdate', callback: Callback\<Array\<number>>): void
2750
2751订阅音频最大电平值,音频资源播放时定时上报。
2752
2753**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2754
2755**参数:**
2756
2757| 参数名   | 类型     | 必填 | 说明                                                         |
2758| -------- | -------- | ---- | ------------------------------------------------------------ |
2759| type     | string   | 是   | 事件回调类型,支持的事件为:'amplitudeUpdate'。 |
2760| callback | Callback\<Array\<number>> | 是   | 音频最大电平值更新事件回调方法。 |
2761
2762**示例:**
2763
2764```ts
2765avPlayer.on('amplitudeUpdate', (value: Array<number>) => {
2766  console.info('amplitudeUpdate called,and amplitudeUpdate = ${value}')
2767})
2768```
2769
2770### off('amplitudeUpdate')<sup>13+</sup>
2771
2772off(type: 'amplitudeUpdate', callback?: Callback\<Array\<number>>): void
2773
2774取消订阅获取音频最大电平值事件。
2775
2776**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2777
2778**参数:**
2779
2780| 参数名 | 类型   | 必填 | 说明                                                         |
2781| ------ | ------ | ---- | ------------------------------------------------------------ |
2782| type   | string | 是   | 事件回调类型,支持的事件为:'amplitudeUpdate'。 |
2783| callback | Callback\<Array\<number>> | 否   | 取消音频最大电平值更新事件回调方法。 |
2784
2785**示例:**
2786
2787```ts
2788avPlayer.off('amplitudeUpdate')
2789```
2790
2791## AVPlayerState<sup>9+</sup>
2792
2793type AVPlayerState = 'idle' | 'initialized' | 'prepared' | 'playing' | 'paused' | 'completed' | 'stopped' | 'released' | 'error'
2794
2795[AVPlayer](#avplayer9)的状态机,可通过state属性主动获取当前状态,也可通过监听[stateChange](#onstatechange9)事件上报当前状态,状态机之间的切换规则,可参考[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)。
2796
2797**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2798
2799**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2800
2801|              类型               | 说明                                                         |
2802| :-----------------------------: | :----------------------------------------------------------- |
2803|              'idle'               | 闲置状态,AVPlayer刚被创建[createAVPlayer()](#mediacreateavplayer9)或者调用了[reset()](#reset9)方法之后,进入Idle状态。<br/>首次创建[createAVPlayer()](#mediacreateavplayer9),所有属性都为默认值。<br/>调用[reset()](#reset9)方法,url<sup>9+</sup> 或 fdSrc<sup>9+</sup>或dataSrc<sup>10+</sup>属性及loop属性会被重置,其他用户设置的属性将被保留。 |
2804|           'initialized'           | 资源初始化,在Idle 状态设置 url<sup>9+</sup> 或 fdSrc<sup>9+</sup>属性,AVPlayer会进入initialized状态,此时可以配置窗口、音频等静态属性。 |
2805|            'prepared'             | 已准备状态,在initialized状态调用[prepare()](#prepare9)方法,AVPlayer会进入prepared状态,此时播放引擎的资源已准备就绪。 |
2806|             'playing'             | 正在播放状态,在prepared/paused/completed状态调用[play()](#play9)方法,AVPlayer会进入playing状态。 |
2807|             'paused'              | 暂停状态,在playing状态调用pause方法,AVPlayer会进入paused状态。 |
2808|            'completed'            | 播放至结尾状态,当媒体资源播放至结尾时,如果用户未设置循环播放(loop = true),AVPlayer会进入completed状态,此时调用[play()](#play9)会进入playing状态和重播,调用[stop()](#stop9)会进入stopped状态。 |
2809|             'stopped'             | 停止状态,在prepared/playing/paused/completed状态调用[stop()](#stop9)方法,AVPlayer会进入stopped状态,此时播放引擎只会保留属性,但会释放内存资源,可以调用[prepare()](#prepare9)重新准备,也可以调用[reset()](#reset9)重置,或者调用[release()](#release9)彻底销毁。 |
2810|            'released'             | 销毁状态,销毁与当前AVPlayer关联的播放引擎,无法再进行状态转换,调用[release()](#release9)方法后,会进入released状态,结束流程。 |
2811| 'error' | 错误状态,当**播放引擎**发生**不可逆的错误**(详见[媒体错误码](errorcode-media.md)),则会转换至当前状态,可以调用[reset()](#reset9)重置,也可以调用[release()](#release9)销毁重建。<br/>**注意:** 区分error状态和 [on('error')](#onerror9) :<br/>1、进入error状态时,会触发on('error')监听事件,可以通过on('error')事件获取详细错误信息;<br/>2、处于error状态时,播放服务进入不可播控的状态,要求客户端设计容错机制,使用[reset()](#reset9)重置或者[release()](#release9)销毁重建;<br/>3、如果客户端收到on('error'),但未进入error状态:<br/>原因1:客户端未按状态机调用API或传入参数错误,被AVPlayer拦截提醒,需要客户端调整代码逻辑;<br/>原因2:播放过程发现码流问题,导致容器、解码短暂异常,不影响连续播放和播控操作的,不需要客户端设计容错机制。 |
2812
2813## OnTrackChangeHandler<sup>12+</sup>
2814
2815type OnTrackChangeHandler = (index: number, isSelected: boolean) => void
2816
2817track变更事件回调方法。
2818
2819**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2820
2821**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2822
2823| 参数名   | 类型   | 必填 | 说明                                                         |
2824| ------ | ------ | ------ | ---------------------------------------------------------- |
2825| index  | number | 是 | 当前选中的track索引。     |
2826| isSelected | boolean | 是 | 当前索引的选中状态。 |
2827
2828## OnAVPlayerStateChangeHandle<sup>12+</sup>
2829
2830type OnAVPlayerStateChangeHandle = (state: AVPlayerState, reason: StateChangeReason) => void
2831
2832状态机切换事件回调方法。
2833
2834**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2835
2836**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2837
2838| 参数名   | 类型   | 必填 | 说明                                                         |
2839| ------ | ------ | ------ | ---------------------------------------------------------- |
2840| state  | [AVPlayerState](#avplayerstate9) | 是 | 当前播放状态。     |
2841| reason | [StateChangeReason](#statechangereason9) | 是 | 当前播放状态的切换原因。 |
2842
2843## OnBufferingUpdateHandler<sup>12+</sup>
2844
2845type OnBufferingUpdateHandler = (infoType: BufferingInfoType, value: number) => void
2846
2847播放缓存事件回调方法。
2848
2849**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2850
2851**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2852
2853| 参数名   | 类型   | 必填 | 说明                                                         |
2854| ------ | ------ | ------ | ------------------------------------------------------------ |
2855| infoType  | [BufferingInfoType](#bufferinginfotype8) | 是 | 缓存时间类型。     |
2856| value | number | 是 | value值固定为0。 |
2857
2858## OnVideoSizeChangeHandler<sup>12+</sup>
2859
2860type OnVideoSizeChangeHandler = (width: number, height: number) => void
2861
2862视频播放宽高变化事件回调方法。
2863
2864**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2865
2866**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2867
2868| 参数名   | 类型   | 必填 | 说明                                                         |
2869| ------ | ------ | ------ | ------------------------------------------------------------ |
2870| width  | number | 是 | 视频宽度。     |
2871| height | number | 是 | 视频高度。 |
2872
2873## AVFileDescriptor<sup>9+</sup>
2874
2875音视频文件资源描述,一种特殊资源的播放方式,使用场景:应用中的音频资源被连续存储在同一个文件中,需要根据偏移量和长度进行播放。
2876
2877**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2878
2879**系统能力:** SystemCapability.Multimedia.Media.Core
2880
2881| 名称   | 类型   | 必填 | 说明                                                         |
2882| ------ | ------ | ---- | ------------------------------------------------------------ |
2883| fd     | number | 是   | 资源句柄,通过[resourceManager.getRawFd](../apis-localization-kit/js-apis-resource-manager.md#getrawfd9)获取,也可以通过[fs.open](../apis-core-file-kit/js-apis-file-fs.md#fsopen)获取。    |
2884| offset | number | 否   | 资源偏移量,默认值为0,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 |
2885| length | number | 否   | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 |
2886
2887## AVDataSrcDescriptor<sup>10+</sup>
2888
2889音视频文件资源描述,用于DataSource播放方式,使用场景:应用在未获取完整音视频资源时,允许用户创建播放实例并开始播放,达到提前播放的目的。
2890
2891**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2892
2893**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2894
2895| 名称   | 类型   | 必填 | 说明                                                         |
2896| ------ | ------ | ---- | ------------------------------------------------------------ |
2897| fileSize     | number | 是   | 待播放文件大小(字节),-1代表大小未知。如果fileSize设置为-1, 播放模式类似于直播,不能进行seek及setSpeed操作,不能设置loop属性,因此不能重新播放。 |
2898| callback | (buffer: ArrayBuffer, length: number, pos?: number) => number | 是   | 用户设置的回调函数,用于填写数据。<br>- 函数列式:callback: (buffer: ArrayBuffer, length: number, pos?:number) => number;<br>- buffer,ArrayBuffer类型,表示被填写的内存,必选。<br>- length,number类型,表示被填写内存的最大长度,必选。<br>- pos,number类型,表示填写的数据在资源文件中的位置,可选,当fileSize设置为-1时,该参数禁止被使用。 <br>- 返回值,number类型,返回填充数据的长度,返回-1表示到达流的末尾,返回-2表示遇到不可恢复的错误。|
2899
2900## SubtitleInfo<sup>12+</sup>
2901
2902外挂字幕信息,使用场景:订阅外挂字幕事件,回调返回外挂字幕详细信息。
2903
2904**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2905
2906**系统能力:** SystemCapability.Multimedia.Media.Core
2907
2908| 名称   | 类型   | 必填 | 说明                                                         |
2909| ------ | ------ | ---- | ------------------------------------------------------------ |
2910| text | string | 否  | 字幕文本信息。 |
2911| startTime | number | 否  | 显示当前字幕文本的开始时间(单位:毫秒)。 |
2912| duration | number | 否 | 显示当前字幕文本的持续时间(单位:毫秒)。 |
2913
2914## SeekMode<sup>8+</sup>
2915
2916视频播放的Seek模式枚举,可通过seek方法作为参数传递下去。
2917
2918**系统能力:** SystemCapability.Multimedia.Media.Core
2919
2920| 名称           | 值   | 说明                                                         |
2921| -------------- | ---- | ------------------------------------------------------------ |
2922| SEEK_NEXT_SYNC | 0    | 表示跳转到指定时间点的下一个关键帧,建议向后快进的时候用这个枚举值。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2923| SEEK_PREV_SYNC | 1    | 表示跳转到指定时间点的上一个关键帧,建议向前快进的时候用这个枚举值。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2924| SEEK_CLOSEST<sup>12+</sup> | 2    | 表示跳转到距离指定时间点最近的帧,建议精准跳转进度的时候用这个枚举值。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2925
2926## SwitchMode<sup>12+</sup>
2927
2928视频播放的selectTrack模式枚举,可通过selectTrack方法作为参数传递下去,当前仅DASH协议视频轨支持该扩展参数。
2929
2930**系统能力:** SystemCapability.Multimedia.Media.Core
2931
2932| 名称           | 值   | 说明                                                         |
2933| -------------- | ---- | ------------------------------------------------------------ |
2934| SMOOTH | 0    | 表示切换后视频平滑播放,该模式切换存在延迟,不会立即生效。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2935| SEGMENT | 1    | 表示切换后从当前分片开始位置播放,该模式立即切换,会有重复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2936| CLOSEST | 2    | 表示从距离当前播放时间点最近的帧开始播放,该模式立即切换,切换后会卡住3到5s,然后恢复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2937
2938## PlaybackSpeed<sup>8+</sup>
2939
2940视频播放的倍速枚举,可通过setSpeed方法作为参数传递下去。
2941
2942**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2943
2944**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
2945
2946| 名称                 | 值   | 说明                           |
2947| -------------------- | ---- | ------------------------------ |
2948| SPEED_FORWARD_0_75_X | 0    | 表示视频播放正常播速的0.75倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2949| SPEED_FORWARD_1_00_X | 1    | 表示视频播放正常播速。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。         |
2950| SPEED_FORWARD_1_25_X | 2    | 表示视频播放正常播速的1.25倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2951| SPEED_FORWARD_1_75_X | 3    | 表示视频播放正常播速的1.75倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2952| SPEED_FORWARD_2_00_X | 4    | 表示视频播放正常播速的2.00倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2953| SPEED_FORWARD_0_50_X<sup>12+</sup> | 5    | 表示视频播放正常播速的0.50倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2954| SPEED_FORWARD_1_50_X<sup>12+</sup> | 6    | 表示视频播放正常播速的1.50倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2955| SPEED_FORWARD_3_00_X<sup>13+</sup> | 7    | 表示视频播放正常播速的3.00倍。<br>**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 |
2956| SPEED_FORWARD_0_25_X<sup>12+</sup> | 8    | 表示视频播放正常播速的0.25倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2957| SPEED_FORWARD_0_125_X<sup>12+</sup> | 9    | 表示视频播放正常播速的0.125倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2958
2959## VideoScaleType<sup>9+</sup>
2960
2961枚举,视频缩放模式。
2962
2963**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2964
2965**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
2966
2967| 名称                      | 值   | 说明                                             |
2968| ------------------------- | ---- | ------------------------------------------------ |
2969| VIDEO_SCALE_TYPE_FIT      | 0    | 默认比例类型,视频拉伸至与窗口等大。              |
2970| VIDEO_SCALE_TYPE_FIT_CROP | 1    | 保持视频宽高比拉伸至填满窗口,内容可能会有裁剪。 |
2971
2972## MediaDescription<sup>8+</sup>
2973
2974通过key-value方式获取媒体信息。
2975
2976**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2977
2978**系统能力:** SystemCapability.Multimedia.Media.Core
2979
2980| 名称          | 类型   | 必填 | 说明                                                         |
2981| ------------- | ------ | ---- | ------------------------------------------------------------ |
2982| [key: string] | Object | 是   | 该键值对支持的key取值范围,请参考[MediaDescriptionKey](#mediadescriptionkey8);每个key值的Object类型和范围,请参考[MediaDescriptionKey](#mediadescriptionkey8)对应Key值的说明 |
2983
2984**示例:**
2985
2986```ts
2987import { BusinessError } from '@kit.BasicServicesKit';
2988
2989function printfItemDescription(obj: media.MediaDescription, key: string) {
2990  let property: Object = obj[key];
2991  console.info('audio key is ' + key); // 通过key值获取对应的value。key值具体可见[MediaDescriptionKey]
2992  console.info('audio value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[MediaDescriptionKey]
2993}
2994
2995let avPlayer: media.AVPlayer | undefined = undefined;
2996media.createAVPlayer((err: BusinessError, player: media.AVPlayer) => {
2997  if(player != null) {
2998    avPlayer = player;
2999    console.info(`Succeeded in creating AVPlayer`);
3000    avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
3001      if (arrList != null) {
3002        for (let i = 0; i < arrList.length; i++) {
3003          printfItemDescription(arrList[i], media.MediaDescriptionKey.MD_KEY_TRACK_TYPE);  //打印出每条轨道MD_KEY_TRACK_TYPE的值
3004        }
3005      } else {
3006        console.error(`Failed to get TrackDescription, error:${error}`);
3007      }
3008    });
3009  } else {
3010    console.error(`Failed to create AVPlayer, error message:${err.message}`);
3011  }
3012});
3013```
3014
3015## PlaybackInfo<sup>12+</sup>
3016
3017通过key-value方式获取播放信息。
3018
3019**系统能力:** SystemCapability.Multimedia.Media.Core
3020
3021| 名称          | 类型   | 必填 | 说明                                                         |
3022| ------------- | ------ | ---- | ------------------------------------------------------------ |
3023| [key: string] | Object | 是   | 该键值对支持的key取值范围,请参考[PlaybackInfoKey](#playbackinfokey12);每个key值的Object类型和范围,请参考[PlaybackInfoKey](#playbackinfokey12)对应Key值的说明。 |
3024
3025**示例:**
3026
3027```ts
3028import { BusinessError } from '@kit.BasicServicesKit';
3029
3030function printfPlaybackInfo(obj: media.PlaybackInfo, key: string) {
3031  let property: Object = obj[key];
3032  console.info('key is ' + key); // 通过key值获取对应的value。key值具体可见[PlaybackInfoKey]
3033  console.info('value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[PlaybackInfoKey]
3034}
3035
3036let avPlayer: media.AVPlayer | undefined = undefined;
3037let playbackInfo: media.PlaybackInfo | undefined = undefined;
3038media.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => {
3039  if (player != null) {
3040    avPlayer = player;
3041    console.info(`Succeeded in creating AVPlayer`);
3042    if (avPlayer) {
3043      try {
3044        playbackInfo = await avPlayer.getPlaybackInfo();
3045        console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值
3046        printfPlaybackInfo(playbackInfo, media.PlaybackInfoKey.SERVER_IP_ADDRESS); // 打印ip的值
3047      } catch (error) {
3048        console.error(`error = ${error}`);
3049      }
3050    }
3051  } else {
3052    console.error(`Failed to create AVPlayer, error message:${err.message}`);
3053  }
3054});
3055```
3056
3057## AVRecorder<sup>9+</sup>
3058
3059音视频录制管理类,用于音视频媒体录制。在调用AVRecorder的方法前,需要先通过[createAVRecorder()](#mediacreateavrecorder9)构建一个AVRecorder实例。
3060
3061音视频录制demo可参考:[音频录制开发指导](../../media/media/using-avrecorder-for-recording.md)、[视频录制开发指导](../../media/media/video-recording.md)。
3062
3063> **说明:**
3064>
3065> 使用相机进行视频录制时,需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。
3066
3067### 属性
3068
3069**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3070
3071| 名称    | 类型                                 | 只读 | 可选 | 说明               |
3072| ------- | ------------------------------------ | ---- | ---- | ------------------ |
3073| state9+ | [AVRecorderState](#avrecorderstate9) | 是   | 否   | 音视频录制的状态。<br>**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
3074
3075### prepare<sup>9+</sup>
3076
3077prepare(config: AVRecorderConfig, callback: AsyncCallback\<void>): void
3078
3079异步方式进行音视频录制的参数设置。通过注册回调函数获取返回值。
3080
3081**需要权限:** ohos.permission.MICROPHONE
3082
3083不涉及音频录制时,可以不需要获取ohos.permission.MICROPHONE权限。
3084
3085使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。
3086
3087**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3088
3089**参数:**
3090
3091| 参数名   | 类型                                   | 必填 | 说明                                  |
3092| -------- | -------------------------------------- | ---- | ------------------------------------- |
3093| config   | [AVRecorderConfig](#avrecorderconfig9) | 是   | 配置音视频录制的相关参数。            |
3094| callback | AsyncCallback\<void>                   | 是   | 回调函数。当prepare方法成功,err为undefined,否则为错误对象。 |
3095
3096**错误码:**
3097
3098以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3099
3100| 错误码ID | 错误信息                                |
3101| -------- | --------------------------------------- |
3102| 201      | Permission denied. Return by callback.  |
3103| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.    |
3104| 5400102  | Operate not permit. Return by callback. |
3105| 5400105  | Service died. Return by callback.       |
3106
3107**示例:**
3108
3109```ts
3110import { BusinessError } from '@kit.BasicServicesKit';
3111
3112// 配置参数以实际硬件设备支持的范围为准
3113let avRecorderProfile: media.AVRecorderProfile = {
3114  audioBitrate : 48000,
3115  audioChannels : 2,
3116  audioCodec : media.CodecMimeType.AUDIO_AAC,
3117  audioSampleRate : 48000,
3118  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
3119  videoBitrate : 2000000,
3120  videoCodec : media.CodecMimeType.VIDEO_AVC,
3121  videoFrameWidth : 640,
3122  videoFrameHeight : 480,
3123  videoFrameRate : 30
3124}
3125let avRecorderConfig: media.AVRecorderConfig = {
3126  audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
3127  videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
3128  profile : avRecorderProfile,
3129  url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45
3130  rotation : 0, // 合理值0、90、180、270,非合理值prepare接口将报错
3131  location : { latitude : 30, longitude : 130 }
3132}
3133
3134avRecorder.prepare(avRecorderConfig, (err: BusinessError) => {
3135  if (err) {
3136    console.error('Failed to prepare and error is ' + err.message);
3137  } else {
3138    console.info('Succeeded in preparing');
3139  }
3140})
3141```
3142
3143### prepare<sup>9+</sup>
3144
3145prepare(config: AVRecorderConfig): Promise\<void>
3146
3147异步方式进行音视频录制的参数设置。通过Promise获取返回值。
3148
3149**需要权限:** ohos.permission.MICROPHONE
3150
3151不涉及音频录制时,可以不需要获ohos.permission.MICROPHONE权限。
3152
3153使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。
3154
3155**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3156
3157**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3158
3159**参数:**
3160
3161| 参数名 | 类型                                   | 必填 | 说明                       |
3162| ------ | -------------------------------------- | ---- | -------------------------- |
3163| config | [AVRecorderConfig](#avrecorderconfig9) | 是   | 配置音视频录制的相关参数。 |
3164
3165**返回值:**
3166
3167| 类型           | 说明                                       |
3168| -------------- | ------------------------------------------ |
3169| Promise\<void> | 异步音视频录制prepare方法的Promise返回值。 |
3170
3171**错误码:**
3172
3173以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3174
3175| 错误码ID | 错误信息                               |
3176| -------- | -------------------------------------- |
3177| 201      | Permission denied. Return by promise.  |
3178| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.    |
3179| 5400102  | Operate not permit. Return by promise. |
3180| 5400105  | Service died. Return by promise.       |
3181
3182**示例:**
3183
3184```ts
3185import { BusinessError } from '@kit.BasicServicesKit';
3186
3187// 配置参数以实际硬件设备支持的范围为准
3188let avRecorderProfile: media.AVRecorderProfile = {
3189  audioBitrate : 48000,
3190  audioChannels : 2,
3191  audioCodec : media.CodecMimeType.AUDIO_AAC,
3192  audioSampleRate : 48000,
3193  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
3194  videoBitrate : 2000000,
3195  videoCodec : media.CodecMimeType.VIDEO_AVC,
3196  videoFrameWidth : 640,
3197  videoFrameHeight : 480,
3198  videoFrameRate : 30
3199}
3200let avRecorderConfig: media.AVRecorderConfig = {
3201  audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
3202  videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
3203  profile : avRecorderProfile,
3204  url : 'fd://',  // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45
3205  rotation : 0, // 合理值0、90、180、270,非合理值prepare接口报错
3206  location : { latitude : 30, longitude : 130 }
3207}
3208
3209avRecorder.prepare(avRecorderConfig).then(() => {
3210  console.info('Succeeded in preparing');
3211}).catch((err: BusinessError) => {
3212  console.error('Failed to prepare and catch error is ' + err.message);
3213});
3214```
3215
3216### getInputSurface<sup>9+</sup>
3217
3218getInputSurface(callback: AsyncCallback\<string>): void
3219
3220异步方式获得录制需要的surface。通过注册回调函数获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。
3221
3222应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。
3223
3224需在[prepare()](#prepare9-2)事件成功触发后,才能调用getInputSurface()方法。
3225
3226**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3227
3228**参数:**
3229
3230| 参数名   | 类型                   | 必填 | 说明                        |
3231| -------- | ---------------------- | ---- | --------------------------- |
3232| callback | AsyncCallback\<string> | 是   | 回调函数。当获取surface成功,err为undefined,data为获取到的surfaceId,否则为错误对象。 |
3233
3234**错误码:**
3235
3236以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3237
3238| 错误码ID | 错误信息                                |
3239| -------- | --------------------------------------- |
3240| 5400102  | Operate not permit. Return by callback. |
3241| 5400103  | IO error. Return by callback.           |
3242| 5400105  | Service died. Return by callback.       |
3243
3244**示例:**
3245
3246```ts
3247import { BusinessError } from '@kit.BasicServicesKit';
3248let surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput
3249
3250avRecorder.getInputSurface((err: BusinessError, surfaceId: string) => {
3251  if (err) {
3252    console.error('Failed to do getInputSurface and error is ' + err.message);
3253  } else {
3254    console.info('Succeeded in doing getInputSurface');
3255    surfaceID = surfaceId;
3256  }
3257});
3258
3259```
3260
3261### getInputSurface<sup>9+</sup>
3262
3263getInputSurface(): Promise\<string>
3264
3265异步方式获得录制需要的surface。通过Promise获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。
3266
3267应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。
3268
3269需在[prepare()](#prepare9-3)事件成功触发后,才能调用getInputSurface方法。
3270
3271**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3272
3273**返回值:**
3274
3275| 类型             | 说明                             |
3276| ---------------- | -------------------------------- |
3277| Promise\<string> | 异步获得surface的Promise返回值。 |
3278
3279**错误码:**
3280
3281以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3282
3283| 错误码ID | 错误信息                               |
3284| -------- | -------------------------------------- |
3285| 5400102  | Operate not permit. Return by promise. |
3286| 5400103  | IO error. Return by promise.           |
3287| 5400105  | Service died. Return by promise.       |
3288
3289**示例:**
3290
3291```ts
3292import { BusinessError } from '@kit.BasicServicesKit';
3293let surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput
3294
3295avRecorder.getInputSurface().then((surfaceId: string) => {
3296  console.info('Succeeded in getting InputSurface');
3297  surfaceID = surfaceId;
3298}).catch((err: BusinessError) => {
3299  console.error('Failed to get InputSurface and catch error is ' + err.message);
3300});
3301```
3302
3303### updateRotation<sup>12+</sup>
3304
3305updateRotation(rotation: number): Promise\<void>
3306
3307更新视频旋转角度。通过Promise获取返回值。
3308
3309当且仅当[prepare()](#prepare9-3)事件成功触发后,且在[start()](#start9)之前,才能调用updateRotation方法。
3310
3311**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3312
3313**参数:**
3314
3315| 参数名   | 类型                 | 必填 | 说明                        |
3316| -------- | -------------------- | ---- | --------------------------- |
3317| rotation | number | 是   | 旋转角度,取值仅支持0、90、180、270度。 |
3318
3319**返回值:**
3320
3321| 类型             | 说明                             |
3322| ---------------- | -------------------------------- |
3323| Promise\<void> | 异步返回函数执行结果。 |
3324
3325**错误码:**
3326
3327以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3328
3329| 错误码ID | 错误信息                               |
3330| -------- | -------------------------------------- |
3331|   401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.   |
3332| 5400102  | Operation not allowed. Return by promise. |
3333| 5400103  | IO error. Return by promise.           |
3334| 5400105  | Service died. Return by promise.       |
3335
3336**示例:**
3337
3338```ts
3339import { BusinessError } from '@kit.BasicServicesKit';
3340
3341let rotation = 90
3342
3343avRecorder.updateRotation(rotation).then(() => {
3344  console.info('Succeeded in updateRotation');
3345}).catch((err: BusinessError) => {
3346  console.error('Failed to updateRotation and catch error is ' + err.message);
3347});
3348```
3349
3350### start<sup>9+</sup>
3351
3352start(callback: AsyncCallback\<void>): void
3353
3354异步方式开始视频录制。通过注册回调函数获取返回值。
3355
3356纯音频录制需在[prepare()](#prepare9-2)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9)事件成功触发后,才能调用start方法。
3357
3358**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3359
3360**参数:**
3361
3362| 参数名   | 类型                 | 必填 | 说明                         |
3363| -------- | -------------------- | ---- | ---------------------------- |
3364| callback | AsyncCallback\<void> | 是   |回调函数。当开始录制视频成功,err为undefined,否则为错误对象。 |
3365
3366**错误码:**
3367
3368以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3369
3370| 错误码ID | 错误信息                                |
3371| -------- | --------------------------------------- |
3372| 5400102  | Operate not permit. Return by callback. |
3373| 5400103  | IO error. Return by callback.           |
3374| 5400105  | Service died. Return by callback.       |
3375
3376**示例:**
3377
3378```ts
3379import { BusinessError } from '@kit.BasicServicesKit';
3380
3381avRecorder.start((err: BusinessError) => {
3382  if (err) {
3383    console.error('Failed to start AVRecorder and error is ' + err.message);
3384  } else {
3385    console.info('Succeeded in starting AVRecorder');
3386  }
3387});
3388```
3389
3390### start<sup>9+</sup>
3391
3392start(): Promise\<void>
3393
3394异步方式开始视频录制。通过Promise获取返回值。
3395
3396纯音频录制需在[prepare()](#prepare9-3)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9-1)事件成功触发后,才能调用start方法。
3397
3398**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3399
3400**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3401
3402**返回值:**
3403
3404| 类型           | 说明                                  |
3405| -------------- | ------------------------------------- |
3406| Promise\<void> | 异步开始视频录制方法的Promise返回值。 |
3407
3408**错误码:**
3409
3410以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3411
3412| 错误码ID | 错误信息                               |
3413| -------- | -------------------------------------- |
3414| 5400102  | Operate not permit. Return by promise. |
3415| 5400103  | IO error. Return by promise.           |
3416| 5400105  | Service died. Return by promise.       |
3417
3418**示例:**
3419
3420```ts
3421import { BusinessError } from '@kit.BasicServicesKit';
3422
3423avRecorder.start().then(() => {
3424  console.info('Succeeded in starting AVRecorder');
3425}).catch((err: BusinessError) => {
3426  console.error('Failed to start AVRecorder and catch error is ' + err.message);
3427});
3428```
3429
3430### pause<sup>9+</sup>
3431
3432pause(callback: AsyncCallback\<void>): void
3433
3434异步方式暂停视频录制。通过注册回调函数获取返回值。
3435
3436需要[start()](#start9)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9)接口来恢复录制。
3437
3438**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3439
3440**参数:**
3441
3442| 参数名   | 类型                 | 必填 | 说明                        |
3443| -------- | -------------------- | ---- | --------------------------- |
3444| callback | AsyncCallback\<void> | 是   | 回调函数。当暂停视频录制成功,err为undefined,否则为错误对象。 |
3445
3446**错误码:**
3447
3448以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3449
3450| 错误码ID | 错误信息                                |
3451| -------- | --------------------------------------- |
3452| 5400102  | Operate not permit. Return by callback. |
3453| 5400103  | IO error. Return by callback.           |
3454| 5400105  | Service died. Return by callback.       |
3455
3456**示例:**
3457
3458```ts
3459import { BusinessError } from '@kit.BasicServicesKit';
3460
3461avRecorder.pause((err: BusinessError) => {
3462  if (err) {
3463    console.error('Failed to pause AVRecorder and error is ' + err.message);
3464  } else {
3465    console.info('Succeeded in pausing');
3466  }
3467});
3468```
3469
3470### pause<sup>9+</sup>
3471
3472pause(): Promise\<void>
3473
3474异步方式暂停视频录制。通过Promise获取返回值。
3475
3476需要[start()](#start9-1)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9-1)接口来恢复录制。
3477
3478**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3479
3480**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3481
3482**返回值:**
3483
3484| 类型           | 说明                                  |
3485| -------------- | ------------------------------------- |
3486| Promise\<void> | 异步暂停视频录制方法的Promise返回值。 |
3487
3488**错误码:**
3489
3490以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3491
3492| 错误码ID | 错误信息                               |
3493| -------- | -------------------------------------- |
3494| 5400102  | Operate not permit. Return by promise. |
3495| 5400103  | IO error. Return by promise.           |
3496| 5400105  | Service died. Return by promise.       |
3497
3498**示例:**
3499
3500```ts
3501import { BusinessError } from '@kit.BasicServicesKit';
3502
3503avRecorder.pause().then(() => {
3504  console.info('Succeeded in pausing');
3505}).catch((err: BusinessError) => {
3506  console.error('Failed to pause AVRecorder and catch error is ' + err.message);
3507});
3508```
3509
3510### resume<sup>9+</sup>
3511
3512resume(callback: AsyncCallback\<void>): void
3513
3514异步方式恢复视频录制。通过注册回调函数获取返回值。
3515
3516需要在[pause()](#pause9-2)事件成功触发后,才能调用resume方法。
3517
3518**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3519
3520**参数:**
3521
3522| 参数名   | 类型                 | 必填 | 说明                         |
3523| -------- | -------------------- | ---- | ---------------------------- |
3524| callback | AsyncCallback\<void> | 是   | 回调函数。当恢复视频录制成功,err为undefined,否则为错误对象。 |
3525
3526**错误码:**
3527
3528以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3529
3530| 错误码ID | 错误信息                                |
3531| -------- | --------------------------------------- |
3532| 5400102  | Operate not permit. Return by callback. |
3533| 5400103  | IO error. Return by callback.           |
3534| 5400105  | Service died. Return by callback.       |
3535
3536**示例:**
3537
3538```ts
3539import { BusinessError } from '@kit.BasicServicesKit';
3540
3541avRecorder.resume((err: BusinessError) => {
3542  if (err) {
3543    console.error('Failed to resume AVRecorder and error is ' + err.message);
3544  } else {
3545    console.info('Succeeded in resuming AVRecorder');
3546  }
3547});
3548```
3549
3550### resume<sup>9+</sup>
3551
3552resume(): Promise\<void>
3553
3554异步方式恢复视频录制。通过Promise获取返回值。
3555
3556需要在[pause()](#pause9-3)事件成功触发后,才能调用resume方法。
3557
3558**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3559
3560**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3561
3562**返回值:**
3563
3564| 类型           | 说明                                  |
3565| -------------- | ------------------------------------- |
3566| Promise\<void> | 异步恢复视频录制方法的Promise返回值。 |
3567
3568**错误码:**
3569
3570以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3571
3572| 错误码ID | 错误信息                               |
3573| -------- | -------------------------------------- |
3574| 5400102  | Operate not permit. Return by promise. |
3575| 5400103  | IO error. Return by promise.           |
3576| 5400105  | Service died. Return by promise.       |
3577
3578**示例:**
3579
3580```ts
3581import { BusinessError } from '@kit.BasicServicesKit';
3582
3583avRecorder.resume().then(() => {
3584  console.info('Succeeded in resuming AVRecorder');
3585}).catch((err: BusinessError) => {
3586  console.error('Failed to resume  AVRecorder failed and catch error is ' + err.message);
3587});
3588```
3589
3590### stop<sup>9+</sup>
3591
3592stop(callback: AsyncCallback\<void>): void
3593
3594异步方式停止视频录制。通过注册回调函数获取返回值。
3595
3596需要在[start()](#start9)或[pause()](#pause9-2)事件成功触发后,才能调用stop方法。
3597
3598纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。
3599
3600**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3601
3602**参数:**
3603
3604| 参数名   | 类型                 | 必填 | 说明                         |
3605| -------- | -------------------- | ---- | ---------------------------- |
3606| callback | AsyncCallback\<void> | 是   | 回调函数。当停止视频录制成功,err为undefined,否则为错误对象。 |
3607
3608**错误码:**
3609
3610以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3611
3612| 错误码ID | 错误信息                                |
3613| -------- | --------------------------------------- |
3614| 5400102  | Operate not permit. Return by callback. |
3615| 5400103  | IO error. Return by callback.           |
3616| 5400105  | Service died. Return by callback.       |
3617
3618**示例:**
3619
3620```ts
3621import { BusinessError } from '@kit.BasicServicesKit';
3622
3623avRecorder.stop((err: BusinessError) => {
3624  if (err) {
3625    console.error('Failed to stop AVRecorder and error is ' + err.message);
3626  } else {
3627    console.info('Succeeded in stopping AVRecorder');
3628  }
3629});
3630```
3631
3632### stop<sup>9+</sup>
3633
3634stop(): Promise\<void>
3635
3636异步方式停止视频录制。通过Promise获取返回值。
3637
3638需要在[start()](#start9-1)或[pause()](#pause9-3)事件成功触发后,才能调用stop方法。
3639
3640纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。
3641
3642**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3643
3644**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3645
3646**返回值:**
3647
3648| 类型           | 说明                                  |
3649| -------------- | ------------------------------------- |
3650| Promise\<void> | 异步停止视频录制方法的Promise返回值。 |
3651
3652**错误码:**
3653
3654以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3655
3656| 错误码ID | 错误信息                               |
3657| -------- | -------------------------------------- |
3658| 5400102  | Operate not permit. Return by promise. |
3659| 5400103  | IO error. Return by promise.           |
3660| 5400105  | Service died. Return by promise.       |
3661
3662**示例:**
3663
3664```ts
3665import { BusinessError } from '@kit.BasicServicesKit';
3666
3667avRecorder.stop().then(() => {
3668  console.info('Succeeded in stopping AVRecorder');
3669}).catch((err: BusinessError) => {
3670  console.error('Failed to stop AVRecorder and catch error is ' + err.message);
3671});
3672```
3673
3674### reset<sup>9+</sup>
3675
3676reset(callback: AsyncCallback\<void>): void
3677
3678异步方式重置音视频录制。通过注册回调函数获取返回值。
3679
3680纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。
3681
3682**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3683
3684**参数:**
3685
3686| 参数名   | 类型                 | 必填 | 说明                           |
3687| -------- | -------------------- | ---- | ------------------------------ |
3688| callback | AsyncCallback\<void> | 是   | 回调函数。当重置音视频录制成功,err为undefined,否则为错误对象。 |
3689
3690**错误码:**
3691
3692以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3693
3694| 错误码ID | 错误信息                          |
3695| -------- | --------------------------------- |
3696| 5400103  | IO error. Return by callback.     |
3697| 5400105  | Service died. Return by callback. |
3698
3699**示例:**
3700
3701```ts
3702import { BusinessError } from '@kit.BasicServicesKit';
3703
3704avRecorder.reset((err: BusinessError) => {
3705  if (err) {
3706    console.error('Failed to reset AVRecorder and error is ' + err.message);
3707  } else {
3708    console.info('Succeeded in resetting AVRecorder');
3709  }
3710});
3711```
3712
3713### reset<sup>9+</sup>
3714
3715reset(): Promise\<void>
3716
3717异步方式重置音视频录制。通过Promise获取返回值。
3718
3719纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。
3720
3721**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3722
3723**返回值:**
3724
3725| 类型           | 说明                                    |
3726| -------------- | --------------------------------------- |
3727| Promise\<void> | 异步重置音视频录制方法的Promise返回值。 |
3728
3729**错误码:**
3730
3731以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3732
3733| 错误码ID | 错误信息                         |
3734| -------- | -------------------------------- |
3735| 5400103  | IO error. Return by promise.     |
3736| 5400105  | Service died. Return by promise. |
3737
3738**示例:**
3739
3740```ts
3741import { BusinessError } from '@kit.BasicServicesKit';
3742
3743avRecorder.reset().then(() => {
3744  console.info('Succeeded in resetting AVRecorder');
3745}).catch((err: BusinessError) => {
3746  console.error('Failed to reset and catch error is ' + err.message);
3747});
3748```
3749
3750### release<sup>9+</sup>
3751
3752release(callback: AsyncCallback\<void>): void
3753
3754异步方式释放音视频录制资源。通过注册回调函数获取返回值。
3755
3756释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。
3757
3758**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3759
3760**参数:**
3761
3762| 参数名   | 类型                 | 必填 | 说明                               |
3763| -------- | -------------------- | ---- | ---------------------------------- |
3764| callback | AsyncCallback\<void> | 是   | 回调函数。当释放音视频录制资源成功,err为undefined,否则为错误对象。 |
3765
3766**错误码:**
3767
3768以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3769
3770| 错误码ID | 错误信息                          |
3771| -------- | --------------------------------- |
3772| 5400105  | Service died. Return by callback. |
3773
3774**示例:**
3775
3776```ts
3777import { BusinessError } from '@kit.BasicServicesKit';
3778
3779avRecorder.release((err: BusinessError) => {
3780  if (err) {
3781    console.error('Failed to release AVRecorder and error is ' + err.message);
3782  } else {
3783    console.info('Succeeded in releasing AVRecorder');
3784  }
3785});
3786```
3787
3788### release<sup>9+</sup>
3789
3790release(): Promise\<void>
3791
3792异步方式释放音视频录制资源。通过Promise获取返回值。
3793
3794释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。
3795
3796**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3797
3798**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3799
3800**返回值:**
3801
3802| 类型           | 说明                                        |
3803| -------------- | ------------------------------------------- |
3804| Promise\<void> | 异步释放音视频录制资源方法的Promise返回值。 |
3805
3806**错误码:**
3807
3808以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3809
3810| 错误码ID | 错误信息                          |
3811| -------- | --------------------------------- |
3812| 5400105  | Service died. Return by callback. |
3813
3814**示例:**
3815
3816```ts
3817import { BusinessError } from '@kit.BasicServicesKit';
3818
3819avRecorder.release().then(() => {
3820  console.info('Succeeded in releasing AVRecorder');
3821}).catch((err: BusinessError) => {
3822  console.error('Failed to release AVRecorder and catch error is ' + err.message);
3823});
3824```
3825
3826### getCurrentAudioCapturerInfo<sup>11+</sup>
3827
3828getCurrentAudioCapturerInfo(callback: AsyncCallback\<audio.AudioCapturerChangeInfo>): void
3829
3830异步方式获取当前音频采集参数。通过注册回调函数获取返回值。
3831
3832在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
3833
3834**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3835
3836**参数**:
3837
3838| 参数名   | 类型                                                         | 必填 | 说明                                 |
3839| -------- | ------------------------------------------------------------ | ---- | ------------------------------------ |
3840| callback | AsyncCallback\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是   | 回调函数。当获取音频采集参数成功时,err为undefined,data为获取到的audio.AudioCapturerChangeInfo,否则为错误对象。 |
3841
3842**错误码**:
3843
3844以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3845
3846| 错误码ID | 错误信息                                   |
3847| -------- | ------------------------------------------ |
3848| 5400102  | Operation not allowed. |
3849| 5400103  | I/O error.             |
3850| 5400105  | Service died. Return by callback.          |
3851
3852**示例**:
3853
3854```ts
3855import { audio } from '@kit.AudioKit';
3856
3857let currentCapturerInfo: audio.AudioCapturerChangeInfo;
3858
3859avRecorder.getCurrentAudioCapturerInfo((err: BusinessError, capturerInfo: audio.AudioCapturerChangeInfo) => {
3860  if (err) {
3861    console.error('Failed to get CurrentAudioCapturerInfo and error is ' + err.message);
3862  } else {
3863    console.info('Succeeded in getting CurrentAudioCapturerInfo');
3864    currentCapturerInfo = capturerInfo;
3865  }
3866});
3867```
3868
3869### getCurrentAudioCapturerInfo<sup>11+</sup>
3870
3871getCurrentAudioCapturerInfo(): Promise\<audio.AudioCapturerChangeInfo>
3872
3873异步方式获取当前音频采集参数。通过Promise获取返回值。
3874
3875在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
3876
3877**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3878
3879**返回值**:
3880
3881| 类型                                                         | 说明                                              |
3882| ------------------------------------------------------------ | ------------------------------------------------- |
3883| Promise\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | Promise对象,返回获取的当前音频采集参数。 |
3884
3885**错误码**:
3886
3887以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3888
3889| 错误码ID | 错误信息                         |
3890| -------- | -------------------------------- |
3891| 5400102  | Operation not allowed.           |
3892| 5400103  | I/O error.                       |
3893| 5400105  | Service died. Return by promise. |
3894
3895**示例**:
3896
3897```ts
3898import { audio } from '@kit.AudioKit';
3899
3900let currentCapturerInfo: audio.AudioCapturerChangeInfo;
3901
3902avRecorder.getCurrentAudioCapturerInfo().then((capturerInfo: audio.AudioCapturerChangeInfo) => {
3903  console.info('Succeeded in getting CurrentAudioCapturerInfo');
3904  currentCapturerInfo = capturerInfo;
3905}).catch((err: BusinessError) => {
3906  console.error('Failed to get CurrentAudioCapturerInfo and catch error is ' + err.message);
3907});
3908```
3909
3910### getAudioCapturerMaxAmplitude<sup>11+</sup>
3911
3912getAudioCapturerMaxAmplitude(callback: AsyncCallback\<number>): void
3913
3914异步方式获取当前音频最大振幅。通过注册回调函数获取返回值。
3915
3916在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
3917
3918调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。
3919
3920**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3921
3922**参数**:
3923
3924| 参数名   | 类型                   | 必填 | 说明                                 |
3925| -------- | ---------------------- | ---- | ------------------------------------ |
3926| callback | AsyncCallback\<number> | 是   |  回调函数。获取当前音频最大振幅成功时,err为undefined,data为获取到的最大振幅,否则为错误对象。 |
3927
3928**错误码**:
3929
3930以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3931
3932| 错误码ID | 错误信息                                   |
3933| -------- | ------------------------------------------ |
3934| 5400102  | Operation not allowed. |
3935| 5400105  | Service died. Return by callback.          |
3936
3937**示例**:
3938
3939```ts
3940let maxAmplitude: number;
3941
3942avRecorder.getAudioCapturerMaxAmplitude((err: BusinessError, amplitude: number) => {
3943  if (err) {
3944    console.error('Failed to get AudioCapturerMaxAmplitude and error is ' + err.message);
3945  } else {
3946    console.info('Succeeded in getting AudioCapturerMaxAmplitude');
3947    maxAmplitude = amplitude;
3948  }
3949});
3950```
3951
3952### getAudioCapturerMaxAmplitude<sup>11+</sup>
3953
3954getAudioCapturerMaxAmplitude(): Promise\<number>
3955
3956异步方式获取当前音频最大振幅参数。通过Promise获取返回值。
3957
3958在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
3959
3960调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。
3961
3962**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3963
3964**返回值**:
3965
3966| 类型             | 说明                                              |
3967| ---------------- | ------------------------------------------------- |
3968| Promise\<number> | Promise对象,返回获取的当前音频最大振幅。 |
3969
3970**错误码**:
3971
3972以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3973
3974| 错误码ID | 错误信息                         |
3975| -------- | -------------------------------- |
3976| 5400102  | Operation not allowed.           |
3977| 5400105  | Service died. Return by promise. |
3978
3979**示例**:
3980
3981```ts
3982let maxAmplitude: number;
3983
3984avRecorder.getAudioCapturerMaxAmplitude().then((amplitude: number) => {
3985  console.info('Succeeded in getting AudioCapturerMaxAmplitude');
3986  maxAmplitude = amplitude;
3987}).catch((err: BusinessError) => {
3988  console.error('Failed to get AudioCapturerMaxAmplitude and catch error is ' + err.message);
3989});
3990```
3991
3992### getAvailableEncoder<sup>11+</sup>
3993
3994getAvailableEncoder(callback: AsyncCallback\<Array\<EncoderInfo>>): void
3995
3996异步方式获取可用的编码器参数。通过注册回调函数获取返回值。
3997
3998**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3999
4000**参数**:
4001
4002| 参数名   | 类型                                                  | 必填 | 说明                                 |
4003| -------- | ----------------------------------------------------- | ---- | ------------------------------------ |
4004| callback | AsyncCallback\<Array\<[EncoderInfo](#encoderinfo11)>> | 是   | 回调函数。获取可用的编码器参数成功时,err为undefined,data为获取到的编码器参数,否则为错误对象。 |
4005
4006**错误码**:
4007
4008以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4009
4010| 错误码ID | 错误信息                                   |
4011| -------- | ------------------------------------------ |
4012| 5400102  | Operation not allowed. |
4013| 5400105  | Service died. Return by callback.          |
4014
4015**示例**:
4016
4017```ts
4018let encoderInfo: media.EncoderInfo;
4019
4020avRecorder.getAvailableEncoder((err: BusinessError, info: media.EncoderInfo[]) => {
4021  if (err) {
4022    console.error('Failed to get AvailableEncoder and error is ' + err.message);
4023  } else {
4024    console.info('Succeeded in getting AvailableEncoder');
4025    encoderInfo = info[0];
4026  }
4027});
4028```
4029
4030### getAvailableEncoder<sup>11+</sup>
4031
4032getAvailableEncoder(): Promise\<Array\<EncoderInfo>>
4033
4034异步方式获取可用的编码器参数。通过注册回调函数获取返回值。
4035
4036**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
4037
4038**返回值**:
4039
4040| 类型                                            | 说明                                            |
4041| ----------------------------------------------- | ----------------------------------------------- |
4042| Promise\<Array\<[EncoderInfo](#encoderinfo11)>> | Promise对象,返回获取的可用的编码器参数。 |
4043
4044**错误码**:
4045
4046以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4047
4048| 错误码ID | 错误信息                         |
4049| -------- | -------------------------------- |
4050| 5400102  | Operation not allowed.           |
4051| 5400105  | Service died. Return by promise. |
4052
4053**示例**:
4054
4055```ts
4056let encoderInfo: media.EncoderInfo;
4057
4058avRecorder.getAvailableEncoder().then((info: media.EncoderInfo[]) => {
4059  console.info('Succeeded in getting AvailableEncoder');
4060  encoderInfo = info[0];
4061}).catch((err: BusinessError) => {
4062  console.error('Failed to get AvailableEncoder and catch error is ' + err.message);
4063});
4064```
4065
4066### getAVRecorderConfig<sup>11+</sup>
4067
4068getAVRecorderConfig(callback: AsyncCallback\<AVRecorderConfig>): void
4069
4070异步方式获取实时的配置参数。通过注册回调函数获取返回值。
4071
4072只能在[prepare()](#prepare9-2)接口调用后调用。
4073
4074**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4075
4076**参数:**
4077
4078| 参数名   | 类型                   | 必填 | 说明                        |
4079| -------- | ---------------------- | ---- | --------------------------- |
4080| callback | AsyncCallback\<[AVRecorderConfig](#avrecorderconfig9)> | 是   | 回调函数。获取实时配置的参数成功时,err为undefined,data为获取到的配置参数,否则为错误对象。 |
4081
4082**错误码:**
4083
4084以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
4085
4086| 错误码ID | 错误信息                                   |
4087| -------- | ------------------------------------------ |
4088| 5400102  | Operate not permit. Return by callback. |
4089| 5400103  | IO error. Return by callback.             |
4090| 5400105  | Service died. Return by callback.          |
4091
4092**示例:**
4093
4094```ts
4095import { BusinessError } from '@kit.BasicServicesKit';
4096
4097let avConfig: media.AVRecorderConfig;
4098
4099avRecorder.getAVRecorderConfig((err: BusinessError, config: media.AVRecorderConfig) => {
4100  if (err) {
4101    console.error('Failed to get avConfig and error is ' + err.message);
4102  } else {
4103    console.info('Succeeded in getting AVRecorderConfig');
4104    avConfig = config;
4105  }
4106});
4107```
4108
4109### getAVRecorderConfig<sup>11+</sup>
4110
4111getAVRecorderConfig(): Promise\<AVRecorderConfig>;
4112
4113异步方式获取实时的配置参数。通过Promise获取返回值。
4114
4115只能在[prepare()](#prepare9-3)接口调用后调用。
4116
4117**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4118
4119**返回值:**
4120
4121| 类型             | 说明                             |
4122| ---------------- | -------------------------------- |
4123| Promise\<[AVRecorderConfig](#avrecorderconfig9)> | 异步获得实时配置参数的回调方法。 |
4124
4125**错误码:**
4126
4127以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
4128
4129| 错误码ID | 错误信息                                  |
4130| -------- | ----------------------------------------- |
4131| 5400102  | Operate not permit. Return by promise. |
4132| 5400103  | IO error. Return by promise.             |
4133| 5400105  | Service died. Return by promise.          |
4134
4135**示例:**
4136
4137```ts
4138import { BusinessError } from '@kit.BasicServicesKit';
4139
4140let avConfig: media.AVRecorderConfig;
4141
4142avRecorder.getAVRecorderConfig().then((config: media.AVRecorderConfig) => {
4143  console.info('Succeeded in getting AVRecorderConfig');
4144  avConfig = config;
4145}).catch((err: BusinessError) => {
4146  console.error('Failed to get AVRecorderConfig and catch error is ' + err.message);
4147});
4148```
4149
4150### on('stateChange')<sup>9+</sup>
4151
4152on(type: 'stateChange', callback: OnAVRecorderStateChangeHandler): void
4153
4154订阅录制状态机AVRecorderState切换的事件,当 AVRecorderState状态机发生变化时,会通过订阅的回调方法通知用户。用户只能订阅一个状态机切换事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
4155
4156**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4157
4158**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4159
4160**参数:**
4161
4162| 参数名   | 类型     | 必填 | 说明                                                         |
4163| -------- | -------- | ---- | ------------------------------------------------------------ |
4164| type     | string   | 是   | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 |
4165| callback | [OnAVRecorderStateChangeHandler](#onavrecorderstatechangehandler12) | 是   | 状态机切换事件回调方法。 |
4166
4167**错误码:**
4168
4169以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4170
4171| 错误码ID | 错误信息                          |
4172| -------- | --------------------------------- |
4173| 5400103  | IO error. Return by callback.     |
4174| 5400105  | Service died. Return by callback. |
4175
4176**示例:**
4177
4178```ts
4179avRecorder.on('stateChange', async (state: media.AVRecorderState, reason: media.StateChangeReason) => {
4180  console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
4181});
4182```
4183
4184### off('stateChange')<sup>9+</sup>
4185
4186off(type: 'stateChange', callback?: OnAVRecorderStateChangeHandler): void
4187
4188取消订阅播放状态机[AVRecorderState](#avrecorderstate9)切换的事件。
4189
4190**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4191
4192**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4193
4194**参数:**
4195
4196| 参数名 | 类型   | 必填 | 说明                                                         |
4197| ------ | ------ | ---- | ------------------------------------------------------------ |
4198| type   | string | 是   | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 |
4199| callback | [OnAVRecorderStateChangeHandler](#onavrecorderstatechangehandler12) | 否   | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 |
4200
4201**示例:**
4202
4203```ts
4204avRecorder.off('stateChange');
4205```
4206
4207### on('error')<sup>9+</sup>
4208
4209on(type: 'error', callback: ErrorCallback): void
4210
4211订阅AVRecorder的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVRecorderState](#avrecorderstate9)也切至error状态,用户需要通过[reset()](#reset9-2)或者[release()](#release9-2)退出录制操作。
4212
4213用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
4214
4215**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4216
4217**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4218
4219**参数:**
4220
4221| 参数名   | 类型          | 必填 | 说明                                                         |
4222| -------- | ------------- | ---- | ------------------------------------------------------------ |
4223| type     | string        | 是   | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 |
4224| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 录制错误事件回调方法。                                       |
4225
4226**错误码:**
4227
4228以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4229
4230| 错误码ID | 错误信息                                   |
4231| -------- | ------------------------------------------ |
4232| 201      | Permission denied.     |
4233| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
4234| 801      | Capability not supported. |
4235| 5400101  | No memory.             |
4236| 5400102  | Operation not allowed. |
4237| 5400103  | I/O error.             |
4238| 5400104  | Time out.              |
4239| 5400105  | Service died.          |
4240| 5400106  | Unsupported format.    |
4241| 5400107  | Audio interrupted.     |
4242
4243**示例:**
4244
4245```ts
4246import { BusinessError } from '@kit.BasicServicesKit';
4247
4248avRecorder.on('error', (err: BusinessError) => {
4249  console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
4250});
4251```
4252
4253### off('error')<sup>9+</sup>
4254
4255off(type: 'error', callback?: ErrorCallback): void
4256
4257取消订阅录制错误事件,取消后不再接收到AVRecorder的错误事件。
4258
4259**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4260
4261**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4262
4263**参数:**
4264
4265| 参数名 | 类型   | 必填 | 说明                                                         |
4266| ------ | ------ | ---- | ------------------------------------------------------------ |
4267| type   | string | 是   | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 |
4268| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否   | 录制错误事件回调方法。<br/>从API version 12开始支持此参数。                   |
4269
4270**示例:**
4271
4272```ts
4273avRecorder.off('error');
4274```
4275
4276### on('audioCapturerChange')<sup>11+</sup>
4277
4278on(type: 'audioCapturerChange', callback: Callback<audio.AudioCapturerChangeInfo>): void
4279
4280订阅录音配置变化的回调,任意录音配置的变化会触发变化后的录音配置全量信息回调。
4281
4282当用户重复订阅时,以最后一次订阅的回调接口为准。
4283
4284**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4285
4286**参数:**
4287
4288| 参数名   | 类型     | 必填 | 说明                                                         |
4289| -------- | -------- | ---- | ------------------------------------------------------------ |
4290| type     | string   | 是   |录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 |
4291| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是 | 变化后的录音配置全量信息。|
4292
4293**错误码:**
4294
4295| 错误码ID | 错误信息                                   |
4296| -------- | ------------------------------------------ |
4297| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.      |
4298
4299**示例:**
4300
4301```ts
4302import { audio } from '@kit.AudioKit'
4303
4304let capturerChangeInfo: audio.AudioCapturerChangeInfo;
4305
4306avRecorder.on('audioCapturerChange',  (audioCapturerChangeInfo: audio.AudioCapturerChangeInfo) => {
4307  console.info('audioCapturerChange called');
4308  capturerChangeInfo = audioCapturerChangeInfo;
4309});
4310```
4311
4312### off('audioCapturerChange')<sup>11+</sup>
4313
4314off(type: 'audioCapturerChange', callback?: Callback<audio.AudioCapturerChangeInfo>): void
4315
4316取消订阅录音变化的回调事件。
4317
4318**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4319
4320**参数:**
4321
4322| 参数名 | 类型   | 必填 | 说明                                                         |
4323| ------ | ------ | ---- | ------------------------------------------------------------ |
4324| type   | string | 是   | 录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 |
4325| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 否 | 变化后的录音配置全量信息。<br/>从API version 12开始支持此参数。|
4326
4327**示例:**
4328
4329```ts
4330avRecorder.off('audioCapturerChange');
4331```
4332
4333### on('photoAssetAvailable')<sup>12+</sup>
4334
4335on(type: 'photoAssetAvailable', callback: Callback\<photoAccessHelper.PhotoAsset>): void
4336
4337订阅媒体资源回调事件,当[FileGenerationMode](#filegenerationmode12)枚举设置为系统创建媒体文件时,会在[stop](#stop9-2)操作结束后把[PhotoAsset](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoasset)对象回调给应用。
4338
4339当用户重复订阅时,以最后一次订阅的回调接口为准。
4340
4341**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4342
4343**参数:**
4344
4345| 参数名   | 类型     | 必填 | 说明                                                         |
4346| -------- | -------- | ---- | ------------------------------------------------------------ |
4347| type     | string   | 是   |录像资源的回调类型,支持的事件:'photoAssetAvailable'。 |
4348| callback | Callback<[photoAccessHelper.PhotoAsset](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoasset)> | 是 | 系统创建的资源文件对应的PhotoAsset对象|
4349
4350**错误码:**
4351
4352| 错误码ID | 错误信息                                   |
4353| -------- | ------------------------------------------ |
4354| 5400103  | IO error. Return by callback.             |
4355| 5400105  | Service died. Return by callback.          |
4356
4357**示例:**
4358
4359<!--code_no_check-->
4360```ts
4361import { photoAccessHelper } from '@kit.MediaLibraryKit';
4362import { common } from '@kit.AbilityKit'
4363let photoAsset: photoAccessHelper.PhotoAsset;
4364let context = getContext(this) as common.UIAbilityContext
4365
4366// 例:处理photoAsset回调,保存video
4367async function saveVideo(asset: photoAccessHelper.PhotoAsset) {
4368  console.info("saveVideo called");
4369  try {
4370    let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
4371    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
4372    assetChangeRequest.saveCameraPhoto();
4373    await phAccessHelper.applyChanges(assetChangeRequest);
4374    console.info('apply saveVideo successfully');
4375  } catch (err) {
4376    console.error(`apply saveVideo failed with error: ${err.code}, ${err.message}`);
4377  }
4378}
4379// 注册photoAsset监听
4380avRecorder.on('photoAssetAvailable',  (asset: photoAccessHelper.PhotoAsset) => {
4381  console.info('photoAssetAvailable called');
4382  if (asset != undefined) {
4383    photoAsset = asset;
4384    // 处理photoAsset回调
4385    // 例: this.saveVideo(asset);
4386  } else {
4387    console.error('photoAsset is undefined');
4388  }
4389});
4390```
4391
4392### off('photoAssetAvailable')<sup>12+</sup>
4393
4394off(type: 'photoAssetAvailable', callback?: Callback<photoAccessHelper.PhotoAsset>): void
4395
4396取消订阅媒体资源的回调类型。
4397
4398**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4399
4400**参数:**
4401
4402| 参数名 | 类型   | 必填 | 说明                                                         |
4403| ------ | ------ | ---- | ------------------------------------------------------------ |
4404| type   | string | 是   | 录音配置变化的回调类型,支持的事件:'photoAssetAvailable'。 |
4405
4406**示例:**
4407
4408```ts
4409avRecorder.off('photoAssetAvailable');
4410```
4411
4412## AVRecorderState<sup>9+</sup>
4413
4414type AVRecorderState = 'idle' | 'prepared' | 'started' | 'paused' | 'stopped' | 'released' | 'error'
4415
4416音视频录制的状态机。可通过state属性获取当前状态。
4417
4418**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
4419
4420**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4421
4422| 类型     | 说明                                                         |
4423| -------- | ------------------------------------------------------------ |
4424| 'idle'     | 闲置状态。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,进入prepared状态。AVRecorder刚被创建,或者在任何非released状态下调用[AVRecorder.reset()](#reset9-2)方法,均进入idle状态。 |
4425| 'prepared' | 参数设置完成。此时可以调用[AVRecorder.start()](#start9)方法开始录制,进入started状态。 |
4426| 'started'  | 正在录制。此时可以调用[AVRecorder.pause()](#pause9-2)方法暂停录制,进入paused状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 |
4427| 'paused'   | 录制暂停。此时可以调用[AVRecorder.resume()](#resume9)方法继续录制,进入started状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 |
4428| 'stopped'  | 录制停止。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,重新进入prepared状态。 |
4429| 'released' | 录制资源释放。此时不能再进行任何操作。在任何其他状态下,均可以通过调用[AVRecorder.release()](#release9-2)方法进入released状态。 |
4430| 'error'    | 错误状态。当AVRecorder实例发生不可逆错误,会转换至当前状态。切换至error状态时会伴随[AVRecorder.on('error')事件](#onerror9-1),该事件会上报详细错误原因。在error状态时,用户需要调用[AVRecorder.reset()](#reset9-2)方法重置AVRecorder实例,或者调用[AVRecorder.release()](#release9-2)方法释放资源。 |
4431
4432## OnAVRecorderStateChangeHandler<sup>12+</sup>
4433
4434type OnAVRecorderStateChangeHandler = (state: AVRecorderState, reason: StateChangeReason) => void
4435
4436状态机切换事件回调方法。
4437
4438**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4439
4440**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
4441
4442| 参数名   | 类型   | 必填 | 说明                                                         |
4443| ------ | ------ | ------ | ------------------------------------------------------------ |
4444| state  | [AVRecorderState](#avrecorderstate9) | 必填 | 当前播放状态。     |
4445| reason | [StateChangeReason](#statechangereason9) | 必填 | 当前播放状态的切换原因。 |
4446
4447## AVRecorderConfig<sup>9+</sup>
4448
4449表示音视频录制的参数设置。
4450
4451通过audioSourceType和videoSourceType区分纯音频录制、纯视频录制或音视频录制。纯音频录制时,仅需要设置audioSourceType;纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。
4452
4453**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4454
4455| 名称            | 类型                                     | 必填 | 说明                                                         |
4456| --------------- | ---------------------------------------- | ---- | ------------------------------------------------------------ |
4457| audioSourceType | [AudioSourceType](#audiosourcetype9)     | 否   | 选择录制的音频源类型。选择音频录制时必填。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。|
4458| videoSourceType | [VideoSourceType](#videosourcetype9)     | 否   | 选择录制的视频源类型。选择视频录制时必填。                   |
4459| profile         | [AVRecorderProfile](#avrecorderprofile9) | 是   | 录制的profile,必要参数。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。|
4460| url             | string                                   | 是   | 录制输出URL:fd://xx (fd number) ![img](figures/zh-cn_image_url.png),必要参数。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
4461|fileGenerationMode<sup>12+</sup> | [FileGenerationMode](#filegenerationmode12)  | 否   |  创建媒体文件的模式,配合[on('photoAssetAvailable')](#onphotoassetavailable12)监听使用。|
4462| rotation<sup>(deprecated)</sup>        | number                                   | 否   | 录制的视频旋转角度,mp4格式支持0,90,180,270,默认值为0。<br>从API version 6开始支持,从API version 12开始废弃。建议使用[AVMetadata](#avmetadata11).videoOrientation替代。如果同时设置两个值,将会采用[AVMetadata](#avmetadata11).videoOrientation。     |
4463| location<sup>(deprecated)</sup>        | [Location](#location)                    | 否   | 录制的地理位置,默认不记录地理位置信息。<br>从API version 6开始支持,从API version 12开始废弃。建议使用 [AVMetadata](#avmetadata11).location。如果同时设置两个值,将会采用[AVMetadata](#avmetadata11).location。 |
4464| metadata<sup>12+</sup>        | [AVMetadata](#avmetadata11)              | 否   | 设置元数据信息。详情见 [AVMetadata](#avmetadata11)。                  |
4465
4466## AVRecorderProfile<sup>9+</sup>
4467
4468音视频录制的配置文件。
4469
4470**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4471
4472| 名称             | 类型                                         | 必填 | 说明                                                         |
4473| ---------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
4474| audioBitrate     | number                                       | 否   | 音频编码比特率,选择音频录制时必填。<br>支持范围:<br>- AAC编码格式支持比特率范围[32000 - 500000]。<br>- G711-mulaw编码格式支持比特率范围[64000 - 64000]。<br>- MP3编码格式支持范围[8000, 16000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000]。<br>当使用MP3编码格式时,采样率和比特率的映射关系: <br>- 采样率使用16K以下时,对应比特率范围为[8kbps - 64kbps]。<br>- 采样率使用16K~32K时对应的比特率范围为[8kbps - 160kbps]。<br>- 采样率使用32K以上时对应的比特率范围为[32kbps - 320kbps]。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
4475| audioChannels    | number                                       | 否   | 音频采集声道数,选择音频录制时必填。<br>- AAC编码格式支持范围[1 - 8]。<br>- G711-mulaw编码格式支持范围[1 - 1]。<br>- MP3编码格式支持范围[1 - 2]。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。       |
4476| audioCodec       | [CodecMimeType](#codecmimetype8)             | 否   | 音频编码格式,选择音频录制时必填。当前支持AUDIO_AAC,AUDIO_MP3,AUDIO_G711MU。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。     |
4477| audioSampleRate  | number                                       | 否   | 音频采样率,选择音频录制时必填。<br>支持范围:<br>- AAC编码支持采样率范围[8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000]。<br>- G711-mulaw编码支持采样率范围[8000 - 8000]。<br>- MP3编码支持采样率范围[8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000]。<br>可变比特率模式,码率仅作参考。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
4478| fileFormat       | [ContainerFormatType](#containerformattype8) | 是   | 文件的容器格式,必要参数。当前支持MP4、M4A、MP3、WAV封装格式,不支持在MP4封装格式下使用AUDIO_MP3编码格式。<br>**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。|
4479| videoBitrate     | number                                       | 否   | 视频编码比特率,选择视频录制时必填,支持范围[10000 - 100000000]。  |
4480| videoCodec       | [CodecMimeType](#codecmimetype8)             | 否   | 视频编码格式,选择视频录制时必填。当前支持VIDEO_AVC。|
4481| videoFrameWidth  | number                                       | 否   | 视频帧的宽,选择视频录制时必填,支持范围[176 - 4096]。         |
4482| videoFrameHeight | number                                       | 否   | 视频帧的高,选择视频录制时必填,支持范围[144 - 4096]。         |
4483| videoFrameRate   | number                                       | 否   | 视频帧率,选择视频录制时必填,支持范围[1 - 60]。             |
4484| isHdr<sup>11+</sup>            | boolean                        | 否   | HDR编码,选择视频录制时选填,isHdr默认为false,对应编码格式没有要求,isHdr为true时,对应的编码格式必须为video/hevc。|
4485| enableTemporalScale<sup>12+</sup>            | boolean                        | 否   | 视频录制是否支持时域分层编码功能,选择视频录制时选填,enableTemporalScale默认为false。设置为true时,编码输出的码流中部分帧可以支持跳过不编码。|
4486
4487## AudioSourceType<sup>9+</sup>
4488
4489表示视频录制中音频源类型的枚举。
4490
4491**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4492
4493| 名称                      | 值   | 说明                   |
4494| ------------------------- | ---- | ---------------------- |
4495| AUDIO_SOURCE_TYPE_DEFAULT | 0    | 默认的音频输入源类型。 |
4496| AUDIO_SOURCE_TYPE_MIC     | 1    | 表示MIC的音频输入源。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
4497| AUDIO_SOURCE_TYPE_VOICE_RECOGNITION<sup>12+</sup> | 2    | 表示语音识别场景的音频源。 |
4498| AUDIO_SOURCE_TYPE_VOICE_COMMUNICATION<sup>12+</sup>     | 7    | 表示语音通话场景的音频源。 |
4499| AUDIO_SOURCE_TYPE_VOICE_MESSAGE<sup>12+</sup> | 10    | 表示短语音消息的音频源。 |
4500| AUDIO_SOURCE_TYPE_CAMCORDER<sup>12+</sup>     | 13    | 表示相机录像的音频源。 |
4501
4502## VideoSourceType<sup>9+</sup>
4503
4504表示视频录制中视频源类型的枚举。
4505
4506**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4507
4508| 名称                          | 值   | 说明                            |
4509| ----------------------------- | ---- | ------------------------------- |
4510| VIDEO_SOURCE_TYPE_SURFACE_YUV | 0    | 输入surface中携带的是raw data。 |
4511| VIDEO_SOURCE_TYPE_SURFACE_ES  | 1    | 输入surface中携带的是ES data。  |
4512
4513## ContainerFormatType<sup>8+</sup>
4514
4515表示容器格式类型的枚举,缩写为CFT。
4516
4517**系统能力:** SystemCapability.Multimedia.Media.Core
4518
4519| 名称        | 值    | 说明                  |
4520| ----------- | ----- | --------------------- |
4521| CFT_MPEG_4  | 'mp4' | 视频的容器格式,MP4。 |
4522| CFT_MPEG_4A | 'm4a' | 音频的容器格式,M4A。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
4523| CFT_MP3<sup>12+</sup>  | 'mp3' | 音频的容器格式,MP3。 |
4524| CFT_WAV<sup>12+</sup>  | 'wav' | 音频的容器格式,WAV。 |
4525
4526## Location
4527
4528视频录制的地理位置。
4529
4530**系统能力:** SystemCapability.Multimedia.Media.Core
4531
4532| 名称      | 类型   | 必填 | 说明             |
4533| --------- | ------ | ---- | ---------------- |
4534| latitude  | number | 是   | 地理位置的纬度。 |
4535| longitude | number | 是   | 地理位置的经度。 |
4536
4537## EncoderInfo<sup>11+</sup>
4538
4539编码器和规格参数
4540
4541系统能力:SystemCapability.Multimedia.Media.AVRecorder
4542
4543| 名称       | 类型                             | 可读 | 可写 | 说明                                                         |
4544| ---------- | -------------------------------- | ---- | ---- | ------------------------------------------------------------ |
4545| mimeType   | [CodecMimeType](#codecmimetype8) | 是   | 否   | 编码器MIME类型名称                                           |
4546| type       | string                           | 是   | 否   | 编码器类型,audio表示音频编码器,video表示视频编码器         |
4547| bitRate    | [Range](#range11)                | 是   | 否   | 比特率,包含该编码器的最大和最小值                           |
4548| frameRate  | [Range](#range11)                | 是   | 否   | 视频帧率,包含帧率的最大和最小值,仅视频编码器拥有           |
4549| width      | [Range](#range11)                | 是   | 否   | 视频帧的宽度,包含宽度的最大和最小值,仅视频编码器拥有       |
4550| height     | [Range](#range11)                | 是   | 否   | 视频帧的高度,包含高度的最大和最小值,仅视频编码器拥有       |
4551| channels   | [Range](#range11)                | 是   | 否   | 音频采集声道数,包含声道数的最大和最小值,仅音频编码器拥有   |
4552| sampleRate | Array\<number>                    | 是   | 否   | 音频采样率,包含所有可以使用的音频采样率值,仅音频编码器拥有 |
4553
4554## Range<sup>11+</sup>
4555
4556表示一个类型的范围
4557
4558系统能力:SystemCapability.Multimedia.Media.AVRecorder
4559
4560| 名称 | 类型   | 可读 | 可写 | 说明         |
4561| ---- | ------ | ---- | ---- | ------------ |
4562| min  | number | 是   | 否   | 范围的最小值 |
4563| max  | number | 是   | 否   | 范围的最大值 |
4564
4565## FileGenerationMode<sup>12+</sup>
4566
4567表示创建媒体文件模式的枚举。
4568
4569**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4570
4571| 名称                          | 值   | 说明                            |
4572| ----------------------------- | ---- | ------------------------------- |
4573| APP_CREATE  | 0    | 由应用自行在沙箱创建媒体文件。 |
4574| AUTO_CREATE_CAMERA_SCENE  | 1    | 由系统创建媒体文件,当前仅在相机录制场景下生效,会忽略应用设置的url。 |
4575
4576## AVTranscoder<sup>12+</sup>
4577
4578视频转码管理类,用于视频转码。在调用AVTranscoder的方法前,需要先通过createAVTranscoder()构建一个AVTranscoder实例。
4579
4580视频转码demo可参考:[视频转码开发指导](../../media/media/using-avtranscoder-for-transcodering.md)
4581
4582### 属性
4583
4584**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4585
4586| 名称    | 类型                                 | 只读 | 可选 | 说明               |
4587| ------- | ------------------------------------ | ---- | ---- | ------------------ |
4588| fdSrc<sup>12+</sup>                                  | [AVFileDescriptor](#avfiledescriptor9)                       |  否  | 否   | 源媒体文件描述,通过该属性设置数据源。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。 |
4589| fdDst<sup>12+</sup>                               | number                 |  否  | 否   | 目标媒体文件描述,通过该属性设置数据输出。在创建AVTranscoder实例后,必须设置fdSrc和fdDst属性。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。 |
4590
4591### prepare<sup>12+</sup>
4592
4593prepare(config: AVTranscoderConfig): Promise\<void>
4594
4595异步方式进行视频转码的参数设置。通过Promise获取返回值。
4596
4597**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4598
4599**参数:**
4600
4601| 参数名 | 类型                                   | 必填 | 说明                       |
4602| ------ | -------------------------------------- | ---- | -------------------------- |
4603| config | [AVTranscoderConfig](#avtranscoderconfig12) | 是   | 配置视频转码的相关参数。 |
4604
4605**返回值:**
4606
4607| 类型           | 说明                                       |
4608| -------------- | ------------------------------------------ |
4609| Promise\<void> | 异步视频转码prepare方法的Promise返回值。 |
4610
4611**错误码:**
4612
4613以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4614
4615| 错误码ID | 错误信息                               |
4616| -------- | -------------------------------------- |
4617| 401  | The parameter check failed. Return by promise. |
4618| 5400102  | Operation not allowed. Return by promise. |
4619| 5400105  | Service died. Return by promise.       |
4620| 5400106  | Unsupported format. Returned by promise.  |
4621
4622**示例:**
4623
4624```ts
4625import { BusinessError } from '@kit.BasicServicesKit';
4626
4627// 配置参数以实际硬件设备支持的范围为准
4628let avTranscoderConfig: media.AVTranscoderConfig = {
4629  audioBitrate : 200000,
4630  audioCodec : media.CodecMimeType.AUDIO_AAC,
4631  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
4632  videoBitrate : 3000000,
4633  videoCodec : media.CodecMimeType.VIDEO_AVC,
4634  videoFrameWidth : 1280,
4635  videoFrameHeight : 720,
4636}
4637
4638avTranscoder.prepare(avTranscoderConfig).then(() => {
4639  console.info('prepare success');
4640}).catch((err: BusinessError) => {
4641  console.error('prepare failed and catch error is ' + err.message);
4642});
4643```
4644
4645### start<sup>12+</sup>
4646
4647start(): Promise\<void>
4648
4649异步方式开始视频转码。通过Promise获取返回值。
4650
4651需要[prepare()](#prepare12)事件成功触发后,才能调用start方法。
4652
4653**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4654
4655**返回值:**
4656
4657| 类型           | 说明                                  |
4658| -------------- | ------------------------------------- |
4659| Promise\<void> | 异步开始视频转码方法的Promise返回值。 |
4660
4661**错误码:**
4662
4663以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4664
4665| 错误码ID | 错误信息                               |
4666| -------- | -------------------------------------- |
4667| 5400102  | Operation not allowed. Return by promise. |
4668| 5400103  | IO error. Return by promise.           |
4669| 5400105  | Service died. Return by promise.       |
4670
4671**示例:**
4672
4673```ts
4674import { BusinessError } from '@kit.BasicServicesKit';
4675
4676avTranscoder.start().then(() => {
4677  console.info('start AVTranscoder success');
4678}).catch((err: BusinessError) => {
4679  console.error('start AVTranscoder failed and catch error is ' + err.message);
4680});
4681```
4682
4683### pause<sup>12+</sup>
4684
4685pause(): Promise\<void>
4686
4687异步方式暂停视频转码。通过Promise获取返回值。
4688
4689需要[start()](#start12)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume12)接口来恢复转码。
4690
4691**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4692
4693**返回值:**
4694
4695| 类型           | 说明                                  |
4696| -------------- | ------------------------------------- |
4697| Promise\<void> | 异步暂停视频转码方法的Promise返回值。 |
4698
4699**错误码:**
4700
4701以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4702
4703| 错误码ID | 错误信息                               |
4704| -------- | -------------------------------------- |
4705| 5400102  | Operation not allowed. Return by promise. |
4706| 5400103  | IO error. Return by promise.           |
4707| 5400105  | Service died. Return by promise.       |
4708
4709**示例:**
4710
4711```ts
4712import { BusinessError } from '@kit.BasicServicesKit';
4713
4714avTranscoder.pause().then(() => {
4715  console.info('pause AVTranscoder success');
4716}).catch((err: BusinessError) => {
4717  console.error('pause AVTranscoder failed and catch error is ' + err.message);
4718});
4719```
4720
4721### resume<sup>12+</sup>
4722
4723resume(): Promise\<void>
4724
4725异步方式恢复视频转码。通过Promise获取返回值。
4726
4727需要在[pause()](#pause12)事件成功触发后,才能调用resume方法。
4728
4729**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4730
4731**返回值:**
4732
4733| 类型           | 说明                                  |
4734| -------------- | ------------------------------------- |
4735| Promise\<void> | 异步恢复视频转码方法的Promise返回值。 |
4736
4737**错误码:**
4738
4739以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4740
4741| 错误码ID | 错误信息                               |
4742| -------- | -------------------------------------- |
4743| 5400102  | Operation not allowed. Return by promise. |
4744| 5400103  | IO error. Return by promise.           |
4745| 5400105  | Service died. Return by promise.       |
4746
4747**示例:**
4748
4749```ts
4750import { BusinessError } from '@kit.BasicServicesKit';
4751
4752avTranscoder.resume().then(() => {
4753  console.info('resume AVTranscoder success');
4754}).catch((err: BusinessError) => {
4755  console.error('resume AVTranscoder failed and catch error is ' + err.message);
4756});
4757```
4758
4759### cancel<sup>12+</sup>
4760
4761cancel(): Promise\<void>
4762
4763异步方式取消视频转码。通过Promise获取返回值。
4764
4765需要在[prepare()](#prepare12)、[start()](#start12)、[pause()](#pause12)或[resume()](#resume12)事件成功触发后,才能调用cancel方法。
4766
4767**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4768
4769**返回值:**
4770
4771| 类型           | 说明                                  |
4772| -------------- | ------------------------------------- |
4773| Promise\<void> | 异步取消视频转码方法的Promise返回值。 |
4774
4775**错误码:**
4776
4777以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4778
4779| 错误码ID | 错误信息                               |
4780| -------- | -------------------------------------- |
4781| 5400102  | Operation not allowed. Return by promise. |
4782| 5400103  | IO error. Return by promise.           |
4783| 5400105  | Service died. Return by promise.       |
4784
4785**示例:**
4786
4787```ts
4788import { BusinessError } from '@kit.BasicServicesKit';
4789
4790avTranscoder.cancel().then(() => {
4791  console.info('cancel AVTranscoder success');
4792}).catch((err: BusinessError) => {
4793  console.error('cancel AVTranscoder failed and catch error is ' + err.message);
4794});
4795```
4796
4797### release<sup>12+</sup>
4798
4799release(): Promise\<void>
4800
4801异步方式释放视频转码资源。通过Promise获取返回值。
4802
4803释放视频转码资源之后,该AVTranscoder实例不能再进行任何操作。
4804
4805**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4806
4807**返回值:**
4808
4809| 类型           | 说明                                        |
4810| -------------- | ------------------------------------------- |
4811| Promise\<void> | 异步释放视频转码资源方法的Promise返回值。 |
4812
4813**错误码:**
4814
4815以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4816
4817| 错误码ID | 错误信息                          |
4818| -------- | --------------------------------- |
4819| 5400102  | Operation not allowed. Return by promise. |
4820| 5400105  | Service died. Return by promise. |
4821
4822**示例:**
4823
4824```ts
4825import { BusinessError } from '@kit.BasicServicesKit';
4826
4827avTranscoder.release().then(() => {
4828  console.info('release AVTranscoder success');
4829}).catch((err: BusinessError) => {
4830  console.error('release AVTranscoder failed and catch error is ' + err.message);
4831});
4832```
4833
4834### on('progressUpdate')<sup>12+</sup>
4835
4836on(type: 'progressUpdate', callback: Callback\<number>): void
4837
4838注册转码进度更新事件,并通过注册的回调方法通知用户。用户只能注册一个进度更新事件的回调方法,当用户重复注册时,以最后一次注册的回调接口为准。
4839
4840**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4841
4842**参数:**
4843
4844| 参数名   | 类型     | 必填 | 说明                                                         |
4845| -------- | -------- | ---- | ------------------------------------------------------------ |
4846| type     | string   | 是   | 进度更新事件回调类型,支持的事件:'progressUpdate',在转码过程中系统会自动触发此事件。 |
4847| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 是   | 进度更新事件回调方法,progress: number,表示当前转码进度 |
4848
4849**示例:**
4850
4851```ts
4852avTranscoder.on('progressUpdate', (progress: number) => {
4853  console.info('avTranscoder progressUpdate = ' + progress);
4854});
4855```
4856
4857### off('progressUpdate')<sup>12+</sup>
4858
4859off(type:'progressUpdate', callback?: Callback\<number>): void
4860
4861取消注册转码进度更新事件。
4862
4863**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4864
4865**参数:**
4866
4867| 参数名 | 类型   | 必填 | 说明                                                         |
4868| ------ | ------ | ---- | ------------------------------------------------------------ |
4869| type   | string | 是   | 进度更新事件回调类型,支持的事件:'progressUpdate',用户操作和系统都会触发此事件。 |
4870| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 否   | 已注册的进度更新事件回调。由于当前回调注册时,仅会保留最后一次注册的回调,建议此参数缺省。 |
4871
4872**示例:**
4873
4874```ts
4875avTranscoder.off('progressUpdate');
4876```
4877
4878### on('error')<sup>12+</sup>
4879
4880on(type: 'error', callback: ErrorCallback): void
4881
4882注册AVtranscoder的错误事件,该事件仅用于错误提示。如果AVTranscoder上报error事件,用户需要通过[release()](#release12)退出转码操作。
4883
4884用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
4885
4886**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4887
4888**参数:**
4889
4890| 参数名   | 类型          | 必填 | 说明                                                         |
4891| -------- | ------------- | ---- | ------------------------------------------------------------ |
4892| type     | string        | 是   | 转码错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 |
4893| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 转码错误事件回调方法。                                       |
4894
4895**错误码:**
4896
4897以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4898
4899| 错误码ID | 错误信息                                   |
4900| -------- | ------------------------------------------ |
4901| 401      | The parameter check failed. |
4902| 801      | Capability not supported. |
4903| 5400101  | No memory.            |
4904| 5400102  | Operation not allowed. |
4905| 5400103  | I/O error.              |
4906| 5400104  | Time out.            |
4907| 5400105  | Service died.           |
4908| 5400106  | Unsupported format.      |
4909
4910**示例:**
4911
4912```ts
4913import { BusinessError } from '@kit.BasicServicesKit';
4914
4915avTranscoder.on('error', (err: BusinessError) => {
4916  console.info('case avTranscoder.on(error) called, errMessage is ' + err.message);
4917});
4918```
4919
4920### off('error')<sup>12+</sup>
4921
4922off(type:'error', callback?: ErrorCallback): void
4923
4924取消注册转码错误事件,取消后不再接收到AVTranscoder的错误事件。
4925
4926**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4927
4928**参数:**
4929
4930| 参数名 | 类型   | 必填 | 说明                                                         |
4931| ------ | ------ | ---- | ------------------------------------------------------------ |
4932| type   | string | 是   | 转码错误事件回调类型'error'。 <br>- 'error':转码过程中发生错误,触发该事件。 |
4933| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否   | 错误事件回调方法 |
4934
4935**示例:**
4936
4937```ts
4938avTranscoder.off('error');
4939```
4940
4941### on('complete')<sup>12+</sup>
4942
4943on(type: 'complete', callback: Callback\<void>): void
4944
4945注册转码完成事件,并通过注册的回调方法通知用户。用户只能注册一个进度更新事件的回调方法,当用户重复注册时,以最后一次注册的回调接口为准。
4946
4947当AVTranscoder上报complete事件时,当前转码操作已完成,用户可通过[release()](#release12)退出转码操作。
4948
4949**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4950
4951**参数:**
4952
4953| 参数名   | 类型     | 必填 | 说明                                                         |
4954| -------- | -------- | ---- | ------------------------------------------------------------ |
4955| type     | string   | 是   | 完成事件回调类型,支持的事件:'complete',在转码过程中系统会自动触发此事件。 |
4956| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 是   | 完成事件回调方法 |
4957
4958**示例:**
4959
4960```ts
4961avTranscoder.on('complete', () => {
4962  console.info('avTranscoder complete');
4963});
4964```
4965
4966### off('complete')<sup>12+</sup>
4967
4968off(type:'complete', callback?: Callback\<void>): void
4969
4970取消注册转码完成事件。
4971
4972**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4973
4974**参数:**
4975
4976| 参数名 | 类型   | 必填 | 说明                                                         |
4977| ------ | ------ | ---- | ------------------------------------------------------------ |
4978| type   | string | 是   | 转码完成事件回调类型,支持的事件:'complete',用户操作和系统都会触发此事件。 |
4979| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 否   | 完成事件回调方法 |
4980
4981**示例:**
4982
4983```ts
4984avTranscoder.off('complete');
4985```
4986
4987## AVTranscoderConfig<sup>12+</sup>
4988
4989表示视频转码的参数设置。
4990
4991**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4992
4993| 名称            | 类型                                    | 只读 | 可选 | 说明                                                         |
4994| --------------- | ---------------------------------------- |---- | ---- | ------------------------------------------------------------ |
4995| audioBitrate | number     | 否 | 是 | 输出音频的码率,单位为比特率(bps)。用户不设置,则默认设置为48Kbps|
4996| audioCodec | [CodecMimeType](#codecmimetype8)     | 否 | 是  | 输出音频的编码格式,当前仅支持AAC。                   |
4997| fileFormat         | [ContainerFormatType](#containerformattype8) | 否 | 否   | 输出视频文件的封装格式,当前视频文件仅支持MP4。|
4998| videoBitrate         | number | 否 |  是  | 输出视频的码率,单位为比特率(bps)。用户不设置,则默认码率按输出视频的分辨率设置,[240p,480P]默认码率值为1Mbps,(480P,720P]默认码率值为2Mbps,(720P,1080P]默认码率值为4Mbps,1080P及以上默认值为8Mbps。|
4999| videoCodec        | [CodecMimeType](#codecmimetype8) | 否 | 是   | 输出视频的编码格式,当前仅支持AVC和HEVC。|
5000| videoFrameWidth        | number | 否 |  是   | 输出视频帧的宽,单位为像素(px)。用户不设置,则默认设置为源视频帧的宽|
5001| videoFrameHeight        | number | 否 |  是   | 输出视频帧的高,单位为像素(px)。用户不设置,则默认设置为源视频帧的高|
5002
5003
5004
5005## AVMetadataExtractor<sup>11+</sup>
5006
5007元数据获取类,用于从媒体资源中获取元数据。在调用AVMetadataExtractor的方法前,需要先通过[createAVMetadataExtractor()](#mediacreateavmetadataextractor11)构建一个AVMetadataExtractor实例。
5008
5009获取音频或视频元数据的demo可参考:[获取音视频元数据开发指导](../../media/media/avmetadataextractor.md)。
5010
5011### 属性
5012
5013**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5014
5015| 名称                                                | 类型                                                         | 可读 | 可写 | 说明                                                         |
5016| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
5017| fdSrc<sup>11+</sup>                                  | [AVFileDescriptor](#avfiledescriptor9)                       | 是   | 是   | 媒体文件描述,通过该属性设置数据源。在获取元数据之前,必须设置数据源属性,只能设置fdSrc和dataSrc的其中一个。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVMetadataExtractor 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致音视频元数据获取异常。 |
5018| dataSrc<sup>11+</sup>                               | [AVDataSrcDescriptor](#avdatasrcdescriptor10)                | 是   | 是   | 流式媒体资源描述,通过该属性设置数据源。在获取元数据之前,必须设置数据源属性,只能设置fdSrc和dataSrc的其中一个。<br/> 当应用从远端获取音视频媒体文件,在应用未下载完整音视频资源时,可以设置dataSrc提前获取该资源的元数据。|
5019
5020### fetchMetadata<sup>11+</sup>
5021
5022fetchMetadata(callback: AsyncCallback\<AVMetadata>): void
5023
5024异步方式获取媒体元数据。通过注册回调函数获取返回值。
5025
5026**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5027
5028**参数:**
5029
5030| 参数名   | 类型                                         | 必填 | 说明                                |
5031| -------- | -------------------------------------------- | ---- | ----------------------------------- |
5032| callback | AsyncCallback\<[AVMetadata](#avmetadata11)>       | 是   | 回调函数。异步返回音视频元数据对象(AVMetadata)。|
5033
5034**错误码:**
5035
5036以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5037
5038| 错误码ID | 错误信息                                   |
5039| -------- | ------------------------------------------ |
5040| 5400102  | Operation not allowed. Returned by callback. |
5041| 5400106  | Unsupported format. Returned by callback.  |
5042
5043**示例:**
5044
5045```ts
5046import { BusinessError } from '@kit.BasicServicesKit';
5047
5048avMetadataExtractor.fetchMetadata((error: BusinessError, metadata: media.AVMetadata) => {
5049  if (error) {
5050    console.error(`Failed to fetch Metadata, err = ${JSON.stringify(error)}`);
5051    return;
5052  }
5053  console.info(`Succeeded in fetching Metadata, genre: ${metadata.genre}`);
5054});
5055```
5056
5057### fetchMetadata<sup>11+</sup>
5058
5059fetchMetadata(): Promise\<AVMetadata>
5060
5061异步方式获取媒体元数据。通过Promise获取返回值。
5062
5063**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5064
5065**返回值:**
5066
5067| 类型           | 说明                                     |
5068| -------------- | ---------------------------------------- |
5069| Promise\<[AVMetadata](#avmetadata11)>  | Promise对象。异步返回音视频元数据对象(AVMetadata)。 |
5070
5071**错误码:**
5072
5073以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5074
5075| 错误码ID | 错误信息                                  |
5076| -------- | ----------------------------------------- |
5077| 5400102  | Operation not allowed. Returned by promise. |
5078| 5400106  | Unsupported format. Returned by promise.  |
5079
5080**示例:**
5081
5082```ts
5083import { BusinessError } from '@kit.BasicServicesKit';
5084
5085avMetadataExtractor.fetchMetadata().then((metadata: media.AVMetadata) => {
5086  console.info(`Succeeded in fetching Metadata, genre: ${metadata.genre}`)
5087}).catch((error: BusinessError) => {
5088  console.error(`Failed to fetch Metadata, error message:${error.message}`);
5089});
5090```
5091
5092### fetchAlbumCover<sup>11+</sup>
5093
5094fetchAlbumCover(callback: AsyncCallback\<image.PixelMap>): void
5095
5096异步方式获取音频专辑封面。通过注册回调函数获取返回值。
5097
5098**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5099
5100**参数:**
5101
5102| 参数名   | 类型                                         | 必填 | 说明                                |
5103| -------- | -------------------------------------------- | ---- | ----------------------------------- |
5104| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)>    | 是   | 回调函数。异步返回专辑封面。 |
5105
5106**错误码:**
5107
5108以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5109
5110| 错误码ID | 错误信息                                   |
5111| -------- | ------------------------------------------ |
5112| 5400102  | Operation not allowed. Return by callback. |
5113| 5400106  | Unsupported format. Returned by callback.  |
5114
5115**示例:**
5116
5117```ts
5118import { BusinessError } from '@kit.BasicServicesKit';
5119import { image } from '@kit.ImageKit';
5120
5121let pixel_map : image.PixelMap | undefined = undefined;
5122
5123avMetadataExtractor.fetchAlbumCover((error: BusinessError, pixelMap: image.PixelMap) => {
5124  if (error) {
5125    console.error(`Failed to fetch AlbumCover, error = ${JSON.stringify(error)}`);
5126    return;
5127  }
5128  pixel_map = pixelMap;
5129});
5130```
5131
5132### fetchAlbumCover<sup>11+</sup>
5133
5134fetchAlbumCover(): Promise\<image.PixelMap>
5135
5136异步方式获取专辑封面。通过Promise获取返回值。
5137
5138**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5139
5140**返回值:**
5141
5142| 类型           | 说明                                     |
5143| -------------- | ---------------------------------------- |
5144| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> |  Promise对象。异步返回专辑封面。 |
5145
5146**错误码:**
5147
5148以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5149
5150| 错误码ID | 错误信息                                  |
5151| -------- | ----------------------------------------- |
5152| 5400102  | Operation not allowed. Returned by promise. |
5153| 5400106  | Unsupported format. Returned by promise.  |
5154
5155**示例:**
5156
5157```ts
5158import { BusinessError } from '@kit.BasicServicesKit';
5159import { image } from '@kit.ImageKit';
5160
5161let pixel_map : image.PixelMap | undefined = undefined;
5162
5163avMetadataExtractor.fetchAlbumCover().then((pixelMap: image.PixelMap) => {
5164  pixel_map = pixelMap;
5165}).catch((error: BusinessError) => {
5166  console.error(`Failed to fetch AlbumCover, error message:${error.message}`);
5167});
5168```
5169
5170### release<sup>11+</sup>
5171
5172release(callback: AsyncCallback\<void>): void
5173
5174异步方式释放资源。通过注册回调函数获取返回值。
5175
5176**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5177
5178**参数:**
5179
5180| 参数名   | 类型                                         | 必填 | 说明                                |
5181| -------- | -------------------------------------------- | ---- | ----------------------------------- |
5182| callback | AsyncCallback\<void>                   | 是   |回调函数。当释放资源成功,err为undefined,否则为错误对象。 |
5183
5184**错误码:**
5185
5186以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5187
5188| 错误码ID | 错误信息                                   |
5189| -------- | ------------------------------------------ |
5190| 5400102  | Operation not allowed. Returned by callback. |
5191
5192**示例:**
5193
5194```ts
5195import { BusinessError } from '@kit.BasicServicesKit';
5196
5197avMetadataExtractor.release((error: BusinessError) => {
5198  if (error) {
5199    console.error(`Failed to release, err = ${JSON.stringify(error)}`);
5200    return;
5201  }
5202  console.info(`Succeeded in releasing.`);
5203});
5204```
5205
5206### release<sup>11+</sup>
5207
5208release(): Promise\<void>
5209
5210异步方式释放资源。通过Promise获取返回值。
5211
5212**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5213
5214**返回值:**
5215
5216| 类型           | 说明                                     |
5217| -------------- | ---------------------------------------- |
5218| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 |
5219
5220**错误码:**
5221
5222以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5223
5224| 错误码ID | 错误信息                                  |
5225| -------- | ----------------------------------------- |
5226| 5400102  | Operation not allowed. Returned by promise. |
5227
5228**示例:**
5229
5230```ts
5231import { BusinessError } from '@kit.BasicServicesKit';
5232
5233avMetadataExtractor.release().then(() => {
5234  console.info(`Succeeded in releasing.`);
5235}).catch((error: BusinessError) => {
5236  console.error(`Failed to release, error message:${error.message}`);
5237});
5238```
5239
5240## AVMetadata<sup>11+</sup>
5241
5242音视频元数据,包含各个元数据字段。在[AVRecorderConfig](#avrecorderconfig9)中使用时未声明为当前版本只读的参数可以作为使用[AVRecorder](#avrecorder9)录制时的入参。
5243
5244**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5245
5246| 名称   | 类型   | 必填 | 说明                                                         |
5247| ------ | ------ | ---- | ------------------------------------------------------------ |
5248| album     | string | 否   | 专辑的标题。当前版本为只读参数。     |
5249| albumArtist | string | 否   | 专辑的艺术家。当前版本为只读参数。 |
5250| artist | string | 否   | 媒体资源的艺术家。当前版本为只读参数。 |
5251| author | string | 否   | 媒体资源的作者。当前版本为只读参数。 |
5252| dateTime | string | 否   | 媒体资源的创建时间。当前版本为只读参数。 |
5253| dateTimeFormat | string | 否   | 媒体资源的创建时间,按YYYY-MM-DD HH:mm:ss格式输出。当前版本为只读参数。 |
5254| composer | string | 否   | 媒体资源的作曲家。当前版本为只读参数。 |
5255| duration | string | 否   | 媒体资源的时长。当前版本为只读参数。 |
5256| genre | string | 否   | 媒体资源的类型或体裁。|
5257| hasAudio | string | 否   | 媒体资源是否包含音频。当前版本为只读参数。 |
5258| hasVideo | string | 否   | 媒体资源是否包含视频。当前版本为只读参数。 |
5259| mimeType | string | 否   | 媒体资源的mime类型。当前版本为只读参数。 |
5260| trackCount | string | 否   | 媒体资源的轨道数量。当前版本为只读参数。 |
5261| sampleRate | string | 否   | 音频的采样率,单位为赫兹(Hz)。当前版本为只读参数。 |
5262| title | string | 否   | 媒体资源的标题。当前版本为只读参数。当前版本为只读参数。 |
5263| videoHeight | string | 否   | 视频的高度,单位为像素。当前版本为只读参数。 |
5264| videoWidth | string | 否   | 视频的宽度,单位为像素。当前版本为只读参数。 |
5265| videoOrientation | string | 否   | 视频的旋转方向,单位为度(°)。|
5266| hdrType<sup>12+</sup> | [HdrType](#hdrtype12) | 否   | 媒体资源的HDR类型。当前版本为只读参数。 |
5267| location<sup>12+</sup> | [Location](#location) | 否 | 视频的地理位置信息。 |
5268| customInfo<sup>12+</sup> | Record<string, string> | 否 | 从moov.meta.list 获取的自定义参数键值映射。|
5269
5270## HdrType<sup>12+</sup>
5271
5272表示视频HDR类型的枚举。
5273
5274**系统能力:** SystemCapability.Multimedia.Media.Core
5275
5276| 名称                      | 值   | 说明                   |
5277| ------------------------- | ---- | ---------------------- |
5278| AV_HDR_TYPE_NONE          | 0    | 表示无HDR类型。 |
5279| AV_HDR_TYPE_VIVID         | 1    | 表示为HDR VIVID类型。 |
5280
5281## media.createAudioPlayer<sup>(deprecated)</sup>
5282
5283createAudioPlayer(): AudioPlayer
5284
5285同步方式创建音频播放实例。
5286
5287> **说明:**
5288> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。
5289
5290**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5291
5292**返回值:**
5293
5294| 类型                        | 说明                                                         |
5295| --------------------------- | ------------------------------------------------------------ |
5296| [AudioPlayer](#audioplayerdeprecated) | 返回AudioPlayer类实例,失败时返回null。可用于音频播放、暂停、停止等操作。 |
5297
5298**示例:**
5299
5300```ts
5301let audioPlayer: media.AudioPlayer = media.createAudioPlayer();
5302```
5303
5304## media.createVideoPlayer<sup>(deprecated)</sup>
5305
5306createVideoPlayer(callback: AsyncCallback\<VideoPlayer>): void
5307
5308异步方式创建视频播放实例,通过注册回调函数获取返回值。
5309
5310> **说明:**
5311> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。
5312
5313**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5314
5315**参数:**
5316
5317| 参数名   | 类型                                       | 必填 | 说明                                                         |
5318| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
5319| callback | AsyncCallback<[VideoPlayer](#videoplayerdeprecated)> | 是   | 回调函数。创建VideoPlayer实例成功时,err为undefined,data为获取到的VideoPlayer实例,否则为错误对象。 |
5320
5321**示例:**
5322
5323```ts
5324import { BusinessError } from '@kit.BasicServicesKit';
5325
5326let videoPlayer: media.VideoPlayer;
5327media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
5328  if (video != null) {
5329    videoPlayer = video;
5330    console.info('Succeeded in creating VideoPlayer');
5331  } else {
5332    console.error(`Failed to create VideoPlayer, error:${error}`);
5333  }
5334});
5335```
5336
5337## media.createVideoPlayer<sup>(deprecated)</sup>
5338
5339createVideoPlayer(): Promise\<VideoPlayer>
5340
5341异步方式创建视频播放实例,通过Promise获取返回值。
5342
5343> **说明:**
5344> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9-1)替代。
5345
5346**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5347
5348**返回值:**
5349
5350| 类型                                 | 说明                                                         |
5351| ------------------------------------ | ------------------------------------------------------------ |
5352| Promise<[VideoPlayer](#videoplayerdeprecated)> | Promise对象。异步返回VideoPlayer实例,失败时返回null。可用于管理和播放视频媒体。 |
5353
5354**示例:**
5355
5356```ts
5357import { BusinessError } from '@kit.BasicServicesKit';
5358
5359let videoPlayer: media.VideoPlayer;
5360media.createVideoPlayer().then((video: media.VideoPlayer) => {
5361  if (video != null) {
5362    videoPlayer = video;
5363    console.info('Succeeded in creating VideoPlayer');
5364  } else {
5365    console.error('Failed to create VideoPlayer');
5366  }
5367}).catch((error: BusinessError) => {
5368  console.error(`Failed to create VideoPlayer, error:${error}`);
5369});
5370```
5371
5372## media.createAudioRecorder<sup>(deprecated)</sup>
5373
5374createAudioRecorder(): AudioRecorder
5375
5376创建音频录制的实例来控制音频的录制。
5377一台设备只允许创建一个录制实例。
5378
5379> **说明:**
5380> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVRecorder](#mediacreateavrecorder9)替代。
5381
5382**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5383
5384**返回值:**
5385
5386| 类型                            | 说明                                                         |
5387| ------------------------------- | ------------------------------------------------------------ |
5388| [AudioRecorder](#audiorecorderdeprecated) | 返回AudioRecorder类实例,失败时返回null。可用于录制音频媒体。 |
5389
5390**示例:**
5391
5392```ts
5393let audioRecorder: media.AudioRecorder = media.createAudioRecorder();
5394```
5395
5396## MediaErrorCode<sup>(deprecated)</sup>
5397
5398媒体服务错误类型枚举。
5399
5400> **说明:**
5401> 从API version 8开始支持,从API version 11开始废弃,建议使用[媒体错误码](#averrorcode9)替代。
5402
5403**系统能力:** SystemCapability.Multimedia.Media.Core
5404
5405| 名称                       | 值   | 说明                                   |
5406| -------------------------- | ---- | -------------------------------------- |
5407| MSERR_OK                   | 0    | 表示操作成功。                         |
5408| MSERR_NO_MEMORY            | 1    | 表示申请内存失败,系统可能无可用内存。 |
5409| MSERR_OPERATION_NOT_PERMIT | 2    | 表示无权限执行此操作。                 |
5410| MSERR_INVALID_VAL          | 3    | 表示传入入参无效。                     |
5411| MSERR_IO                   | 4    | 表示发生IO错误。                       |
5412| MSERR_TIMEOUT              | 5    | 表示操作超时。                         |
5413| MSERR_UNKNOWN              | 6    | 表示未知错误。                         |
5414| MSERR_SERVICE_DIED         | 7    | 表示服务端失效。                       |
5415| MSERR_INVALID_STATE        | 8    | 表示在当前状态下,不允许执行此操作。   |
5416| MSERR_UNSUPPORTED          | 9    | 表示在当前版本下,不支持此操作。       |
5417
5418## AudioPlayer<sup>(deprecated)</sup>
5419
5420> **说明:**
5421> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。
5422
5423音频播放管理类,用于管理和播放音频媒体。在调用AudioPlayer的方法前,需要先通过[createAudioPlayer()](#mediacreateaudioplayerdeprecated)构建一个AudioPlayer实例。
5424
5425### 属性<sup>(deprecated)</sup>
5426
5427**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5428
5429| 名称                            | 类型                                                   | 只读 | 可选 | 说明                                                         |
5430| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
5431| src                             | string                                                 | 否   | 否   | 音频媒体URI,支持当前主流的音频格式(m4a、aac、mp3、ogg、wav、amr)。<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/>**需要权限:** ohos.permission.READ_MEDIAohos.permission.INTERNET。 |
5432| fdSrc<sup>9+</sup>              | [AVFileDescriptor](#avfiledescriptor9)                 | 否   | 否   | 音频媒体文件描述,使用场景:应用中的音频资源被连续存储在同一个文件中。<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/> |
5433| loop                            | boolean                                                | 否   | 否  | 音频循环播放属性,设置为'true'表示循环播放。                 |
5434| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 是   | 是   | 音频焦点模型。                                               |
5435| currentTime                     | number                                                 | 是   | 否   | 音频的当前播放位置,单位为毫秒(ms)。                       |
5436| duration                        | number                                                 | 是   | 否   | 音频时长,单位为毫秒(ms)。                                 |
5437| state                           | [AudioState](#audiostatedeprecated)                              | 是   | 否   | 可以查询音频播放的状态,该状态不可作为调用play/pause/stop等状态切换的触发条件。 |
5438
5439### play<sup>(deprecated)</sup>
5440
5441play(): void
5442
5443开始播放音频资源,需在'dataLoad'事件成功触发后,才能调用。
5444
5445> **说明:**
5446> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。
5447
5448**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5449
5450**示例:**
5451
5452```ts
5453audioPlayer.on('play', () => {    //设置'play'事件回调
5454  console.info('audio play called');
5455});
5456audioPlayer.play();
5457```
5458
5459### pause<sup>(deprecated)</sup>
5460
5461pause(): void
5462
5463暂停播放音频资源。
5464
5465> **说明:**
5466> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。
5467
5468**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5469
5470**示例:**
5471
5472```ts
5473audioPlayer.on('pause', () => {    //设置'pause'事件回调
5474  console.info('audio pause called');
5475});
5476audioPlayer.pause();
5477```
5478
5479### stop<sup>(deprecated)</sup>
5480
5481stop(): void
5482
5483停止播放音频资源。
5484
5485> **说明:**
5486> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。
5487
5488**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5489
5490**示例:**
5491
5492```ts
5493audioPlayer.on('stop', () => {    //设置'stop'事件回调
5494  console.info('audio stop called');
5495});
5496audioPlayer.stop();
5497```
5498
5499### reset<sup>(deprecated)</sup>
5500
5501reset(): void
5502
5503重置播放音频资源。
5504
5505> **说明:**
5506> 从API version 7开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。
5507
5508**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5509
5510**示例:**
5511
5512```ts
5513audioPlayer.on('reset', () => {    //设置'reset'事件回调
5514  console.info('audio reset called');
5515});
5516audioPlayer.reset();
5517```
5518
5519### seek<sup>(deprecated)</sup>
5520
5521seek(timeMs: number): void
5522
5523跳转到指定播放位置。
5524
5525> **说明:**
5526> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
5527
5528**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5529
5530**参数:**
5531
5532| 参数名 | 类型   | 必填 | 说明                                                        |
5533| ------ | ------ | ---- | ----------------------------------------------------------- |
5534| timeMs | number | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围[0, duration]。 |
5535
5536**示例:**
5537
5538```ts
5539audioPlayer.on('timeUpdate', (seekDoneTime: number) => {    //设置'timeUpdate'事件回调
5540  if (seekDoneTime == null) {
5541    console.error('Failed to seek');
5542    return;
5543  }
5544  console.info('Succeeded in seek. seekDoneTime: ' + seekDoneTime);
5545});
5546audioPlayer.seek(30000);    //seek到30000ms的位置
5547```
5548
5549### setVolume<sup>(deprecated)</sup>
5550
5551setVolume(vol: number): void
5552
5553设置音量。
5554
5555> **说明:**
5556> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。
5557
5558**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5559
5560**参数:**
5561
5562| 参数名 | 类型   | 必填 | 说明                                                         |
5563| ------ | ------ | ---- | ------------------------------------------------------------ |
5564| vol    | number | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
5565
5566**示例:**
5567
5568```ts
5569audioPlayer.on('volumeChange', () => {    //设置'volumeChange'事件回调
5570  console.info('audio volumeChange called');
5571});
5572audioPlayer.setVolume(1);    //设置音量到100%
5573```
5574
5575### release<sup>(deprecated)</sup>
5576
5577release(): void
5578
5579释放音频资源。
5580
5581> **说明:**
5582> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。
5583
5584**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5585
5586**示例:**
5587
5588```ts
5589audioPlayer.release();
5590audioPlayer = undefined;
5591```
5592
5593### getTrackDescription<sup>(deprecated)</sup>
5594
5595getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
5596
5597获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。通过回调函数获取返回值。
5598
5599> **说明:**
5600> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。
5601
5602**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5603
5604**参数:**
5605
5606| 参数名   | 类型                                                         | 必填 | 说明                                       |
5607| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ |
5608| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是   | 回调函数。获取音频轨道信息成功时,err为undefined,data为获取到的MediaDescription数组,否则为错误对象。 |
5609
5610**示例:**
5611
5612```ts
5613import { BusinessError } from '@kit.BasicServicesKit';
5614
5615audioPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
5616  if (arrList != null) {
5617    console.info('Succeeded in getting TrackDescription');
5618  } else {
5619    console.error(`Failed to get TrackDescription, error:${error}`);
5620  }
5621});
5622```
5623
5624### getTrackDescription<sup>(deprecated)</sup>
5625
5626getTrackDescription(): Promise\<Array\<MediaDescription>>
5627
5628获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。通过Promise获取返回值。
5629
5630> **说明:**
5631> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。
5632
5633**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5634
5635**返回值:**
5636
5637| 类型                                                   | 说明                                            |
5638| ------------------------------------------------------ | ----------------------------------------------- |
5639| Promise<Array<[MediaDescription](#mediadescription8)>> | 音频轨道信息MediaDescription数组Promise返回值。 |
5640
5641**示例:**
5642
5643```ts
5644import { BusinessError } from '@kit.BasicServicesKit';
5645
5646audioPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
5647  console.info('Succeeded in getting TrackDescription');
5648}).catch((error: BusinessError) => {
5649  console.error(`Failed to get TrackDescription, error:${error}`);
5650});
5651```
5652
5653### on('bufferingUpdate')<sup>(deprecated)</sup>
5654
5655on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
5656
5657开始订阅音频缓存更新事件。仅网络播放支持该订阅事件。
5658
5659> **说明:**
5660> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。
5661
5662**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5663
5664**参数:**
5665
5666| 参数名   | 类型     | 必填 | 说明                                                         |
5667| -------- | -------- | ---- | ------------------------------------------------------------ |
5668| type     | string   | 是   | 音频缓存事件回调类型,支持的事件:'bufferingUpdate'。        |
5669| callback | function | 是   | 音频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)value值固定为0。 |
5670
5671**示例:**
5672
5673```ts
5674audioPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
5675  console.info('audio bufferingInfo type: ' + infoType);
5676  console.info('audio bufferingInfo value: ' + value);
5677});
5678```
5679
5680### on('play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange')<sup>(deprecated)</sup>
5681
5682on(type: 'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange', callback: () => void): void
5683
5684开始订阅音频播放事件。
5685
5686> **说明:**
5687> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。
5688
5689**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5690
5691**参数:**
5692
5693| 参数名   | 类型       | 必填 | 说明                                                         |
5694| -------- | ---------- | ---- | ------------------------------------------------------------ |
5695| type     | string     | 是   | 播放事件回调类型,支持的事件包括:'play' \| 'pause' \| 'stop' \| 'reset' \| 'dataLoad' \| 'finish' \| 'volumeChange'。<br>- 'play':完成[play()](#playdeprecated)调用,音频开始播放,触发该事件。<br>- 'pause':完成[pause()](#pausedeprecated)调用,音频暂停播放,触发该事件。<br>- 'stop':完成[stop()](#stopdeprecated)调用,音频停止播放,触发该事件。<br>- 'reset':完成[reset()](#resetdeprecated)调用,播放器重置,触发该事件。<br>- 'dataLoad':完成音频数据加载后触发该事件,即src属性设置完成后触发该事件。<br>- 'finish':完成音频播放后触发该事件。<br>- 'volumeChange':完成[setVolume()](#setvolumedeprecated)调用,播放音量改变后触发该事件。 |
5696| callback | () => void | 是   | 播放事件回调方法。                                           |
5697
5698**示例:**
5699
5700```ts
5701import { fileIo as fs } from '@kit.CoreFileKit';
5702import { BusinessError } from '@kit.BasicServicesKit';
5703
5704let audioPlayer: media.AudioPlayer = media.createAudioPlayer();  //创建一个音频播放实例
5705audioPlayer.on('dataLoad', () => {            //设置'dataLoad'事件回调,src属性设置成功后,触发此回调
5706  console.info('audio set source called');
5707  audioPlayer.play();                       //开始播放,并触发'play'事件回调
5708});
5709audioPlayer.on('play', () => {                //设置'play'事件回调
5710  console.info('audio play called');
5711  audioPlayer.seek(30000);                  //调用seek方法,并触发'timeUpdate'事件回调
5712});
5713audioPlayer.on('pause', () => {               //设置'pause'事件回调
5714  console.info('audio pause called');
5715  audioPlayer.stop();                       //停止播放,并触发'stop'事件回调
5716});
5717audioPlayer.on('reset', () => {               //设置'reset'事件回调
5718  console.info('audio reset called');
5719  audioPlayer.release();                    //释放播放实例资源
5720  audioPlayer = undefined;
5721});
5722audioPlayer.on('timeUpdate', (seekDoneTime: number) => {  //设置'timeUpdate'事件回调
5723  if (seekDoneTime == null) {
5724    console.error('Failed to seek');
5725    return;
5726  }
5727  console.info('Succeeded in seek, and seek time is ' + seekDoneTime);
5728  audioPlayer.setVolume(0.5);                //设置音量为50%,并触发'volumeChange'事件回调
5729});
5730audioPlayer.on('volumeChange', () => {         //设置'volumeChange'事件回调
5731  console.info('audio volumeChange called');
5732  audioPlayer.pause();                       //暂停播放,并触发'pause'事件回调
5733});
5734audioPlayer.on('finish', () => {               //设置'finish'事件回调
5735  console.info('audio play finish');
5736  audioPlayer.stop();                        //停止播放,并触发'stop'事件回调
5737});
5738audioPlayer.on('error', (error: BusinessError) => {  //设置'error'事件回调
5739  console.error(`audio error called, error: ${error}`);
5740});
5741
5742// 用户选择音频设置fd(本地播放)
5743let fdPath = 'fd://';
5744// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" 命令,将其推送到设备上
5745let path = '/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3';
5746fs.open(path).then((file) => {
5747  fdPath = fdPath + '' + file.fd;
5748  console.info('Succeeded in opening fd, fd is' + fdPath);
5749  audioPlayer.src = fdPath;  //设置src属性,并触发'dataLoad'事件回调
5750}, (err: BusinessError) => {
5751  console.error('Failed to open fd, err is' + err);
5752}).catch((err: BusinessError) => {
5753  console.error('Failed to open fd, err is' + err);
5754});
5755```
5756
5757### on('timeUpdate')<sup>(deprecated)</sup>
5758
5759on(type: 'timeUpdate', callback: Callback\<number>): void
5760
5761开始订阅音频播放时间更新事件。处于播放状态时,每隔1s上报一次该事件。
5762
5763> **说明:**
5764> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('timeUpdate')](#ontimeupdate9)替代。
5765
5766**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5767
5768**参数:**
5769
5770| 参数名   | 类型              | 必填 | 说明                                                         |
5771| -------- | ----------------- | ---- | ------------------------------------------------------------ |
5772| type     | string            | 是   | 播放事件回调类型,支持的事件包括:'timeUpdate'。<br>- 'timeUpdate':音频播放时间戳更新,开始播放后自动触发该事件。 |
5773| callback | Callback\<number> | 是   | 播放事件回调方法。回调方法入参为更新后的时间戳。             |
5774
5775**示例:**
5776
5777```ts
5778audioPlayer.on('timeUpdate', (newTime: number) => {    //设置'timeUpdate'事件回调
5779  if (newTime == null) {
5780    console.error('Failed to do timeUpadate');
5781    return;
5782  }
5783  console.info('Succeeded in doing timeUpadate. seekDoneTime: ' + newTime);
5784});
5785audioPlayer.play();    //开始播放后,自动触发时间戳更新事件
5786```
5787
5788### on('audioInterrupt')<sup>(deprecated)</sup>
5789
5790on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
5791
5792监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。
5793
5794> **说明:**
5795> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。
5796
5797**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5798
5799**参数:**
5800
5801| 参数名   | 类型                                                         | 必填 | 说明                                                     |
5802| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
5803| type     | string                                                       | 是   | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 |
5804| callback | function  | 是   | 音频焦点变化事件回调方法。                               |
5805
5806**示例:**
5807
5808```ts
5809import { audio } from '@kit.AudioKit';
5810
5811audioPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
5812  console.info('audioInterrupt called,and InterruptEvent info is:' + info)
5813})
5814```
5815
5816### on('error')<sup>(deprecated)</sup>
5817
5818on(type: 'error', callback: ErrorCallback): void
5819
5820开始订阅音频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。
5821
5822> **说明:**
5823> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。
5824
5825**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5826
5827**参数:**
5828
5829| 参数名   | 类型          | 必填 | 说明                                                         |
5830| -------- | ------------- | ---- | ------------------------------------------------------------ |
5831| type     | string        | 是   | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':音频播放中发生错误,触发该事件。 |
5832| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 播放错误事件回调方法。                                       |
5833
5834**示例:**
5835
5836```ts
5837import { BusinessError } from '@kit.BasicServicesKit';
5838
5839audioPlayer.on('error', (error: BusinessError) => {  //设置'error'事件回调
5840  console.error(`audio error called, error: ${error}`);
5841});
5842audioPlayer.setVolume(3);  //设置volume为无效值,触发'error'事件
5843```
5844
5845## AudioState<sup>(deprecated)</sup>
5846
5847type AudioState = 'idle' | 'playing' | 'paused' | 'stopped' | 'error'
5848
5849音频播放的状态机。可通过state属性获取当前状态。
5850
5851> **说明:**
5852> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。
5853
5854**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5855
5856| 类型    | 说明                                           |
5857| ------- | ---------------------------------------------- |
5858| 'idle'    | 音频播放空闲,dataload/reset成功后处于此状态。 |
5859| 'playing' | 音频正在播放,play成功后处于此状态。           |
5860| 'paused'  | 音频暂停播放,pause成功后处于此状态。          |
5861| 'stopped' | 音频播放停止,stop/播放结束后处于此状态。      |
5862| 'error'   | 错误状态。                                     |
5863
5864## VideoPlayer<sup>(deprecated)</sup>
5865
5866> **说明:**
5867> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。
5868
5869视频播放管理类,用于管理和播放视频媒体。在调用VideoPlayer的方法前,需要先通过[createVideoPlayer()](#mediacreatevideoplayerdeprecated)构建一个VideoPlayer实例。
5870
5871### 属性
5872
5873**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5874
5875| 名称                            | 类型                                                   | 只读 | 可选 | 说明                                                         |
5876| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
5877| url<sup>8+</sup>                | string                                                 | 否   | 否   | 视频媒体URL,支持当前主流的视频格式(mp4、mpeg-ts、mkv)。<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>5. file类型: file\://xx<br/>**说明:**<br>从API version 11开始不支持webm。 |
5878| fdSrc<sup>9+</sup>              | [AVFileDescriptor](#avfiledescriptor9)                 | 否   | 否   | 视频媒体文件描述,使用场景:应用中的视频资源被连续存储在同一个文件中。<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/> |
5879| loop<sup>8+</sup>               | boolean                                                | 否   | 否   | 视频循环播放属性,设置为'true'表示循环播放。                 |
5880| videoScaleType<sup>9+</sup>     | [VideoScaleType](#videoscaletype9)                     | 否   | 是   | 视频缩放模式。默认值为VIDEO_SCALE_TYPE_FIT。                                               |
5881| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 否   | 是   | 音频焦点模型。                                               |
5882| currentTime<sup>8+</sup>        | number                                                 | 是   | 否   | 视频的当前播放位置,单位为毫秒(ms)。                       |
5883| duration<sup>8+</sup>           | number                                                 | 是   | 否   | 视频时长,单位为毫秒(ms),返回-1表示直播模式。             |
5884| state<sup>8+</sup>              | [VideoPlayState](#videoplaystatedeprecated)                    | 是   | 否   | 视频播放的状态。                                             |
5885| width<sup>8+</sup>              | number                                                 | 是   | 否   | 视频宽,单位为像素(px)。                                   |
5886| height<sup>8+</sup>             | number                                                 | 是   | 否   | 视频高,单位为像素(px)。                                   |
5887
5888### setDisplaySurface<sup>(deprecated)</sup>
5889
5890setDisplaySurface(surfaceId: string, callback: AsyncCallback\<void>): void
5891
5892设置SurfaceId。通过回调函数获取返回值。
5893
5894*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。
5895
5896> **说明:**
5897> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。
5898
5899**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5900
5901**参数:**
5902
5903| 参数名    | 类型                 | 必填 | 说明                      |
5904| --------- | -------------------- | ---- | ------------------------- |
5905| surfaceId | string               | 是   | SurfaceId                 |
5906| callback  | AsyncCallback\<void> | 是   | 回调函数。当设置SurfaceId成功,err为undefined,否则为错误对象。 |
5907
5908**示例:**
5909
5910```ts
5911import { BusinessError } from '@kit.BasicServicesKit';
5912
5913let surfaceId: string = '';
5914videoPlayer.setDisplaySurface(surfaceId, (err: BusinessError) => {
5915  if (err) {
5916    console.error('Failed to set DisplaySurface!');
5917  } else {
5918    console.info('Succeeded in setting DisplaySurface!');
5919  }
5920});
5921```
5922
5923### setDisplaySurface<sup>(deprecated)</sup>
5924
5925setDisplaySurface(surfaceId: string): Promise\<void>
5926
5927设置SurfaceId。通过Promise获取返回值。
5928
5929*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。
5930
5931> **说明:**
5932> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。
5933
5934**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5935
5936**参数:**
5937
5938| 参数名    | 类型   | 必填 | 说明      |
5939| --------- | ------ | ---- | --------- |
5940| surfaceId | string | 是   | SurfaceId |
5941
5942**返回值:**
5943
5944| 类型           | 说明                           |
5945| -------------- | ------------------------------ |
5946| Promise\<void> | 设置SurfaceId的Promise返回值。 |
5947
5948**示例:**
5949
5950```ts
5951import { BusinessError } from '@kit.BasicServicesKit';
5952
5953let surfaceId: string = '';
5954videoPlayer.setDisplaySurface(surfaceId).then(() => {
5955  console.info('Succeeded in setting DisplaySurface');
5956}).catch((error: BusinessError) => {
5957  console.error(`video catchCallback, error:${error}`);
5958});
5959```
5960
5961### prepare<sup>(deprecated)</sup>
5962
5963prepare(callback: AsyncCallback\<void>): void
5964
5965准备播放视频。通过回调函数获取返回值。
5966
5967> **说明:**
5968> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9)替代。
5969
5970**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5971
5972**参数:**
5973
5974| 参数名   | 类型                 | 必填 | 说明                     |
5975| -------- | -------------------- | ---- | ------------------------ |
5976| callback | AsyncCallback\<void> | 是   | 回调函数。当准备播放视频成功,err为undefined,否则为错误对象。|
5977
5978**示例:**
5979
5980```ts
5981import { BusinessError } from '@kit.BasicServicesKit';
5982
5983videoPlayer.prepare((err: BusinessError) => {
5984  if (err) {
5985    console.error('Failed to prepare!');
5986  } else {
5987    console.info('Succeeded in preparing!');
5988  }
5989});
5990```
5991
5992### prepare<sup>(deprecated)</sup>
5993
5994prepare(): Promise\<void>
5995
5996准备播放视频。通过Promise获取返回值。
5997
5998> **说明:**
5999> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9-1)替代。
6000
6001**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6002
6003**返回值:**
6004
6005| 类型           | 说明                          |
6006| -------------- | ----------------------------- |
6007| Promise\<void> | 准备播放视频的Promise返回值。 |
6008
6009**示例:**
6010
6011```ts
6012import { BusinessError } from '@kit.BasicServicesKit';
6013
6014videoPlayer.prepare().then(() => {
6015  console.info('Succeeded in preparing');
6016}).catch((error: BusinessError) => {
6017  console.error(`video catchCallback, error:${error}`);
6018});
6019```
6020
6021### play<sup>(deprecated)</sup>
6022
6023play(callback: AsyncCallback\<void>): void
6024
6025开始播放视频。通过回调函数获取返回值。
6026
6027> **说明:**
6028> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。
6029
6030**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6031
6032**参数:**
6033
6034| 参数名   | 类型                 | 必填 | 说明                     |
6035| -------- | -------------------- | ---- | ------------------------ |
6036| callback | AsyncCallback\<void> | 是   | 回调函数。当开始播放视频成功,err为undefined,否则为错误对象。 |
6037
6038**示例:**
6039
6040```ts
6041import { BusinessError } from '@kit.BasicServicesKit';
6042
6043videoPlayer.play((err: BusinessError) => {
6044  if (err) {
6045    console.error('Failed to play!');
6046  } else {
6047    console.info('Succeeded in playing!');
6048  }
6049});
6050```
6051
6052### play<sup>(deprecated)</sup>
6053
6054play(): Promise\<void>
6055
6056开始播放视频。通过Promise获取返回值。
6057
6058> **说明:**
6059> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9-1)替代。
6060
6061**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6062
6063**返回值:**
6064
6065| 类型           | 说明                          |
6066| -------------- | ----------------------------- |
6067| Promise\<void> | 开始播放视频的Promise返回值。 |
6068
6069**示例:**
6070
6071```ts
6072import { BusinessError } from '@kit.BasicServicesKit';
6073
6074videoPlayer.play().then(() => {
6075  console.info('Succeeded in playing');
6076}).catch((error: BusinessError) => {
6077  console.error(`video catchCallback, error:${error}`);
6078});
6079```
6080
6081### pause<sup>(deprecated)</sup>
6082
6083pause(callback: AsyncCallback\<void>): void
6084
6085通过回调方式暂停播放视频。通过回调函数获取返回值。
6086
6087> **说明:**
6088> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。
6089
6090**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6091
6092**参数:**
6093
6094| 参数名   | 类型                 | 必填 | 说明                     |
6095| -------- | -------------------- | ---- | ------------------------ |
6096| callback | AsyncCallback\<void> | 是   | 回调函数。当暂停播放视频成功,err为undefined,否则为错误对象。 |
6097
6098**示例:**
6099
6100```ts
6101import { BusinessError } from '@kit.BasicServicesKit';
6102
6103videoPlayer.pause((err: BusinessError) => {
6104  if (err) {
6105    console.error('Failed to pause!');
6106  } else {
6107    console.info('Succeeded in pausing!');
6108  }
6109});
6110```
6111
6112### pause<sup>(deprecated)</sup>
6113
6114pause(): Promise\<void>
6115
6116暂停播放视频。通过Promise获取返回值。
6117
6118> **说明:**
6119> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9-1)替代。
6120
6121**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6122
6123**返回值:**
6124
6125| 类型           | 说明                          |
6126| -------------- | ----------------------------- |
6127| Promise\<void> | 暂停播放视频的Promise返回值。 |
6128
6129**示例:**
6130
6131```ts
6132import { BusinessError } from '@kit.BasicServicesKit';
6133
6134videoPlayer.pause().then(() => {
6135  console.info('Succeeded in pausing');
6136}).catch((error: BusinessError) => {
6137  console.error(`video catchCallback, error:${error}`);
6138});
6139```
6140
6141### stop<sup>(deprecated)</sup>
6142
6143stop(callback: AsyncCallback\<void>): void
6144
6145通过回调方式停止播放视频。通过回调函数获取返回值。
6146
6147> **说明:**
6148> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。
6149
6150**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6151
6152**参数:**
6153
6154| 参数名   | 类型                 | 必填 | 说明                     |
6155| -------- | -------------------- | ---- | ------------------------ |
6156| callback | AsyncCallback\<void> | 是   | 回调函数。当停止播放视频成功,err为undefined,否则为错误对象。 |
6157
6158**示例:**
6159
6160```ts
6161import { BusinessError } from '@kit.BasicServicesKit';
6162
6163videoPlayer.stop((err: BusinessError) => {
6164  if (err) {
6165    console.error('Failed to stop!');
6166  } else {
6167    console.info('Succeeded in stopping!');
6168  }
6169});
6170```
6171
6172### stop<sup>(deprecated)</sup>
6173
6174stop(): Promise\<void>
6175
6176停止播放视频。通过Promise获取返回值。
6177
6178> **说明:**
6179> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9-1)替代。
6180
6181**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6182
6183**返回值:**
6184
6185| 类型           | 说明                          |
6186| -------------- | ----------------------------- |
6187| Promise\<void> | 停止播放视频的Promise返回值。 |
6188
6189**示例:**
6190
6191```ts
6192import { BusinessError } from '@kit.BasicServicesKit';
6193
6194videoPlayer.stop().then(() => {
6195  console.info('Succeeded in stopping');
6196}).catch((error: BusinessError) => {
6197  console.error(`video catchCallback, error:${error}`);
6198});
6199```
6200
6201### reset<sup>(deprecated)</sup>
6202
6203reset(callback: AsyncCallback\<void>): void
6204
6205重置播放视频。通过回调函数获取返回值。
6206
6207> **说明:**
6208> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。
6209
6210**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6211
6212**参数:**
6213
6214| 参数名   | 类型                 | 必填 | 说明                     |
6215| -------- | -------------------- | ---- | ------------------------ |
6216| callback | AsyncCallback\<void> | 是   | 回调函数。当重置播放视频成功,err为undefined,否则为错误对象。 |
6217
6218**示例:**
6219
6220```ts
6221import { BusinessError } from '@kit.BasicServicesKit';
6222
6223videoPlayer.reset((err: BusinessError) => {
6224  if (err) {
6225    console.error('Failed to reset!');
6226  } else {
6227    console.info('Succeeded in resetting!');
6228  }
6229});
6230```
6231
6232### reset<sup>(deprecated)</sup>
6233
6234reset(): Promise\<void>
6235
6236重置播放视频。通过Promise获取返回值。
6237
6238> **说明:**
6239> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9-1)替代。
6240
6241**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6242
6243**返回值:**
6244
6245| 类型           | 说明                          |
6246| -------------- | ----------------------------- |
6247| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
6248
6249**示例:**
6250
6251```ts
6252import { BusinessError } from '@kit.BasicServicesKit';
6253
6254videoPlayer.reset().then(() => {
6255  console.info('Succeeded in resetting');
6256}).catch((error: BusinessError) => {
6257  console.error(`video catchCallback, error:${error}`);
6258});
6259```
6260
6261### seek<sup>(deprecated)</sup>
6262
6263seek(timeMs: number, callback: AsyncCallback\<number>): void
6264
6265跳转到指定播放位置,默认跳转到指定时间点的上一个关键帧。通过回调函数获取返回值。
6266
6267> **说明:**
6268> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
6269
6270**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6271
6272**参数:**
6273
6274| 参数名   | 类型                   | 必填 | 说明                                                         |
6275| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
6276| timeMs   | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 |
6277| callback | AsyncCallback\<number> | 是   | 回调函数。跳转到指定播放位置成功时,err为undefined,data为获取到的跳转到的播放位置,否则为错误对象。                               |
6278
6279**示例:**
6280
6281```ts
6282import { BusinessError } from '@kit.BasicServicesKit';
6283
6284let videoPlayer: media.VideoPlayer;
6285media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
6286  if (video != null) {
6287    videoPlayer = video;
6288    console.info('Succeeded in creating VideoPlayer');
6289  } else {
6290    console.error(`Failed to create VideoPlayer, error:${error}`);
6291  }
6292});
6293
6294let seekTime: number = 5000;
6295videoPlayer.seek(seekTime, (err: BusinessError, result: number) => {
6296  if (err) {
6297    console.error('Failed to do seek!');
6298  } else {
6299    console.info('Succeeded in doing seek!');
6300  }
6301});
6302```
6303
6304### seek<sup>(deprecated)</sup>
6305
6306seek(timeMs: number, mode:SeekMode, callback: AsyncCallback\<number>): void
6307
6308跳转到指定播放位置。通过回调函数获取返回值。
6309
6310> **说明:**
6311> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
6312
6313**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6314
6315**参数:**
6316
6317| 参数名   | 类型                   | 必填 | 说明                                                         |
6318| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
6319| timeMs   | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 |
6320| mode     | [SeekMode](#seekmode8) | 是   | 跳转模式。                                                   |
6321| callback | AsyncCallback\<number> | 是   | 回调函数。跳转到指定播放位置成功时,err为undefined,data为获取到的跳转到的播放位置,否则为错误对象。                               |
6322
6323**示例:**
6324
6325```ts
6326import { BusinessError } from '@kit.BasicServicesKit';
6327
6328let videoPlayer: media.VideoPlayer | null = null;
6329media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
6330  if (video != null) {
6331    videoPlayer = video;
6332    console.info('Succeeded in creating VideoPlayer');
6333  } else {
6334    console.error(`Failed to create VideoPlayer, error:${error}`);
6335  }
6336});
6337let seekTime: number = 5000;
6338if (videoPlayer) {
6339  (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC, (err: BusinessError, result: number) => {
6340    if (err) {
6341      console.error('Failed to do seek!');
6342    } else {
6343      console.info('Succeeded in doing seek!');
6344    }
6345  });
6346}
6347```
6348
6349### seek<sup>(deprecated)</sup>
6350
6351seek(timeMs: number, mode?:SeekMode): Promise\<number>
6352
6353跳转到指定播放位置,如果没有设置mode则跳转到指定时间点的上一个关键帧。通过Promise获取返回值。
6354
6355> **说明:**
6356> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
6357
6358**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6359
6360**参数:**
6361
6362| 参数名 | 类型                   | 必填 | 说明                                                         |
6363| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
6364| timeMs | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 |
6365| mode   | [SeekMode](#seekmode8) | 否   | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式。            |
6366
6367**返回值:**
6368
6369| 类型             | 说明                                        |
6370| ---------------- | ------------------------------------------- |
6371| Promise\<number> | 跳转到指定播放位置的Promise返回值,单位ms。 |
6372
6373**示例:**
6374
6375```ts
6376import { BusinessError } from '@kit.BasicServicesKit';
6377
6378let videoPlayer: media.VideoPlayer | null = null;
6379media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
6380  if (video != null) {
6381    videoPlayer = video;
6382    console.info('Succeeded in creating VideoPlayer');
6383  } else {
6384    console.error(`Failed to create VideoPlayer, error:${error}`);
6385  }
6386});
6387let seekTime: number = 5000;
6388if (videoPlayer) {
6389  (videoPlayer as media.VideoPlayer).seek(seekTime).then((seekDoneTime: number) => { // seekDoneTime表示seek完成后的时间点
6390    console.info('Succeeded in doing seek');
6391  }).catch((error: BusinessError) => {
6392    console.error(`video catchCallback, error:${error}`);
6393  });
6394
6395  (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime: number) => {
6396    console.info('Succeeded in doing seek');
6397  }).catch((error: BusinessError) => {
6398    console.error(`video catchCallback, error:${error}`);
6399  });
6400}
6401```
6402
6403### setVolume<sup>(deprecated)</sup>
6404
6405setVolume(vol: number, callback: AsyncCallback\<void>): void
6406
6407设置音量。通过回调函数获取返回值。
6408
6409> **说明:**
6410> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。
6411
6412**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6413
6414**参数:**
6415
6416| 参数名   | 类型                 | 必填 | 说明                                                         |
6417| -------- | -------------------- | ---- | ------------------------------------------------------------ |
6418| vol      | number               | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
6419| callback | AsyncCallback\<void> | 是   | 回调函数。当设置音量成功,err为undefined,否则为错误对象。 |
6420
6421**示例:**
6422
6423```ts
6424import { BusinessError } from '@kit.BasicServicesKit';
6425
6426let vol: number = 0.5;
6427videoPlayer.setVolume(vol, (err: BusinessError) => {
6428  if (err) {
6429    console.error('Failed to set Volume!');
6430  } else {
6431    console.info('Succeeded in setting Volume!');
6432  }
6433});
6434```
6435
6436### setVolume<sup>(deprecated)</sup>
6437
6438setVolume(vol: number): Promise\<void>
6439
6440设置音量。通过Promise获取返回值。
6441
6442> **说明:**
6443> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。
6444
6445**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6446
6447**参数:**
6448
6449| 参数名 | 类型   | 必填 | 说明                                                         |
6450| ------ | ------ | ---- | ------------------------------------------------------------ |
6451| vol    | number | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
6452
6453**返回值:**
6454
6455| 类型           | 说明                      |
6456| -------------- | ------------------------- |
6457| Promise\<void> | 设置音量的Promise返回值。 |
6458
6459**示例:**
6460
6461```ts
6462import { BusinessError } from '@kit.BasicServicesKit';
6463
6464let vol: number = 0.5;
6465videoPlayer.setVolume(vol).then(() => {
6466  console.info('Succeeded in setting Volume');
6467}).catch((error: BusinessError) => {
6468  console.error(`video catchCallback, error:${error}`);
6469});
6470```
6471
6472### release<sup>(deprecated)</sup>
6473
6474release(callback: AsyncCallback\<void>): void
6475
6476释放视频资源。通过回调函数获取返回值。
6477
6478> **说明:**
6479> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。
6480
6481**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6482
6483**参数:**
6484
6485| 参数名   | 类型                 | 必填 | 说明                     |
6486| -------- | -------------------- | ---- | ------------------------ |
6487| callback | AsyncCallback\<void> | 是   | 回调函数。当释放视频资源成功,err为undefined,否则为错误对象。 |
6488
6489**示例:**
6490
6491```ts
6492import { BusinessError } from '@kit.BasicServicesKit';
6493
6494videoPlayer.release((err: BusinessError) => {
6495  if (err) {
6496    console.error('Failed to release!');
6497  } else {
6498    console.info('Succeeded in releasing!');
6499  }
6500});
6501```
6502
6503### release<sup>(deprecated)</sup>
6504
6505release(): Promise\<void>
6506
6507释放视频资源。通过Promise获取返回值。
6508
6509> **说明:**
6510> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9-1)替代。
6511
6512**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6513
6514**返回值:**
6515
6516| 类型           | 说明                          |
6517| -------------- | ----------------------------- |
6518| Promise\<void> | 释放视频资源的Promise返回值。 |
6519
6520**示例:**
6521
6522```ts
6523import { BusinessError } from '@kit.BasicServicesKit';
6524
6525videoPlayer.release().then(() => {
6526  console.info('Succeeded in releasing');
6527}).catch((error: BusinessError) => {
6528  console.error(`video catchCallback, error:${error}`);
6529});
6530```
6531
6532### getTrackDescription<sup>(deprecated)</sup>
6533
6534getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
6535
6536获取视频轨道信息。通过回调函数获取返回值。
6537
6538> **说明:**
6539> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。
6540
6541**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6542
6543**参数:**
6544
6545| 参数名   | 类型                                                         | 必填 | 说明                                       |
6546| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ |
6547| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是   | 回调函数。获取视频轨道信息成功时,err为undefined,data为获取到的视频轨道信息MediaDescription数组,否则为错误对象。 |
6548
6549**示例:**
6550
6551```ts
6552import { BusinessError } from '@kit.BasicServicesKit';
6553
6554videoPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
6555  if ((arrList) != null) {
6556    console.info('Succeeded in getting TrackDescription');
6557  } else {
6558    console.error(`Failed to get TrackDescription, error:${error}`);
6559  }
6560});
6561```
6562
6563### getTrackDescription<sup>(deprecated)</sup>
6564
6565getTrackDescription(): Promise\<Array\<MediaDescription>>
6566
6567获取视频轨道信息。通过Promise获取返回值。
6568
6569> **说明:**
6570> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。
6571
6572**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6573
6574**返回值:**
6575
6576| 类型                                                   | 说明                                            |
6577| ------------------------------------------------------ | ----------------------------------------------- |
6578| Promise<Array<[MediaDescription](#mediadescription8)>> | Promise对象,返回获取的视频轨道信息MediaDescription数组。 |
6579
6580**示例:**
6581
6582```ts
6583import { BusinessError } from '@kit.BasicServicesKit';
6584
6585videoPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
6586  if (arrList != null) {
6587    console.info('Succeeded in getting TrackDescription');
6588  } else {
6589    console.error('Failed to get TrackDescription');
6590  }
6591}).catch((error: BusinessError) => {
6592  console.error(`video catchCallback, error:${error}`);
6593});
6594```
6595
6596### setSpeed<sup>(deprecated)</sup>
6597
6598setSpeed(speed: number, callback: AsyncCallback\<number>): void
6599
6600设置播放速度。通过回调函数获取返回值。
6601
6602> **说明:**
6603> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。
6604
6605**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6606
6607**参数:**
6608
6609| 参数名   | 类型                   | 必填 | 说明                                                       |
6610| -------- | ---------------------- | ---- | ---------------------------------------------------------- |
6611| speed    | number                 | 是   | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 |
6612| callback | AsyncCallback\<number> | 是   | 回调函数。设置播放速度成功时,err为undefined,data为设置的播放速度,否则为错误对象。                                   |
6613
6614**示例:**
6615
6616```ts
6617import { BusinessError } from '@kit.BasicServicesKit';
6618
6619let videoPlayer: media.VideoPlayer | null = null;
6620media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
6621  if (video != null) {
6622    videoPlayer = video;
6623    console.info('Succeeded in creating VideoPlayer');
6624  } else {
6625    console.error(`Failed to create VideoPlayer, error:${error}`);
6626  }
6627});
6628let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;
6629if (videoPlayer) {
6630  (videoPlayer as media.VideoPlayer).setSpeed(speed, (err: BusinessError, result: number) => {
6631    if (err) {
6632      console.error('Failed to set Speed!');
6633    } else {
6634      console.info('Succeeded in setting Speed!');
6635    }
6636  });
6637}
6638```
6639
6640### setSpeed<sup>(deprecated)</sup>
6641
6642setSpeed(speed: number): Promise\<number>
6643
6644设置播放速度。通过Promise获取返回值。
6645
6646> **说明:**
6647> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。
6648
6649**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6650
6651**参数:**
6652
6653| 参数名 | 类型   | 必填 | 说明                                                       |
6654| ------ | ------ | ---- | ---------------------------------------------------------- |
6655| speed  | number | 是   | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 |
6656
6657**返回值:**
6658
6659| 类型             | 说明                                                         |
6660| ---------------- | ------------------------------------------------------------ |
6661| Promise\<number> | Promise对象,返回设置的播放速度,具体见[PlaybackSpeed](#playbackspeed8)。 |
6662
6663**示例:**
6664
6665```ts
6666import { BusinessError } from '@kit.BasicServicesKit';
6667
6668let videoPlayer: media.VideoPlayer | null = null;
6669media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
6670  if (video != null) {
6671    videoPlayer = video;
6672    console.info('Succeeded in creating VideoPlayer');
6673  } else {
6674    console.error(`Failed to create VideoPlayer, error:${error}`);
6675  }
6676});
6677let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;
6678if (videoPlayer) {
6679  (videoPlayer as media.VideoPlayer).setSpeed(speed).then((result: number) => {
6680    console.info('Succeeded in setting Speed');
6681  }).catch((error: BusinessError) => {
6682    console.error(`Failed to set Speed, error:${error}`);//todo:: error
6683  });
6684}
6685```
6686
6687### on('playbackCompleted')<sup>(deprecated)</sup>
6688
6689on(type: 'playbackCompleted', callback: Callback\<void>): void
6690
6691开始监听视频播放完成事件。
6692
6693> **说明:**
6694> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。
6695
6696**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6697
6698**参数:**
6699
6700| 参数名   | 类型     | 必填 | 说明                                                        |
6701| -------- | -------- | ---- | ----------------------------------------------------------- |
6702| type     | string   | 是   | 视频播放完成事件回调类型,支持的事件:'playbackCompleted'。 |
6703| callback | Callback\<void> | 是   | 视频播放完成事件回调方法。                                  |
6704
6705**示例:**
6706
6707```ts
6708videoPlayer.on('playbackCompleted', () => {
6709  console.info('playbackCompleted called!');
6710});
6711```
6712
6713### on('bufferingUpdate')<sup>(deprecated)</sup>
6714
6715on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
6716
6717开始监听视频缓存更新事件。仅网络播放支持该订阅事件。
6718
6719> **说明:**
6720> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。
6721
6722**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6723
6724**参数:**
6725
6726| 参数名   | 类型     | 必填 | 说明                                                         |
6727| -------- | -------- | ---- | ------------------------------------------------------------ |
6728| type     | string   | 是   | 视频缓存事件回调类型,支持的事件:'bufferingUpdate'。        |
6729| callback | function | 是   | 视频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)value值固定为0。 |
6730
6731**示例:**
6732
6733```ts
6734videoPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
6735  console.info('video bufferingInfo type: ' + infoType);
6736  console.info('video bufferingInfo value: ' + value);
6737});
6738```
6739
6740### on('startRenderFrame')<sup>(deprecated)</sup>
6741
6742on(type: 'startRenderFrame', callback: Callback\<void>): void
6743
6744开始监听视频播放首帧送显上报事件。
6745
6746> **说明:**
6747> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('startRenderFrame')](#onstartrenderframe9)替代。
6748
6749**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6750
6751**参数:**
6752
6753| 参数名   | 类型            | 必填 | 说明                                                         |
6754| -------- | --------------- | ---- | ------------------------------------------------------------ |
6755| type     | string          | 是   | 视频播放首帧送显上报事件回调类型,支持的事件:'startRenderFrame'。 |
6756| callback | Callback\<void> | 是   | 视频播放首帧送显上报事件回调方法。                           |
6757
6758**示例:**
6759
6760```ts
6761videoPlayer.on('startRenderFrame', () => {
6762  console.info('startRenderFrame called!');
6763});
6764```
6765
6766### on('videoSizeChanged')<sup>(deprecated)</sup>
6767
6768on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void
6769
6770开始监听视频播放宽高变化事件。
6771
6772> **说明:**
6773> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('videoSizeChange')](#onvideosizechange9)替代。
6774
6775**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6776
6777**参数:**
6778
6779| 参数名   | 类型     | 必填 | 说明                                                         |
6780| -------- | -------- | ---- | ------------------------------------------------------------ |
6781| type     | string   | 是   | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChanged'。 |
6782| callback | function | 是   | 视频播放宽高变化事件回调方法,width表示宽,height表示高。    |
6783
6784**示例:**
6785
6786```ts
6787videoPlayer.on('videoSizeChanged', (width: number, height: number) => {
6788  console.info('video width is: ' + width);
6789  console.info('video height is: ' + height);
6790});
6791```
6792### on('audioInterrupt')<sup>(deprecated)</sup>
6793
6794on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
6795
6796监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。
6797
6798> **说明:**
6799> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。
6800
6801**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6802
6803**参数:**
6804
6805| 参数名   | 类型                                                         | 必填 | 说明                                                     |
6806| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
6807| type     | string                                                       | 是   | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 |
6808| callback | function | 是   | 音频焦点变化事件回调方法。                               |
6809
6810**示例:**
6811
6812```ts
6813import { audio } from '@kit.AudioKit';
6814
6815videoPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
6816  console.info('audioInterrupt called,and InterruptEvent info is:' + info)
6817})
6818```
6819
6820### on('error')<sup>(deprecated)</sup>
6821
6822on(type: 'error', callback: ErrorCallback): void
6823
6824开始监听视频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。
6825
6826> **说明:**
6827> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。
6828
6829**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6830
6831**参数:**
6832
6833| 参数名   | 类型          | 必填 | 说明                                                         |
6834| -------- | ------------- | ---- | ------------------------------------------------------------ |
6835| type     | string        | 是   | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':视频播放中发生错误,触发该事件。 |
6836| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 播放错误事件回调方法。                                       |
6837
6838**示例:**
6839
6840```ts
6841import { BusinessError } from '@kit.BasicServicesKit';
6842
6843videoPlayer.on('error', (error: BusinessError) => {  // 设置'error'事件回调
6844  console.error(`video error called, error: ${error}`);
6845});
6846videoPlayer.url = 'fd://error';  //设置错误的播放地址,触发'error'事件
6847```
6848
6849## VideoPlayState<sup>(deprecated)</sup>
6850
6851type VideoPlayState = 'idle' | 'prepared' | 'playing' | 'paused' | 'stopped' | 'error'
6852
6853视频播放的状态机,可通过state属性获取当前状态。
6854
6855> **说明:**
6856> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。
6857
6858**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6859
6860| 类型     | 说明           |
6861| -------- | -------------- |
6862| 'idle'     | 视频播放空闲。 |
6863| 'prepared' | 视频播放准备。 |
6864| 'playing'  | 视频正在播放。 |
6865| 'paused'   | 视频暂停播放。 |
6866| 'stopped'  | 视频播放停止。 |
6867| 'error'    | 错误状态。     |
6868
6869## AudioRecorder<sup>(deprecated)</sup>
6870
6871> **说明:**
6872> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder](#avrecorder9)替代。
6873
6874音频录制管理类,用于录制音频媒体。在调用AudioRecorder的方法前,需要先通过[createAudioRecorder()](#mediacreateaudiorecorderdeprecated) 构建一个AudioRecorder实例。
6875
6876### prepare<sup>(deprecated)</sup>
6877
6878prepare(config: AudioRecorderConfig): void
6879
6880录音准备。
6881
6882> **说明:**
6883> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.prepare](#prepare9-2)替代。
6884
6885**需要权限:** ohos.permission.MICROPHONE
6886
6887**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6888
6889**参数:**
6890
6891| 参数名 | 类型                                        | 必填 | 说明                                                         |
6892| ------ | ------------------------------------------- | ---- | ------------------------------------------------------------ |
6893| config | [AudioRecorderConfig](#audiorecorderconfigdeprecated) | 是   | 配置录音的相关参数,包括音频输出URI、编码格式、采样率、声道数、输出格式等。 |
6894
6895**错误码:**
6896
6897以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
6898
6899| 错误码ID | 错误信息              |
6900| -------- | --------------------- |
6901| 201      | permission denied     |
6902
6903**示例:**
6904
6905```ts
6906let audioRecorderConfig: media.AudioRecorderConfig = {
6907  audioEncoder : media.AudioEncoder.AAC_LC,
6908  audioEncodeBitRate : 22050,
6909  audioSampleRate : 22050,
6910  numberOfChannels : 2,
6911  format : media.AudioOutputFormat.AAC_ADTS,
6912  uri : 'fd://1',       // 文件需先由调用者创建,并给予适当的权限
6913  location : { latitude : 30, longitude : 130},
6914}
6915audioRecorder.on('prepare', () => {    //设置'prepare'事件回调
6916  console.info('prepare called');
6917});
6918audioRecorder.prepare(audioRecorderConfig);
6919```
6920
6921### start<sup>(deprecated)</sup>
6922
6923start(): void
6924
6925开始录制,需在'prepare'事件成功触发后,才能调用start方法。
6926
6927> **说明:**
6928> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.start](#start9)替代。
6929
6930**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6931
6932**示例:**
6933
6934```ts
6935audioRecorder.on('start', () => {    //设置'start'事件回调
6936  console.info('audio recorder start called');
6937});
6938audioRecorder.start();
6939```
6940
6941### pause<sup>(deprecated)</sup>
6942
6943pause():void
6944
6945暂停录制,需要在'start'事件成功触发后,才能调用pause方法。
6946
6947> **说明:**
6948> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.pause](#pause9-2)替代。
6949
6950**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6951
6952**示例:**
6953
6954```ts
6955audioRecorder.on('pause', () => {    //设置'pause'事件回调
6956  console.info('audio recorder pause called');
6957});
6958audioRecorder.pause();
6959```
6960
6961### resume<sup>(deprecated)</sup>
6962
6963resume():void
6964
6965恢复录制,需要在'pause'事件成功触发后,才能调用resume方法。
6966
6967> **说明:**
6968> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.resume](#resume9)替代。
6969
6970**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6971
6972**示例:**
6973
6974```ts
6975audioRecorder.on('resume', () => {    //设置'resume'事件回调
6976  console.info('audio recorder resume called');
6977});
6978audioRecorder.resume();
6979```
6980
6981### stop<sup>(deprecated)</sup>
6982
6983stop(): void
6984
6985停止录音。
6986
6987> **说明:**
6988> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.stop](#stop9-2)替代。
6989
6990**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6991
6992**示例:**
6993
6994```ts
6995audioRecorder.on('stop', () => {    //设置'stop'事件回调
6996  console.info('audio recorder stop called');
6997});
6998audioRecorder.stop();
6999```
7000
7001### release<sup>(deprecated)</sup>
7002
7003release(): void
7004
7005释放录音资源。
7006
7007> **说明:**
7008> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.release](#release9-2)替代。
7009
7010**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7011
7012**示例:**
7013
7014```ts
7015audioRecorder.on('release', () => {    //设置'release'事件回调
7016  console.info('audio recorder release called');
7017});
7018audioRecorder.release();
7019audioRecorder = undefined;
7020```
7021
7022### reset<sup>(deprecated)</sup>
7023
7024reset(): void
7025
7026重置录音。
7027
7028进行重置录音之前,需要先调用stop()停止录音。重置录音之后,需要调用prepare()设置录音参数项,才能再次进行录音。
7029
7030> **说明:**
7031> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.reset](#reset9-2)替代。
7032
7033**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7034
7035**示例:**
7036
7037```ts
7038audioRecorder.on('reset', () => {    //设置'reset'事件回调
7039  console.info('audio recorder reset called');
7040});
7041audioRecorder.reset();
7042```
7043
7044### on('prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset')<sup>(deprecated)</sup>
7045
7046on(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset', callback: () => void): void
7047
7048开始订阅音频录制事件。
7049
7050> **说明:**
7051> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('stateChange')](#onstatechange9-1)替代。
7052
7053**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7054
7055**参数:**
7056
7057| 参数名   | 类型     | 必填 | 说明                                                         |
7058| -------- | -------- | ---- | ------------------------------------------------------------ |
7059| type     | string   | 是   | 录制事件回调类型,支持的事件包括:'prepare'&nbsp;\|&nbsp;'start'&nbsp;\|  'pause' \| ’resume‘ \|&nbsp;'stop'&nbsp;\|&nbsp;'release'&nbsp;\|&nbsp;'reset'。<br/>-&nbsp;'prepare'&nbsp;:完成prepare调用,音频录制参数设置完成,触发该事件。<br/>-&nbsp;'start'&nbsp;:完成start调用,音频录制开始,触发该事件。<br/>-&nbsp;'pause': 完成pause调用,音频暂停录制,触发该事件。<br/>-&nbsp;'resume': 完成resume调用,音频恢复录制,触发该事件。<br/>-&nbsp;'stop'&nbsp;:完成stop调用,音频停止录制,触发该事件。<br/>-&nbsp;'release'&nbsp;:完成release调用,音频释放录制资源,触发该事件。<br/>-&nbsp;'reset':完成reset调用,音频重置为初始状态,触发该事件。 |
7060| callback | ()=>void | 是   | 录制事件回调方法。                                           |
7061
7062**示例:**
7063
7064```ts
7065import { BusinessError } from '@kit.BasicServicesKit';
7066
7067let audioRecorder: media.AudioRecorder = media.createAudioRecorder();  // 创建一个音频录制实例
7068let audioRecorderConfig: media.AudioRecorderConfig = {
7069  audioEncoder : media.AudioEncoder.AAC_LC,
7070  audioEncodeBitRate : 22050,
7071  audioSampleRate : 22050,
7072  numberOfChannels : 2,
7073  format : media.AudioOutputFormat.AAC_ADTS,
7074  uri : 'fd://xx',  // 文件需先由调用者创建,并给予适当的权限
7075  location : { latitude : 30, longitude : 130}
7076}
7077audioRecorder.on('error', (error: BusinessError) => {  // 设置'error'事件回调
7078  console.error(`audio error called, error: ${error}`);
7079});
7080audioRecorder.on('prepare', () => {  // 设置'prepare'事件回调
7081  console.info('prepare called');
7082  audioRecorder.start();  // 开始录制,并触发'start'事件回调
7083});
7084audioRecorder.on('start', () => {  // 设置'start'事件回调
7085  console.info('audio recorder start called');
7086});
7087audioRecorder.on('pause', () => {  // 设置'pause'事件回调
7088  console.info('audio recorder pause called');
7089});
7090audioRecorder.on('resume', () => {  // 设置'resume'事件回调
7091  console.info('audio recorder resume called');
7092});
7093audioRecorder.on('stop', () => {  // 设置'stop'事件回调
7094  console.info('audio recorder stop called');
7095});
7096audioRecorder.on('release', () => {  // 设置'release'事件回调
7097  console.info('audio recorder release called');
7098});
7099audioRecorder.on('reset', () => {  // 设置'reset'事件回调
7100  console.info('audio recorder reset called');
7101});
7102audioRecorder.prepare(audioRecorderConfig)  // 设置录制参数 ,并触发'prepare'事件回调
7103```
7104
7105### on('error')<sup>(deprecated)</sup>
7106
7107on(type: 'error', callback: ErrorCallback): void
7108
7109开始订阅音频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。
7110
7111> **说明:**
7112> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('error')](#onerror9-1)替代。
7113
7114**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7115
7116**参数:**
7117
7118| 参数名   | 类型          | 必填 | 说明                                                         |
7119| -------- | ------------- | ---- | ------------------------------------------------------------ |
7120| type     | string        | 是   | 录制错误事件回调类型'error'。<br/>-&nbsp;'error':音频录制过程中发生错误,触发该事件。 |
7121| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 录制错误事件回调方法。                                       |
7122
7123**示例:**
7124
7125```ts
7126import { BusinessError } from '@kit.BasicServicesKit';
7127
7128let audioRecorderConfig: media.AudioRecorderConfig = {
7129  audioEncoder : media.AudioEncoder.AAC_LC,
7130  audioEncodeBitRate : 22050,
7131  audioSampleRate : 22050,
7132  numberOfChannels : 2,
7133  format : media.AudioOutputFormat.AAC_ADTS,
7134  uri : 'fd://xx',   // 文件需先由调用者创建,并给予适当的权限
7135  location : { latitude : 30, longitude : 130}
7136}
7137audioRecorder.on('error', (error: BusinessError) => {  // 设置'error'事件回调
7138  console.error(`audio error called, error: ${error}`);
7139});
7140audioRecorder.prepare(audioRecorderConfig);  // prepare不设置参数,触发'error'事件
7141```
7142
7143## AudioRecorderConfig<sup>(deprecated)</sup>
7144
7145> **说明:**
7146> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorderConfig](#avrecorderconfig9)替代。
7147
7148表示音频的录音配置。
7149
7150**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7151
7152| 名称                                | 类型                                         | 必填 | 说明                                                         |
7153| ----------------------------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
7154| audioEncoder                        | [AudioEncoder](#audioencoderdeprecated)                | 否   | 音频编码格式,默认设置为AAC_LC。<br/>**说明:** 从API version 8开始废弃,建议使用audioEncoderMime替代。 |
7155| audioEncodeBitRate                  | number                                       | 否   | 音频编码比特率,默认值为48000。                              |
7156| audioSampleRate                     | number                                       | 否   | 音频采集采样率,默认值为48000。<br>可变比特率模式,码率仅作参考。                              |
7157| numberOfChannels                    | number                                       | 否   | 音频采集声道数,默认值为2。                                  |
7158| format                              | [AudioOutputFormat](#audiooutputformatdeprecated)      | 否   | 音频输出封装格式,默认设置为MPEG_4。<br/>**说明:** 从API version 8开始废弃,建议使用fileFormat替代。 |
7159| location                            | [Location](#location)                        | 否   | 音频采集的地理位置。                                         |
7160| uri                                 | string                                       | 是   | 音频输出URI:fd://xx&nbsp;(fd&nbsp;number)<br/>![](figures/zh-cn_image_url.png) <br/>文件需要由调用者创建,并赋予适当的权限。 |
7161| audioEncoderMime<sup>8+</sup>       | [CodecMimeType](#codecmimetype8)             | 否   | 容器编码格式。                                               |
7162| fileFormat<sup>8+</sup>             | [ContainerFormatType](#containerformattype8) | 否   | 音频编码格式。                                               |
7163
7164## AudioEncoder<sup>(deprecated)</sup>
7165
7166> **说明:**
7167> 从API version 6开始支持,从API version 8开始废弃,建议使用[CodecMimeType](#codecmimetype8)替代。
7168
7169表示音频编码格式的枚举。
7170
7171**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7172
7173| 名称    | 值   | 说明                                                         |
7174| ------- | ---- | ------------------------------------------------------------ |
7175| DEFAULT | 0    | 默认编码格式。<br/>仅做接口定义,暂不支持使用。              |
7176| AMR_NB  | 1    | AMR-NB(Adaptive Multi Rate-Narrow Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 |
7177| AMR_WB  | 2    | AMR-WB(Adaptive Multi Rate-Wide Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 |
7178| AAC_LC  | 3    | AAC-LC(Advanced&nbsp;Audio&nbsp;Coding&nbsp;Low&nbsp;Complexity)编码格式。 |
7179| HE_AAC  | 4    | HE_AAC(High-Efficiency Advanced&nbsp;Audio&nbsp;Coding)编码格式。<br/>仅做接口定义,暂不支持使用。 |
7180
7181## AudioOutputFormat<sup>(deprecated)</sup>
7182
7183> **说明:**
7184> 从API version 6开始支持,从API version 8 开始废弃,建议使用[ContainerFormatType](#containerformattype8)替代。
7185
7186表示音频封装格式的枚举。
7187
7188**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7189
7190| 名称     | 值   | 说明                                                         |
7191| -------- | ---- | ------------------------------------------------------------ |
7192| DEFAULT  | 0    | 默认封装格式。<br/>仅做接口定义,暂不支持使用。              |
7193| MPEG_4   | 2    | 封装为MPEG-4格式。                                           |
7194| AMR_NB   | 3    | 封装为AMR_NB格式。<br/>仅做接口定义,暂不支持使用。          |
7195| AMR_WB   | 4    | 封装为AMR_WB格式。<br/>仅做接口定义,暂不支持使用。          |
7196| AAC_ADTS | 6    | 封装为ADTS(Audio&nbsp;Data&nbsp;Transport&nbsp;Stream)格式,是AAC音频的传输流格式。 |
7197
7198
7199## media.createAVImageGenerator<sup>12+</sup>
7200
7201createAVImageGenerator(callback: AsyncCallback\<AVImageGenerator>): void
7202
7203创建AVImageGenerator实例,通过回调函数获取返回值。
7204
7205**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7206
7207**参数:**
7208
7209| 参数名   | 类型                                  | 必填 | 说明                                                         |
7210| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
7211| callback | AsyncCallback\<[AVImageGenerator](#avimagegenerator12)> | 是   | 回调函数。异步返回AVImageGenerator实例,失败时返回null。可用于获取视频缩略图。 |
7212
7213**错误码:**
7214
7215以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7216
7217| 错误码ID | 错误信息                       |
7218| -------- | ------------------------------ |
7219| 5400101  | No memory. Returned by callback. |
7220
7221**示例:**
7222
7223```ts
7224import { BusinessError } from '@kit.BasicServicesKit';
7225
7226let avImageGenerator: media.AVImageGenerator;
7227media.createAVImageGenerator((error: BusinessError, generator: media.AVImageGenerator) => {
7228  if (generator != null) {
7229    avImageGenerator = generator;
7230    console.info('Succeeded in creating AVImageGenerator');
7231  } else {
7232    console.error(`Failed to creat AVImageGenerator, error message:${error.message}`);
7233  }
7234});
7235```
7236
7237## media.createAVImageGenerator<sup>12+</sup>
7238
7239createAVImageGenerator(): Promise\<AVImageGenerator>
7240
7241创建AVImageGenerator对象,通过Promise获取返回值。
7242
7243**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7244
7245**返回值:**
7246
7247| 类型                            | 说明                                                         |
7248| ------------------------------- | ------------------------------------------------------------ |
7249| Promise\<[AVImageGenerator](#avimagegenerator12)> | Promise对象。异步返回AVImageGenerator实例,失败时返回null。可用于获取视频缩略图。 |
7250
7251**错误码:**
7252
7253以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7254
7255| 错误码ID | 错误信息                      |
7256| -------- | ----------------------------- |
7257| 5400101  | No memory. Returned by promise. |
7258
7259**示例:**
7260
7261```ts
7262import { BusinessError } from '@kit.BasicServicesKit';
7263
7264let avImageGenerator: media.AVImageGenerator;
7265media.createAVImageGenerator().then((generator: media.AVImageGenerator) => {
7266  if (generator != null) {
7267    avImageGenerator = generator;
7268    console.info('Succeeded in creating AVImageGenerator');
7269  } else {
7270    console.error('Failed to creat AVImageGenerator');
7271  }
7272}).catch((error: BusinessError) => {
7273  console.error(`Failed to creat AVImageGenerator, error message:${error.message}`);
7274});
7275```
7276
7277## AVImageGenerator<sup>12+</sup>
7278
7279视频缩略图获取类,用于从视频资源中获取缩略图。在调用AVImageGenerator的方法前,需要先通过[createAVImageGenerator()](#mediacreateavimagegenerator12)构建一个AVImageGenerator实例。
7280
7281获取视频缩略图的demo可参考:[获取视频缩略图开发指导](../../media/media/avimagegenerator.md)。
7282
7283### 属性
7284
7285**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7286
7287| 名称                                                | 类型                                                         | 可读 | 可写 | 说明                                                         |
7288| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
7289| fdSrc<sup>12+</sup>                                  | [AVFileDescriptor](js-apis-media.md#avfiledescriptor9)                       | 是   | 是   | 媒体文件描述,通过该属性设置数据源。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVImageGenerator 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频缩略图数据获取异常。 |
7290
7291### fetchFrameByTime<sup>12+</sup>
7292
7293fetchFrameByTime(timeUs: number, options: AVImageQueryOptions, param: PixelMapParams, callback: AsyncCallback\<image.PixelMap>): void
7294
7295异步方式获取视频缩略图。通过注册回调函数获取返回值。
7296
7297**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7298
7299**参数:**
7300
7301| 参数名   | 类型                                         | 必填 | 说明                                |
7302| -------- | -------------------------------------------- | ---- | ----------------------------------- |
7303| timeUs | number                   | 是   | 需要获取的缩略图在视频中的时间点,单位为微秒(μs)。 |
7304| options | [AVImageQueryOptions](#avimagequeryoptions12)     | 是   | 需要获取的缩略图时间点与视频帧的对应关系。 |
7305| param | [PixelMapParams](#pixelmapparams12)     | 是   | 需要获取的缩略图的格式参数。 |
7306| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)>   | 是   | 回调函数。获取缩略图成功时,err为undefined,data为PixelMap实例,否则为错误对象。 |
7307
7308**错误码:**
7309
7310以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7311
7312| 错误码ID | 错误信息                                   |
7313| -------- | ------------------------------------------ |
7314| 5400102  | Operation not allowed. Returned by callback. |
7315| 5400106  | Unsupported format. Returned by callback.  |
7316
7317**示例:**
7318
7319```ts
7320import { BusinessError } from '@kit.BasicServicesKit';
7321import { image } from '@kit.ImageKit';
7322
7323let avImageGenerator: media.AVImageGenerator | undefined = undefined;
7324let pixel_map : image.PixelMap | undefined = undefined;
7325
7326// 初始化入参
7327let timeUs: number = 0
7328
7329let queryOption: media.AVImageQueryOptions = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC
7330
7331let param: media.PixelMapParams = {
7332  width : 300,
7333  height : 300,
7334}
7335
7336// 获取缩略图
7337media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => {
7338  if(generator != null){
7339    avImageGenerator = generator;
7340    console.info(`Succeeded in creating AVImageGenerator`);
7341    avImageGenerator.fetchFrameByTime(timeUs, queryOption, param, (error: BusinessError, pixelMap) => {
7342      if (error) {
7343        console.error(`Failed to fetch FrameByTime, err = ${JSON.stringify(error)}`)
7344        return
7345      }
7346      pixel_map = pixelMap;
7347    });
7348  } else {
7349    console.error(`Failed to creat AVImageGenerator, error message:${err.message}`);
7350  };
7351});
7352```
7353
7354### fetchFrameByTime<sup>12+</sup>
7355
7356fetchFrameByTime(timeUs: number, options: AVImageQueryOptions, param: PixelMapParams): Promise<image.PixelMap>
7357
7358异步方式获取视频缩略图。通过Promise获取返回值。
7359
7360**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7361
7362**参数:**
7363
7364| 参数名   | 类型                                         | 必填 | 说明                                |
7365| -------- | -------------------------------------------- | ---- | ----------------------------------- |
7366| timeUs | number                   | 是   | 需要获取的缩略图在视频中的时间点,单位为微秒(μs)。 |
7367| options | [AVImageQueryOptions](#avimagequeryoptions12)     | 是   | 需要获取的缩略图时间点与视频帧的对应关系。 |
7368| param | [PixelMapParams](#pixelmapparams12)    | 是   | 需要获取的缩略图的格式参数。 |
7369
7370**返回值:**
7371
7372| 类型           | 说明                                     |
7373| -------------- | ---------------------------------------- |
7374| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise对象,返回视频缩略图对象。 |
7375
7376**错误码:**
7377
7378以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7379
7380| 错误码ID | 错误信息                                  |
7381| -------- | ----------------------------------------- |
7382| 5400102  | Operation not allowed. Returned by promise. |
7383| 5400106  | Unsupported format. Returned by promise.  |
7384
7385**示例:**
7386
7387```ts
7388import { BusinessError } from '@kit.BasicServicesKit';
7389import { image } from '@kit.ImageKit';
7390
7391let avImageGenerator: media.AVImageGenerator | undefined = undefined;
7392let pixel_map : image.PixelMap | undefined = undefined;
7393
7394// 初始化入参
7395let timeUs: number = 0
7396
7397let queryOption: media.AVImageQueryOptions = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC
7398
7399let param: media.PixelMapParams = {
7400  width : 300,
7401  height : 300,
7402}
7403
7404// 获取缩略图
7405media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => {
7406  if(generator != null){
7407    avImageGenerator = generator;
7408    console.info(`Succeeded in creating AVImageGenerator`);
7409    avImageGenerator.fetchFrameByTime(timeUs, queryOption, param).then((pixelMap: image.PixelMap) => {
7410      pixel_map = pixelMap;
7411    }).catch((error: BusinessError) => {
7412      console.error(`Failed to fetch FrameByTime, error message:${error.message}`);
7413    });
7414  } else {
7415    console.error(`Failed to creat AVImageGenerator, error message:${err.message}`);
7416  };
7417});
7418```
7419
7420### release<sup>12+</sup>
7421
7422release(callback: AsyncCallback\<void>): void
7423
7424异步方式释放资源。通过注册回调函数获取返回值。
7425
7426**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7427
7428**参数:**
7429
7430| 参数名   | 类型                                         | 必填 | 说明                                |
7431| -------- | -------------------------------------------- | ---- | ----------------------------------- |
7432| callback | AsyncCallback\<void>                   | 是   | 回调函数。当释放资源成功,err为undefined,否则为错误对象。 |
7433
7434**错误码:**
7435
7436以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7437
7438| 错误码ID | 错误信息                                   |
7439| -------- | ------------------------------------------ |
7440| 5400102  | Operation not allowed. Returned by callback. |
7441
7442**示例:**
7443
7444```ts
7445import { BusinessError } from '@kit.BasicServicesKit';
7446
7447let avImageGenerator: media.AVImageGenerator | undefined = undefined;
7448
7449//释放资源
7450media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => {
7451  if(generator != null){
7452    avImageGenerator = generator;
7453    console.info(`Succeeded in creating AVImageGenerator`);
7454    avImageGenerator.release((error: BusinessError) => {
7455      if (error) {
7456        console.error(`Failed to release, err = ${JSON.stringify(error)}`);
7457        return;
7458      }
7459      console.info(`Succeeded in releasing`);
7460    });
7461  } else {
7462    console.error(`Failed to creat AVImageGenerator, error message:${err.message}`);
7463  };
7464});
7465```
7466
7467### release<sup>12+</sup>
7468
7469release(): Promise\<void>
7470
7471异步方式释放资源。通过Promise获取返回值。
7472
7473**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7474
7475**返回值:**
7476
7477| 类型           | 说明                                     |
7478| -------------- | ---------------------------------------- |
7479| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 |
7480
7481**错误码:**
7482
7483以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7484
7485| 错误码ID | 错误信息                                  |
7486| -------- | ----------------------------------------- |
7487| 5400102  | Operation not allowed. Returned by promise. |
7488
7489**示例:**
7490
7491```ts
7492import { BusinessError } from '@kit.BasicServicesKit';
7493
7494let avImageGenerator: media.AVImageGenerator | undefined = undefined;
7495
7496//释放资源
7497media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => {
7498  if(generator != null){
7499    avImageGenerator = generator;
7500    console.info(`Succeeded in creating AVImageGenerator`);
7501    avImageGenerator.release().then(() => {
7502      console.info(`Succeeded in releasing.`);
7503    }).catch((error: BusinessError) => {
7504      console.error(`Failed to release, error message:${error.message}`);
7505    });
7506  } else {
7507    console.error(`Failed to creat AVImageGenerator, error message:${err.message}`);
7508  };
7509});
7510```
7511
7512## AVImageQueryOptions<sup>12+</sup>
7513
7514需要获取的缩略图时间点与视频帧的对应关系。
7515
7516在获取视频缩略图时,传入的时间点与实际取得的视频帧所在时间点不一定相等,需要指定传入的时间点与实际取得的视频帧的时间关系。
7517
7518**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7519
7520| 名称                     | 值              | 说明                                                         |
7521| ------------------------ | --------------- | ------------------------------------------------------------ |
7522| AV_IMAGE_QUERY_NEXT_SYNC       | 0   | 表示选取传入时间点或之后的关键帧。                       |
7523| AV_IMAGE_QUERY_PREVIOUS_SYNC        | 1    | 表示选取传入时间点或之前的关键帧。 |
7524| AV_IMAGE_QUERY_CLOSEST_SYNC        | 2    | 表示选取离传入时间点最近的关键帧。                 |
7525| AV_IMAGE_QUERY_CLOSEST             | 3    | 表示选取离传入时间点最近的帧,该帧不一定是关键帧。 |
7526
7527## PixelMapParams<sup>12+</sup>
7528
7529获取视频缩略图时,输出缩略图的格式参数。
7530
7531**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7532
7533| 名称   | 类型   | 可读 | 可写 | 说明                                                                            |
7534|--------|--------|------|------|---------------------------------------------------------------------------------|
7535| width  | number | 是   | 是   | 输出的缩略图宽度。应保证大于0且不大于原始视频宽度。否则返回的缩略图不会进行缩放。 |
7536| height | number | 是   | 是   | 输出的缩略图高度。应保证大于0且不大于原始视频高度。否则返回的缩略图不会进行缩放。 |
7537
7538## media.createMediaSourceWithUrl<sup>12+</sup>
7539
7540createMediaSourceWithUrl(url: string, headers?: Record\<string, string>): MediaSource
7541
7542创建流媒体预下载媒体来源实例方法。
7543
7544**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
7545
7546**系统能力:** SystemCapability.Multimedia.Media.Core
7547
7548**参数:**
7549
7550| 参数名   | 类型     | 必填 | 说明                 |
7551| -------- | -------- | ---- | -------------------- |
7552| url | string | 是   | - 流媒体预下载媒体来源url,支持的流媒体格式:HLS、HTTP-FLV、Dash、Https。<br> - 本地m3u8的fd路径。  |
7553| headers | Record\<string, string> | 否   | 支持流媒体预下载HttpHeader自定义。 |
7554
7555**返回值:**
7556
7557| 类型           | 说明                                       |
7558| -------------- | ------------------------------------------ |
7559| [MediaSource](#mediasource12) | MediaSource返回值。 |
7560
7561**错误码:**
7562
7563以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7564
7565| 错误码ID | 错误信息                                  |
7566| -------- | ----------------------------------------- |
7567| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.      |
7568| 5400101  | No memory.  |
7569
7570**示例1:**
7571
7572```ts
7573let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"};
7574let mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx",  headers);
7575```
7576
7577**示例2:**
7578
7579<!--code_no_check-->
7580```ts
7581import { common } from '@kit.AbilityKit';
7582import { resourceManager } from '@kit.LocalizationKit';
7583
7584let context = getContext(this) as common.UIAbilityContext;
7585let mgr = context.resourceManager;
7586let fileDescriptor = await mgr.getRawFd("xxx.m3u8");
7587
7588let fd:string = fileDescriptor.fd.toString();
7589let offset:string = fileDescriptor.offset.toString();
7590let length:string = fileDescriptor.length.toString();
7591let fdUrl:string = "fd://" + fd + "?offset=" + offset + "&size=" + length;
7592
7593let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"};
7594let mediaSource : media.MediaSource = media.createMediaSourceWithUrl(fdUrl,  headers);
7595
7596let mimeType : media.AVMimeTypes = media.AVMimeTypes.APPLICATION_M3U8;
7597mediaSource.setMimeType(mimeType);
7598
7599```
7600
7601## MediaSource<sup>12+</sup>
7602
7603媒体数据信息。来源自[createMediaSourceWithUrl](#mediacreatemediasourcewithurl12)。
7604
7605**系统能力:** SystemCapability.Multimedia.Media.Core
7606
7607### setMimeType<sup>12+</sup>
7608
7609setMimeType(mimeType: AVMimeTypes): void
7610
7611设置媒体MIME类型,以帮助播放器处理扩展的媒体源。
7612
7613**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
7614
7615**系统能力:** SystemCapability.Multimedia.Media.Core
7616
7617**参数:**
7618
7619| 参数名   | 类型     | 必填 | 说明                 |
7620| -------- | -------- | ---- | -------------------- |
7621| mimeType | [AVMimeTypes](#mediasource12) | 是   | 媒体MIME类型。 |
7622
7623## AVMimeTypes<sup>12+</sup>
7624
7625媒体MIME类型,通过[setMimeType](#setmimetype12)设置。
7626
7627**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
7628
7629**系统能力:** SystemCapability.Multimedia.Media.Core
7630
7631
7632| 名称       | 值   | 说明                                                         |
7633| ---------- | ---- | ------------------------------------------------------------ |
7634| APPLICATION_M3U8       | application/m3u8    | 表示m3u8本地文件。 |
7635
7636
7637## PlaybackStrategy<sup>12+</sup>
7638
7639播放策略。
7640
7641**系统能力:** SystemCapability.Multimedia.Media.Core
7642
7643| 名称  | 类型     | 必填 | 说明                 |
7644| -------- | -------- | ---- | -------------------- |
7645| preferredWidth| number | 否   | 播放策略首选宽度,int类型,如1080。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
7646| preferredHeight | number | 否   | 播放策略首选高度,int类型,如1920。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
7647| preferredBufferDuration | number | 否  | 播放策略首选缓冲持续时间,单位s,取值范围1-20。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
7648| preferredHdr | boolean | 否   | 播放策略true是hdr,false非hdr,默认非hdr。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
7649| mutedMediaType | [MediaType](#mediatype8) | 否 | 静音播放的媒体类型,仅支持设置 MediaType.MEDIA_TYPE_AUD。 |
7650| preferredAudioLanguage<sup>13+</sup> | string | 否 | 播放策略首选音轨语言。dash场景下应用可按需设置。非dash场景暂不支持,建议缺省。<br>**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 |
7651| preferredSubtitleLanguage<sup>13+</sup> | string | 否 | 播放策略首选字幕语言。dash场景下应用可按需设置。非dash场景暂不支持,建议缺省。<br>**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 |
7652
7653## AVScreenCaptureRecordPreset<sup>12+</sup>
7654
7655进行屏幕录制时的编码、封装格式参数的枚举。
7656
7657**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7658
7659| 名称                              | 值   | 说明                                         |
7660| --------------------------------- | ---- | -------------------------------------------- |
7661| SCREEN_RECORD_PRESET_H264_AAC_MP4 | 0    | 使用视频H264编码,音频AAC编码,MP4封装格式。 |
7662| SCREEN_RECORD_PRESET_H265_AAC_MP4 | 1    | 使用视频H265编码,音频AAC编码,MP4封装格式。 |
7663
7664## AVScreenCaptureStateCode<sup>12+</sup>
7665
7666屏幕录制的状态回调。
7667
7668**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7669
7670| 名称                                     | 值   | 说明                     |
7671| ---------------------------------------- | ---- | ------------------------ |
7672| SCREENCAPTURE_STATE_STARTED              | 0    | 录屏已开始。             |
7673| SCREENCAPTURE_STATE_CANCELED             | 1    | 录屏被取消。             |
7674| SCREENCAPTURE_STATE_STOPPED_BY_USER      | 2    | 录屏被用户手动停止。     |
7675| SCREENCAPTURE_STATE_INTERRUPTED_BY_OTHER | 3    | 录屏被其他录屏打断。     |
7676| SCREENCAPTURE_STATE_STOPPED_BY_CALL      | 4    | 录屏被来电打断。         |
7677| SCREENCAPTURE_STATE_MIC_UNAVAILABLE      | 5    | 录屏无法使用麦克风收音。 |
7678| SCREENCAPTURE_STATE_MIC_MUTED_BY_USER    | 6    | 麦克风被用户关闭。       |
7679| SCREENCAPTURE_STATE_MIC_UNMUTED_BY_USER  | 7    | 麦克风被用户打开。       |
7680| SCREENCAPTURE_STATE_ENTER_PRIVATE_SCENE  | 8    | 录屏进入隐私页面。       |
7681| SCREENCAPTURE_STATE_EXIT_PRIVATE_SCENE   | 9    | 录屏退出隐私页面。       |
7682| SCREENCAPTURE_STATE_STOPPED_BY_USER_SWITCHES   | 10    | 系统用户切换,录屏中断。       |
7683
7684## AVScreenCaptureRecordConfig<sup>12+</sup>
7685
7686表示录屏参数配置。
7687
7688**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7689
7690| 名称              | 类型                                                         | 必填 | 说明                                                         |
7691| ----------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
7692| fd                | number                                                       | 是   | 录制输出的文件fd。                                           |
7693| frameWidth        | number                                                       | 否   | 录屏的视频宽度,默认屏幕宽度,根据不同屏幕默认值不同,单位px。 |
7694| frameHeight       | number                                                       | 否   | 录屏的视频高度,默认屏幕高度,根据不同屏幕默认值不同,单位px。 |
7695| videoBitrate      | number                                                       | 否   | 录屏的视频比特率,默认10000000。                             |
7696| audioSampleRate   | number                                                       | 否   | 录屏的音频采样率,内录的系统音和外录的麦克风都是用此采样率,默认48000,仅支持设置48000或16000。 |
7697| audioChannelCount | number                                                       | 否   | 录屏的音频通道数,内录的系统音和外录的麦克风都是用此通道数,默认2声道,仅支持设置1或2声道。 |
7698| audioBitrate      | number                                                       | 否   | 录屏的音频比特率,内录的系统音和外录的麦克风都是用此比特率,默认96000。 |
7699| preset            | [AVScreenCaptureRecordPreset](#avscreencapturerecordpreset12) | 否   | 录屏使用的编码和封装格式,默认SCREEN_RECORD_PRESET_H264_AAC_MP4格式。 |
7700
7701## AVScreenCaptureRecorder<sup>12+</sup>
7702
7703屏幕录制管理类,用于进行屏幕录制。在调用AVScreenCaptureRecorder的方法前,需要先通过[createAVScreenCaptureRecorder()](#mediacreateavscreencapturerecorder12)创建一个AVScreenCaptureRecorder实例。
7704
7705### init<sup>12+</sup>
7706
7707init(config: AVScreenCaptureRecordConfig): Promise\<void>
7708
7709异步方式进行录屏初始化,设置录屏参数。通过Promise获取返回值。
7710
7711**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7712
7713**参数:**
7714
7715| 参数名 | 类型                                                         | 必填 | 说明                     |
7716| ------ | ------------------------------------------------------------ | ---- | ------------------------ |
7717| config | [AVScreenCaptureRecordConfig](#avscreencapturerecordconfig12) | 是   | 配置屏幕录制的相关参数。 |
7718
7719**返回值:**
7720
7721| 类型           | 说明                                |
7722| -------------- | ----------------------------------- |
7723| Promise\<void> | 异步录屏初始化方法的Promise返回值。 |
7724
7725**错误码:**
7726
7727| 错误码ID | 错误信息                                       |
7728| -------- | ---------------------------------------------- |
7729| 401      | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. Return by promise. |
7730| 5400103  | IO error. Return by promise.                   |
7731| 5400105  | Service died. Return by promise.               |
7732
7733**示例:**
7734
7735```ts
7736import { BusinessError } from '@kit.BasicServicesKit';
7737
7738let avCaptureConfig: media.AVScreenCaptureRecordConfig = {
7739    fd: 0, // 文件需要先有调用者创建,赋予写权限,将文件fd传给此参数
7740    frameWidth: 640,
7741    frameHeight: 480
7742    // 补充其他参数
7743}
7744
7745avScreenCaptureRecorder.init(avCaptureConfig).then(() => {
7746    console.info('Succeeded in initing avScreenCaptureRecorder');
7747}).catch((err: BusinessError) => {
7748    console.info('Failed to init avScreenCaptureRecorder, error: ' + err.message);
7749})
7750```
7751
7752### startRecording<sup>12+</sup>
7753
7754startRecording(): Promise\<void>
7755
7756异步方式开始录屏。通过Promise获取返回值。
7757
7758**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7759
7760**返回值:**
7761
7762| 类型           | 说明                             |
7763| -------------- | -------------------------------- |
7764| Promise\<void> | 异步开始录屏方法的Promise返回值. |
7765
7766**错误码:**
7767
7768| 错误码ID | 错误信息                         |
7769| -------- | -------------------------------- |
7770| 5400103  | IO error. Return by promise.     |
7771| 5400105  | Service died. Return by promise. |
7772
7773**示例:**
7774
7775```ts
7776import { BusinessError } from '@kit.BasicServicesKit';
7777
7778avScreenCaptureRecorder.startRecording().then(() => {
7779    console.info('Succeeded in starting avScreenCaptureRecorder');
7780}).catch((err: BusinessError) => {
7781    console.info('Failed to start avScreenCaptureRecorder, error: ' + err.message);
7782})
7783```
7784
7785### stopRecording<sup>12+</sup>
7786
7787stopRecording(): Promise\<void>
7788
7789异步方式结束录屏。通过Promise获取返回值。
7790
7791**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7792
7793**返回值:**
7794
7795| 类型           | 说明                              |
7796| -------------- | --------------------------------- |
7797| Promise\<void> | 异步结束录屏方法的Promise返回值。 |
7798
7799**错误码:**
7800
7801| 错误码ID | 错误信息                         |
7802| -------- | -------------------------------- |
7803| 5400103  | IO error. Return by promise.     |
7804| 5400105  | Service died. Return by promise. |
7805
7806**示例:**
7807
7808```ts
7809import { BusinessError } from '@kit.BasicServicesKit';
7810
7811avScreenCaptureRecorder.stopRecording().then(() => {
7812    console.info('Succeeded in stopping avScreenCaptureRecorder');
7813}).catch((err: BusinessError) => {
7814    console.info('Failed to stop avScreenCaptureRecorder, error: ' + err.message);
7815})
7816```
7817
7818### skipPrivacyMode<sup>12+</sup>
7819
7820skipPrivacyMode(windowIDs: Array\<number>): Promise\<void>
7821
7822录屏时,应用可对本应用的隐私窗口做安全豁免。通过Promise获取返回值。
7823如录屏时,用户在本应用进行输入密码等操作,应用不会进行黑屏处理。
7824
7825**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7826
7827**参数:**
7828
7829| 参数名 | 类型    | 必填 | 说明                                                      |
7830| ------ | ------- | ---- | --------------------------------------------------------- |
7831| windowIDs | Array\<number> | 是   | 需要豁免隐私的窗口列表,包括主窗口id和子窗口id,窗口属性获取方法可以参考[窗口API引用](../apis-arkui/js-apis-window.md#getwindowproperties9) |
7832
7833**返回值:**
7834
7835| 类型           | 说明                             |
7836| -------------- | -------------------------------- |
7837| Promise\<void> | 豁免隐私窗口的Promise返回值. |
7838
7839**错误码:**
7840
7841| 错误码ID | 错误信息                         |
7842| -------- | -------------------------------- |
7843| 5400103  | IO error. Return by promise.     |
7844| 5400105  | Service died. Return by promise. |
7845
7846**示例:**
7847
7848```ts
7849import { BusinessError } from '@kit.BasicServicesKit';
7850
7851let windowIDs = [];
7852avScreenCaptureRecorder.skipPrivacyMode(windowIDs).then(() => {
7853    console.info('Succeeded in skipping privacy mode');
7854}).catch((err: BusinessError) => {
7855    console.info('Failed to skip privacy mode, error: ' + err.message);
7856})
7857```
7858
7859### setMicEnabled<sup>12+</sup>
7860
7861setMicEnabled(enable: boolean): Promise\<void>
7862
7863异步方式设置麦克风开关。通过Promise获取返回值。
7864
7865**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7866
7867**参数:**
7868
7869| 参数名 | 类型    | 必填 | 说明                                                      |
7870| ------ | ------- | ---- | --------------------------------------------------------- |
7871| enable | boolean | 是   | 麦克风开关控制,true代表麦克风打开,false代表麦克风关闭。 |
7872
7873**返回值:**
7874
7875| 类型           | 说明                                    |
7876| -------------- | --------------------------------------- |
7877| Promise\<void> | 异步设置麦克风开关方法的Promise返回值。 |
7878
7879**错误码:**
7880
7881| 错误码ID | 错误信息                         |
7882| -------- | -------------------------------- |
7883| 5400103  | IO error. Return by promise.     |
7884| 5400105  | Service died. Return by promise. |
7885
7886**示例:**
7887
7888```ts
7889import { BusinessError } from '@kit.BasicServicesKit';
7890
7891avScreenCaptureRecorder.setMicEnabled(true).then(() => {
7892    console.info('Succeeded in setMicEnabled avScreenCaptureRecorder');
7893}).catch((err: BusinessError) => {
7894    console.info('Failed to setMicEnabled avScreenCaptureRecorder, error: ' + err.message);
7895})
7896```
7897
7898### release<sup>12+</sup>
7899
7900release(): Promise\<void>
7901
7902异步方式释放录屏。通过Promise获取返回值。
7903
7904**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7905
7906**返回值:**
7907
7908| 类型           | 说明                              |
7909| -------------- | --------------------------------- |
7910| Promise\<void> | 异步释放录屏方法的Promise返回值。 |
7911
7912**错误码:**
7913
7914| 错误码ID | 错误信息                         |
7915| -------- | -------------------------------- |
7916| 5400103  | IO error. Return by promise.     |
7917| 5400105  | Service died. Return by promise. |
7918
7919**示例:**
7920
7921```ts
7922import { BusinessError } from '@kit.BasicServicesKit';
7923
7924avScreenCaptureRecorder.release().then(() => {
7925    console.info('Succeeded in releasing avScreenCaptureRecorder');
7926}).catch((err: BusinessError) => {
7927    console.info('Faile to release avScreenCaptureRecorder, error: ' + err.message);
7928})
7929```
7930
7931### on('stateChange')<sup>12+</sup>
7932
7933on(type: 'stateChange', callback: Callback\<AVScreenCaptureStateCode>): void
7934
7935订阅录屏状态切换的事件,当状态发生的时候,会通过订阅的回调通知用户。用户只能订阅一个状态切换的回调方法,重复订阅时,以最后一次订阅的回调接口为准。
7936
7937**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7938
7939**参数:**
7940
7941| 参数名   | 类型     | 必填 | 说明                                                         |
7942| -------- | -------- | ---- | ------------------------------------------------------------ |
7943| type     | string   | 是   | 状态切换事件回调类型,支持的事件:'stateChange'。            |
7944| callback | function | 是   | 状态切换事件回调方法,[AVScreenCaptureStateCode](#avscreencapturestatecode12)表示切换到的状态。 |
7945
7946**示例:**
7947
7948```ts
7949avScreenCaptureRecorder.on('stateChange', (state: media.AVScreenCaptureStateCode) => {
7950    console.info('avScreenCaptureRecorder stateChange to ' + state);
7951})
7952```
7953
7954### on('error')<sup>12+</sup>
7955
7956on(type: 'error', callback: ErrorCallback): void
7957
7958订阅AVScreenCaptureRecorder的错误事件,用户可以根据应用自身逻辑对错误事件进行处理。用户只能订阅一个错误事件的回调方法,重复订阅时,以最后一次订阅的回调接口为准。
7959
7960**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7961
7962**参数:**
7963
7964| 参数名   | 类型          | 必填 | 说明                                    |
7965| -------- | ------------- | ---- | --------------------------------------- |
7966| type     | string        | 是   | 错误事件回调类型,支持的事件:'error'。 |
7967| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 录屏错误事件回调方法。                  |
7968
7969**错误码:**
7970
7971| 错误码ID | 错误信息                         |
7972| -------- | -------------------------------- |
7973| 201      | permission denied.     |
7974| 5400103  | IO error. Return by ErrorCallback. |
7975| 5400105  | Service died. Return by ErrorCallback. |
7976
7977**示例:**
7978
7979```ts
7980avScreenCaptureRecorder.on('error', (err: BusinessError) => {
7981    console.error('avScreenCaptureRecorder error:' + err.message);
7982})
7983```
7984
7985### off('stateChange')<sup>12+</sup>
7986
7987 off(type: 'stateChange', callback?: Callback\<AVScreenCaptureStateCode>): void
7988
7989取消订阅状态切换回调事件。用户可以指定填入状态切换的回调方法来取消订阅。
7990
7991**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7992
7993**参数:**
7994
7995| 参数名   | 类型     | 必填 | 说明                                                         |
7996| -------- | -------- | ---- | ------------------------------------------------------------ |
7997| type     | string   | 是   | 状态切换事件回调类型,支持的事件:'stateChange'。            |
7998| callback | function | 否   | 状态切换事件回调方法,[AVScreenCaptureStateCode](#avscreencapturestatecode12)表示切换到的状态,不填此参数则会取消最后一次订阅事件。 |
7999
8000**示例:**
8001
8002```ts
8003avScreenCaptureRecorder.off('stateChange');
8004```
8005
8006### off('error')<sup>12+</sup>
8007
8008off(type: 'error', callback?: ErrorCallback): void
8009
8010取消订阅错误回调事件。用户可以指定填入错误回调方法来取消订阅。
8011
8012**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
8013
8014**参数:**
8015
8016| 参数名   | 类型     | 必填 | 说明                                                       |
8017| -------- | -------- | ---- | ---------------------------------------------------------- |
8018| type     | string   | 是   | 状态切换事件回调类型,支持的事件:'error'。                |
8019| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否   | 录屏错误事件回调方法,不填此参数则会取消最后一次订阅事件。 |
8020
8021**示例:**
8022
8023```ts
8024avScreenCaptureRecorder.off('error');
8025```