• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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- 获取音视频元数据([AVMetadataExtractor](#avmetadataextractor11)<sup>11+</sup>)
15
16## 导入模块
17
18```ts
19import media from '@ohos.multimedia.media';
20```
21
22## media.createAVPlayer<sup>9+</sup>
23
24createAVPlayer(callback: AsyncCallback\<AVPlayer>): void
25
26异步方式创建音视频播放实例,通过注册回调函数获取返回值。
27
28> **说明:**
29>
30> - 可创建的视频播放实例不能超过13个。
31> - 可创建的音视频播放实例(即音频、视频、音视频三类相加)不能超过16个。
32> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568仅支持创建6个以内的视频播放实例。
33
34**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
35
36**参数:**
37
38| 参数名   | 类型                                  | 必填 | 说明                                                         |
39| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
40| callback | AsyncCallback\<[AVPlayer](#avplayer9)> | 是   | 回调函数。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 |
41
42**错误码:**
43
44以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
45
46| 错误码ID | 错误信息                       |
47| -------- | ------------------------------ |
48| 5400101  | No memory. Return by callback. |
49
50**示例:**
51
52```ts
53import { BusinessError } from '@ohos.base';
54
55let avPlayer: media.AVPlayer;
56media.createAVPlayer((error: BusinessError, video: media.AVPlayer) => {
57  if (video != null) {
58    avPlayer = video;
59    console.info('createAVPlayer success');
60  } else {
61    console.error(`createAVPlayer fail, error message:${error.message}`);
62  }
63});
64```
65
66## media.createAVPlayer<sup>9+</sup>
67
68createAVPlayer(): Promise\<AVPlayer>
69
70异步方式创建音视频播放实例,通过Promise获取返回值。
71
72> **说明:**
73>
74> - 可创建的视频播放实例不能超过13个。
75> - 可创建的音视频播放实例(即音频、视频、音视频三类相加)不能超过16个。
76> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568仅支持创建6个以内的视频播放实例。
77
78**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
79
80**返回值:**
81
82| 类型                            | 说明                                                         |
83| ------------------------------- | ------------------------------------------------------------ |
84| Promise\<[AVPlayer](#avplayer9)> | Promise对象。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 |
85
86**错误码:**
87
88以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
89
90| 错误码ID | 错误信息                      |
91| -------- | ----------------------------- |
92| 5400101  | No memory. Return by promise. |
93
94**示例:**
95
96```ts
97import { BusinessError } from '@ohos.base';
98
99let avPlayer: media.AVPlayer;
100media.createAVPlayer().then((video: media.AVPlayer) => {
101  if (video != null) {
102    avPlayer = video;
103    console.info('createAVPlayer success');
104  } else {
105    console.error('createAVPlayer fail');
106  }
107}).catch((error: BusinessError) => {
108  console.error(`AVPlayer catchCallback, error message:${error.message}`);
109});
110```
111
112## media.createAVRecorder<sup>9+</sup>
113
114createAVRecorder(callback: AsyncCallback\<AVRecorder>): void
115
116异步方式创建音视频录制实例。通过注册回调函数获取返回值。
117
118> **说明:**
119>
120> - 可创建的音视频录制实例不能超过2个。
121> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。
122
123**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
124
125**参数:**
126
127| 参数名   | 类型                                       | 必填 | 说明                                                         |
128| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
129| callback | AsyncCallback\<[AVRecorder](#avrecorder9)> | 是   | 回调函数。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 |
130
131**错误码:**
132
133以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
134
135| 错误码ID | 错误信息                       |
136| -------- | ------------------------------ |
137| 5400101  | No memory. Return by callback. |
138
139**示例:**
140
141```ts
142import { BusinessError } from '@ohos.base';
143let avRecorder: media.AVRecorder;
144
145media.createAVRecorder((error: BusinessError, recorder: media.AVRecorder) => {
146  if (recorder != null) {
147    avRecorder = recorder;
148    console.info('createAVRecorder success');
149  } else {
150    console.error(`createAVRecorder fail, error message:${error.message}`);
151  }
152});
153```
154
155## media.createAVRecorder<sup>9+</sup>
156
157createAVRecorder(): Promise\<AVRecorder>
158
159异步方式创建音视频录制实例。通过Promise获取返回值。
160
161> **说明:**
162>
163> - 可创建的音视频录制实例不能超过2个。
164> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。
165
166**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
167
168**返回值:**
169
170| 类型                                 | 说明                                                         |
171| ------------------------------------ | ------------------------------------------------------------ |
172| Promise\<[AVRecorder](#avrecorder9)> | Promise对象。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 |
173
174**错误码:**
175
176以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
177
178| 错误码ID | 错误信息                      |
179| -------- | ----------------------------- |
180| 5400101  | No memory. Return by promise. |
181
182**示例:**
183
184```ts
185import { BusinessError } from '@ohos.base';
186
187let avRecorder: media.AVRecorder;
188media.createAVRecorder().then((recorder: media.AVRecorder) => {
189  if (recorder != null) {
190    avRecorder = recorder;
191    console.info('createAVRecorder success');
192  } else {
193    console.error('createAVRecorder fail');
194  }
195}).catch((error: BusinessError) => {
196  console.error(`createAVRecorder catchCallback, error message:${error.message}`);
197});
198```
199
200## media.createAVMetadataExtractor<sup>11+</sup>
201
202createAVMetadataExtractor(callback: AsyncCallback\<AVMetadataExtractor>): void
203
204异步方式创建AVMetadataExtractor实例,通过注册回调函数获取返回值。
205
206**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
207
208**参数:**
209
210| 参数名   | 类型                                  | 必填 | 说明                                                         |
211| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
212| callback | AsyncCallback\<[AVMetadataExtractor](#avmetadataextractor11)> | 是   | 回调函数。异步返回AVMetadataExtractor实例,失败时返回null。可用于获取音视频元信息。 |
213
214**错误码:**
215
216以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
217
218| 错误码ID | 错误信息                       |
219| -------- | ------------------------------ |
220| 5400101  | No memory. Returned by callback. |
221
222**示例:**
223
224```ts
225import { BusinessError } from '@ohos.base';
226
227let avMetadataExtractor: media.AVMetadataExtractor;
228media.createAVMetadataExtractor((error: BusinessError, extractor: media.AVMetadataExtractor) => {
229  if (extractor != null) {
230    avMetadataExtractor = extractor;
231    console.info('createAVMetadataExtractor success');
232  } else {
233    console.error(`createAVMetadataExtractor fail, error message:${error.message}`);
234  }
235});
236```
237
238## media.createAVMetadataExtractor<sup>11+</sup>
239
240createAVMetadataExtractor(): Promise\<AVMetadataExtractor>
241
242异步方式创建AVMetadataExtractor对象,通过Promise获取返回值。
243
244**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
245
246**返回值:**
247
248| 类型                            | 说明                                                         |
249| ------------------------------- | ------------------------------------------------------------ |
250| Promise\<[AVMetadataExtractor](#avmetadataextractor11)> | Promise对象。异步返回AVMetadataExtractor实例,失败时返回null。可用于获取音视频元数据。 |
251
252**错误码:**
253
254以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
255
256| 错误码ID | 错误信息                      |
257| -------- | ----------------------------- |
258| 5400101  | No memory. Returned by promise. |
259
260**示例:**
261
262```ts
263import { BusinessError } from '@ohos.base';
264
265let avMetadataExtractor: media.AVMetadataExtractor;
266media.createAVMetadataExtractor().then((extractor: media.AVMetadataExtractor) => {
267  if (extractor != null) {
268    avMetadataExtractor = extractor;
269    console.info('createAVMetadataExtractor success');
270  } else {
271    console.error('createAVMetadataExtractor fail');
272  }
273}).catch((error: BusinessError) => {
274  console.error(`AVMetadataExtractor catchCallback, error message:${error.message}`);
275});
276```
277
278## media.createSoundPool<sup>10+</sup>
279
280createSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo, callback: AsyncCallback\<SoundPool>): void
281
282创建音频池实例,使用callback方式异步获取返回值。
283
284**系统能力:** SystemCapability.Multimedia.Media.SoundPool
285
286**参数:**
287
288| 参数名   | 类型                                            | 必填 | 说明                                                         |
289| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ |
290| maxStreams | number | 是   | soundPool实例的最大播放的流数 |
291| audioRenderInfo | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8)  | 是   | 音频播放参数信息 |
292| callback | AsyncCallback<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | 是   | 回调函数。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 |
293
294**错误码:**
295
296以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
297
298| 错误码ID | 错误信息                       |
299| -------- | ------------------------------ |
300| 5400101  | No memory. Return by callback. |
301
302**示例:**
303
304```js
305import audio from '@ohos.multimedia.audio'
306
307let soundPool: media.SoundPool;
308let audioRendererInfo: audio.AudioRendererInfo = {
309  usage : audio.StreamUsage.STREAM_USAGE_MUSIC,
310  rendererFlags : 0
311}
312
313media.createSoundPool(5, audioRendererInfo, (error, soundPool_: media.SoundPool) => {
314  if (error) {
315    console.error(`createSoundPool failed`)
316    return;
317  } else {
318    soundPool = soundPool_;
319    console.info(`createSoundPool success`)
320  }
321});
322```
323
324## media.createSoundPool<sup>10+</sup>
325
326createSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo): Promise\<SoundPool>
327
328创建音频池实例,使用Promise方式异步获取返回值。
329
330**系统能力:** SystemCapability.Multimedia.Media.SoundPool
331
332**参数:**
333
334| 参数名   | 类型                                            | 必填 | 说明                                                         |
335| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ |
336| maxStreams | number | 是   | soundPool实例的最大播放的流数 |
337| audioRenderInfo | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8)  | 是   | 音频播放参数信息 |
338
339**返回值:**
340
341| 类型                                      | 说明                                                         |
342| ----------------------------------------- | ------------------------------------------------------------ |
343| Promise<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | Promise对象。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 |
344
345**错误码:**
346
347以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
348
349| 错误码ID | 错误信息                      |
350| -------- | ----------------------------- |
351| 5400101  | No memory. Return by promise. |
352
353**示例:**
354
355```js
356import audio from '@ohos.multimedia.audio'
357import { BusinessError } from '@ohos.base';
358
359let soundPool: media.SoundPool;
360let audioRendererInfo: audio.AudioRendererInfo = {
361  usage : audio.StreamUsage.STREAM_USAGE_MUSIC,
362  rendererFlags : 0
363}
364
365media.createSoundPool(5, audioRendererInfo).then((soundpool_: media.SoundPool) => {
366  if (soundpool_ != null) {
367    soundPool = soundpool_;
368    console.info('create SoundPool success');
369  } else {
370    console.error('create SoundPool fail');
371  }
372}, (error: BusinessError) => {
373  console.error(`soundpool catchCallback, error message:${error.message}`);
374});
375```
376
377## AVErrorCode<sup>9+</sup>
378
379[媒体错误码](errorcode-media.md)类型枚举
380
381**系统能力:** SystemCapability.Multimedia.Media.Core
382
383| 名称                                  | 值      | 说明                                 |
384| :------------------------------------ | ------- | ------------------------------------ |
385| AVERR_OK                              | 0       | 表示操作成功。                       |
386| AVERR_NO_PERMISSION                   | 201     | 表示无权限执行此操作。               |
387| AVERR_INVALID_PARAMETER               | 401     | 表示传入入参无效。                   |
388| AVERR_UNSUPPORT_CAPABILITY            | 801     | 表示当前版本不支持该API能力。        |
389| AVERR_NO_MEMORY                       | 5400101 | 表示系统内存不足或服务数量达到上限。 |
390| AVERR_OPERATE_NOT_PERMIT              | 5400102 | 表示当前状态不允许或无权执行此操作。 |
391| AVERR_IO                              | 5400103 | 表示数据流异常信息。                 |
392| AVERR_TIMEOUT                         | 5400104 | 表示系统或网络响应超时。             |
393| AVERR_SERVICE_DIED                    | 5400105 | 表示服务进程死亡。                   |
394| AVERR_UNSUPPORT_FORMAT                | 5400106 | 表示不支持当前媒体资源的格式。       |
395| AVERR_AUDIO_INTERRUPTED<sup>11+</sup> | 5400107 | 表示音频焦点被抢占                   |
396
397## MediaType<sup>8+</sup>
398
399媒体类型枚举。
400
401**系统能力:** SystemCapability.Multimedia.Media.Core
402
403| 名称           | 值   | 说明       |
404| -------------- | ---- | ---------- |
405| MEDIA_TYPE_AUD | 0    | 表示音频。 |
406| MEDIA_TYPE_VID | 1    | 表示视频。 |
407
408## CodecMimeType<sup>8+</sup>
409
410Codec MIME类型枚举。
411
412**系统能力:** SystemCapability.Multimedia.Media.Core
413
414| 名称         | 值                    | 说明                     |
415| ------------ | --------------------- | ------------------------ |
416| VIDEO_H263   | 'video/h263'          | 表示视频/h263类型。      |
417| VIDEO_AVC    | 'video/avc'           | 表示视频/avc类型。       |
418| VIDEO_MPEG2  | 'video/mpeg2'         | 表示视频/mpeg2类型。     |
419| VIDEO_MPEG4  | 'video/mp4v-es'         | 表示视频/mpeg4类型。     |
420| VIDEO_VP8    | 'video/x-vnd.on2.vp8' | 表示视频/vp8类型。       |
421| VIDEO_HEVC<sup>11+</sup>   | 'video/hevc'          | 表示视频/H265类型。|
422| AUDIO_AAC    | 'audio/mp4a-latm'     | 表示音频/mp4a-latm类型。 |
423| AUDIO_VORBIS | 'audio/vorbis'        | 表示音频/vorbis类型。    |
424| AUDIO_FLAC   | 'audio/flac'          | 表示音频/flac类型。      |
425
426## MediaDescriptionKey<sup>8+</sup>
427
428媒体信息描述枚举。
429
430**系统能力:** SystemCapability.Multimedia.Media.Core
431
432| 名称                     | 值              | 说明                                                         |
433| ------------------------ | --------------- | ------------------------------------------------------------ |
434| MD_KEY_TRACK_INDEX       | 'track_index'   | 表示轨道序号,其对应键值类型为number。                       |
435| MD_KEY_TRACK_TYPE        | 'track_type'    | 表示轨道类型,其对应键值类型为number,参考[MediaType](#mediatype8)。 |
436| MD_KEY_CODEC_MIME        | 'codec_mime'    | 表示codec_mime类型,其对应键值类型为string。                 |
437| MD_KEY_DURATION          | 'duration'      | 表示媒体时长,其对应键值类型为number,单位为毫秒(ms)。     |
438| MD_KEY_BITRATE           | 'bitrate'       | 表示比特率,其对应键值类型为number,单位为比特率(bps)。    |
439| MD_KEY_WIDTH             | 'width'         | 表示视频宽度,其对应键值类型为number,单位为像素(px)。     |
440| MD_KEY_HEIGHT            | 'height'        | 表示视频高度,其对应键值类型为number,单位为像素(px)。     |
441| MD_KEY_FRAME_RATE        | 'frame_rate'    | 表示视频帧率,其对应键值类型为number,单位为100帧每秒(100fps)。 |
442| MD_KEY_AUD_CHANNEL_COUNT | 'channel_count' | 表示声道数,其对应键值类型为number。                         |
443| MD_KEY_AUD_SAMPLE_RATE   | 'sample_rate'   | 表示采样率,其对应键值类型为number,单位为赫兹(Hz)。       |
444
445## BufferingInfoType<sup>8+</sup>
446
447缓存事件类型枚举。
448
449**系统能力:** SystemCapability.Multimedia.Media.Core
450
451| 名称              | 值   | 说明                             |
452| ----------------- | ---- | -------------------------------- |
453| BUFFERING_START   | 1    | 表示开始缓存。                   |
454| BUFFERING_END     | 2    | 表示结束缓存。                   |
455| BUFFERING_PERCENT | 3    | 表示缓存百分比。                 |
456| CACHED_DURATION   | 4    | 表示缓存时长,单位为毫秒(ms)。 |
457
458## StateChangeReason<sup>9+</sup>
459
460表示播放或录制实例状态机切换原因的枚举,伴随state一起上报。
461
462**系统能力:** SystemCapability.Multimedia.Media.Core
463
464| 名称       | 值   | 说明                                                         |
465| ---------- | ---- | ------------------------------------------------------------ |
466| USER       | 1    | 表示用户行为造成的状态切换,由用户或客户端主动调用接口产生。 |
467| BACKGROUND | 2    | 表示后台系统行为造成的状态切换,比如应用未注册播控中心权限,退到后台时被系统强制暂停或停止。 |
468
469## AVPlayer<sup>9+</sup>
470
471播放管理类,用于管理和播放媒体资源。在调用AVPlayer的方法前,需要先通过[createAVPlayer()](#mediacreateavplayer9)构建一个AVPlayer实例。
472
473Audio/Video播放demo可参考:[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)、[视频播放开发指导](../../media/media/video-playback.md)。
474
475### 属性
476
477**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
478
479| 名称                                                | 类型                                                         | 可读 | 可写 | 说明                                                         |
480| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
481| url<sup>9+</sup>                                    | string                                                       | 是   | 是   | 媒体URL,只允许在**idle**状态下设置。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac)。<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>从API version 11开始不支持webm。 |
482| fdSrc<sup>9+</sup>                                  | [AVFileDescriptor](#avfiledescriptor9)                       | 是   | 是   | 媒体文件描述,只允许在**idle**状态下设置。<br/>使用场景:应用中的媒体资源被连续存储在同一个文件中。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac)。<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。 |
483| dataSrc<sup>10+</sup>                               | [AVDataSrcDescriptor](#avdatasrcdescriptor10)                | 是   | 是   | 流式媒体资源描述,只允许在**idle**状态下设置。<br/>使用场景:应用播放从远端下载到本地的文件,在应用未下载完整音视频资源时,提前播放已获取的资源文件。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac)。<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。 |
484| surfaceId<sup>9+</sup>                              | string                                                       | 是   | 是   | 视频窗口ID,默认无窗口,只允许在**initialized**状态下设置。<br/>使用场景:视频播放的窗口渲染,纯音频播放不用设置。<br/>**使用示例**:<br/>[通过Xcomponent创建surfaceId](../apis-arkui/arkui-ts/ts-basic-components-xcomponent.md#getxcomponentsurfaceid)。 |
485| loop<sup>9+</sup>                                   | boolean                                                      | 是   | 是   | 视频循环播放属性,默认'false',设置为'true'表示循环播放,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>直播场景不支持loop设置。 |
486| videoScaleType<sup>9+</sup>                         | [VideoScaleType](#videoscaletype9)                           | 是   | 是   | 视频缩放模式,默认VIDEO_SCALE_TYPE_FIT,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 |
487| audioInterruptMode<sup>9+</sup>                     | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9)       | 是   | 是   | 音频焦点模型,默认SHARE_MODE,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>在第一次调用[play()](#play9)之前设置, 以便此后中断模式生效。 |
488| audioRendererInfo<sup>10+</sup>                     | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8) | 是   | 是   | 设置音频渲染信息,默认值usage为STREAM_USAGE_MUSIC,rendererFlags为0。<br/>只允许在**initialized**状态下设置。<br/>在第一次调用[prepare()](#prepare9)之前设置,以便音频渲染器信息在之后生效。 |
489| audioEffectMode<sup>10+</sup>                       | [audio.AudioEffectMode](../apis-audio-kit/js-apis-audio.md#audioeffectmode10)  | 是   | 是   | 设置音频音效模式,默认值为EFFECT_DEFAULT,动态属性。audioRendererInfo的usage变动时会恢复为默认值,只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 |
490| state<sup>9+</sup>                                  | [AVPlayerState](#avplayerstate9)                             | 是   | 否   | 音视频播放的状态,全状态有效,可查询参数。                   |
491| currentTime<sup>9+</sup>                            | number                                                       | 是   | 否   | 视频的当前播放位置,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。 |
492| duration<sup>9+</sup> | number                                                       | 是   | 否   | 视频时长,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。 |
493| width<sup>9+</sup>                                  | number                                                       | 是   | 否   | 视频宽,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 |
494| height<sup>9+</sup>                                 | number                                                       | 是   | 否   | 视频高,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 |
495
496**说明:**
497
498将资源句柄(fd)传递给媒体播放器之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个媒体播放器。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致播放异常。
499
500### on('stateChange')<sup>9+</sup>
501
502on(type: 'stateChange', callback: (state: AVPlayerState, reason: StateChangeReason) => void): void
503
504监听播放状态机AVPlayerState切换的事件。
505
506**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
507
508**参数:**
509
510| 参数名   | 类型     | 必填 | 说明                                                         |
511| -------- | -------- | ---- | ------------------------------------------------------------ |
512| type     | string   | 是   | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 |
513| callback | function | 是   | 状态机切换事件回调方法:<br/>state: [AVPlayerState](#avplayerstate9),表示当前播放状态;<br/>reason: [StateChangeReason](#statechangereason9),表示当前播放状态的切换原因。 |
514
515**示例:**
516
517```ts
518avPlayer.on('stateChange', async (state: string, reason: media.StateChangeReason) => {
519  switch (state) {
520    case 'idle':
521      console.info('state idle called');
522      break;
523    case 'initialized':
524      console.info('initialized prepared called');
525      break;
526    case 'prepared':
527      console.info('state prepared called');
528      break;
529    case 'playing':
530      console.info('state playing called');
531      break;
532    case 'paused':
533      console.info('state paused called');
534      break;
535    case 'completed':
536      console.info('state completed called');
537      break;
538    case 'stopped':
539      console.info('state stopped called');
540      break;
541    case 'released':
542      console.info('state released called');
543      break;
544    case 'error':
545      console.info('state error called');
546      break;
547    default:
548      console.info('unknown state :' + state);
549      break;
550  }
551})
552```
553
554### off('stateChange')<sup>9+</sup>
555
556off(type: 'stateChange'): void
557
558取消监听播放状态机[AVPlayerState](#avplayerstate9)切换的事件。
559
560**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
561
562**参数:**
563
564| 参数名 | 类型   | 必填 | 说明                                                  |
565| ------ | ------ | ---- | ----------------------------------------------------- |
566| type   | string | 是   | 状态机切换事件回调类型,取消注册的事件:'stateChange' |
567
568**示例:**
569
570```ts
571avPlayer.off('stateChange')
572```
573
574### on('error')<sup>9+</sup>
575
576on(type: 'error', callback: ErrorCallback): void
577
578监听[AVPlayer](#avplayer9)的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVPlayerState](#avplayerstate9)也切至error状态,用户需要通过[reset()](#reset9)或者[release()](#release9)退出播放操作。
579
580**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
581
582**参数:**
583
584| 参数名   | 类型     | 必填 | 说明                                                         |
585| -------- | -------- | ---- | ------------------------------------------------------------ |
586| type     | string   | 是   | 错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。 |
587| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 错误事件回调方法:使用播放器的过程中发生错误,会提供错误码ID和错误信息。 |
588
589**错误码:**
590
591以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
592
593| 错误码ID | 错误信息              |
594| -------- | --------------------- |
595| 201      | Permission denied     |
596| 401      | The parameter check failed. |
597| 801      | Capability not supported. |
598| 5400101  | No Memory. Return by callback. |
599| 5400102  | Operation not allowed.|
600| 5400103  | I/O error             |
601| 5400104  | Time out              |
602| 5400105  | Service Died.         |
603| 5400106  | Unsupport Format.     |
604
605**示例:**
606
607```ts
608import { BusinessError } from '@ohos.base';
609
610avPlayer.on('error', (error: BusinessError) => {
611  console.info('error happened,and error message is :' + error.message)
612  console.info('error happened,and error code is :' + error.code)
613})
614```
615
616### off('error')<sup>9+</sup>
617
618off(type: 'error'): void
619
620取消监听播放的错误事件。
621
622**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
623
624**参数:**
625
626| 参数名 | 类型   | 必填 | 说明                                      |
627| ------ | ------ | ---- | ----------------------------------------- |
628| type   | string | 是   | 错误事件回调类型,取消注册的事件:'error' |
629
630**示例:**
631
632```ts
633avPlayer.off('error')
634```
635
636### prepare<sup>9+</sup>
637
638prepare(callback: AsyncCallback\<void>): void
639
640通过回调方式准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。
641
642**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
643
644**参数:**
645
646| 参数名   | 类型     | 必填 | 说明                 |
647| -------- | -------- | ---- | -------------------- |
648| callback | function | 是   | 准备播放的回调方法。 |
649
650**错误码:**
651
652以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
653
654| 错误码ID | 错误信息                                   |
655| -------- | ------------------------------------------ |
656| 5400102  | Operation not allowed. Return by callback. |
657| 5400106  | Unsupport format. Return by callback.      |
658
659**示例:**
660
661```ts
662import { BusinessError } from '@ohos.base';
663
664avPlayer.prepare((err: BusinessError) => {
665  if (err == null) {
666    console.info('prepare success');
667  } else {
668    console.error('prepare filed,error message is :' + err.message)
669  }
670})
671```
672
673### prepare<sup>9+</sup>
674
675prepare(): Promise\<void>
676
677通过Promise方式准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。
678
679**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
680
681**返回值:**
682
683| 类型           | 说明                      |
684| -------------- | ------------------------- |
685| Promise\<void> | 准备播放的Promise返回值。 |
686
687**错误码:**
688
689以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
690
691| 错误码ID | 错误信息                                  |
692| -------- | ----------------------------------------- |
693| 5400102  | Operation not allowed. Return by promise. |
694| 5400106  | Unsupport format. Return by promise.      |
695
696**示例:**
697
698```ts
699import { BusinessError } from '@ohos.base';
700
701avPlayer.prepare().then(() => {
702  console.info('prepare success');
703}, (err: BusinessError) => {
704  console.error('prepare filed,error message is :' + err.message)
705})
706```
707
708### play<sup>9+</sup>
709
710play(callback: AsyncCallback\<void>): void
711
712通过回调方式开始播放音视频资源,只能在prepared/paused/completed状态调用。
713
714**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
715
716**参数:**
717
718| 参数名   | 类型     | 必填 | 说明                 |
719| -------- | -------- | ---- | -------------------- |
720| callback | function | 是   | 开始播放的回调方法。 |
721
722**错误码:**
723
724以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
725
726| 错误码ID | 错误信息                                   |
727| -------- | ------------------------------------------ |
728| 5400102  | Operation not allowed. Return by callback. |
729
730**示例:**
731
732```ts
733import { BusinessError } from '@ohos.base';
734
735avPlayer.play((err: BusinessError) => {
736  if (err == null) {
737    console.info('play success');
738  } else {
739    console.error('play filed,error message is :' + err.message)
740  }
741})
742```
743
744### play<sup>9+</sup>
745
746play(): Promise\<void>
747
748通过Promise方式开始播放音视频资源,只能在prepared/paused/completed状态调用。
749
750**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
751
752**返回值:**
753
754| 类型           | 说明                      |
755| -------------- | ------------------------- |
756| Promise\<void> | 开始播放的Promise返回值。 |
757
758**错误码:**
759
760以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
761
762| 错误码ID | 错误信息                                  |
763| -------- | ----------------------------------------- |
764| 5400102  | Operation not allowed. Return by promise. |
765
766**示例:**
767
768```ts
769import { BusinessError } from '@ohos.base';
770
771avPlayer.play().then(() => {
772  console.info('play success');
773}, (err: BusinessError) => {
774  console.error('play filed,error message is :' + err.message)
775})
776```
777
778### pause<sup>9+</sup>
779
780pause(callback: AsyncCallback\<void>): void
781
782通过回调方式暂停播放音视频资源,只能在playing状态调用。
783
784**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
785
786**参数:**
787
788| 参数名   | 类型     | 必填 | 说明                 |
789| -------- | -------- | ---- | -------------------- |
790| callback | function | 是   | 暂停播放的回调方法。 |
791
792**错误码:**
793
794以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
795
796| 错误码ID | 错误信息                                   |
797| -------- | ------------------------------------------ |
798| 5400102  | Operation not allowed. Return by callback. |
799
800**示例:**
801
802```ts
803import { BusinessError } from '@ohos.base';
804
805avPlayer.pause((err: BusinessError) => {
806  if (err == null) {
807    console.info('pause success');
808  } else {
809    console.error('pause filed,error message is :' + err.message)
810  }
811})
812```
813
814### pause<sup>9+</sup>
815
816pause(): Promise\<void>
817
818通过Promise方式暂停播放音视频资源,只能在playing状态调用。
819
820**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
821
822**返回值:**
823
824| 类型           | 说明                      |
825| -------------- | ------------------------- |
826| Promise\<void> | 暂停播放的Promise返回值。 |
827
828**错误码:**
829
830以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
831
832| 错误码ID | 错误信息                                  |
833| -------- | ----------------------------------------- |
834| 5400102  | Operation not allowed. Return by promise. |
835
836**示例:**
837
838```ts
839import { BusinessError } from '@ohos.base';
840
841avPlayer.pause().then(() => {
842  console.info('pause success');
843}, (err: BusinessError) => {
844  console.error('pause filed,error message is :' + err.message)
845})
846```
847
848### stop<sup>9+</sup>
849
850stop(callback: AsyncCallback\<void>): void
851
852通过回调方式停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。
853
854**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
855
856**参数:**
857
858| 参数名   | 类型     | 必填 | 说明                 |
859| -------- | -------- | ---- | -------------------- |
860| callback | function | 是   | 停止播放的回调方法。 |
861
862**错误码:**
863
864以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
865
866| 错误码ID | 错误信息                                   |
867| -------- | ------------------------------------------ |
868| 5400102  | Operation not allowed. Return by callback. |
869
870**示例:**
871
872```ts
873import { BusinessError } from '@ohos.base';
874
875avPlayer.stop((err: BusinessError) => {
876  if (err == null) {
877    console.info('stop success');
878  } else {
879    console.error('stop filed,error message is :' + err.message)
880  }
881})
882```
883
884### stop<sup>9+</sup>
885
886stop(): Promise\<void>
887
888通过Promise方式停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。
889
890**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
891
892**返回值:**
893
894| 类型           | 说明                      |
895| -------------- | ------------------------- |
896| Promise\<void> | 停止播放的Promise返回值。 |
897
898**错误码:**
899
900以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
901
902| 错误码ID | 错误信息                                  |
903| -------- | ----------------------------------------- |
904| 5400102  | Operation not allowed. Return by promise. |
905
906**示例:**
907
908```ts
909import { BusinessError } from '@ohos.base';
910
911avPlayer.stop().then(() => {
912  console.info('stop success');
913}, (err: BusinessError) => {
914  console.error('stop filed,error message is :' + err.message)
915})
916```
917
918### reset<sup>9+</sup>
919
920reset(callback: AsyncCallback\<void>): void
921
922通过回调方式重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。
923
924**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
925
926**参数:**
927
928| 参数名   | 类型     | 必填 | 说明                 |
929| -------- | -------- | ---- | -------------------- |
930| callback | function | 是   | 重置播放的回调方法。 |
931
932**错误码:**
933
934以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
935
936| 错误码ID | 错误信息                                   |
937| -------- | ------------------------------------------ |
938| 5400102  | Operation not allowed. Return by callback. |
939
940**示例:**
941
942```ts
943import { BusinessError } from '@ohos.base';
944
945avPlayer.reset((err: BusinessError) => {
946  if (err == null) {
947    console.info('reset success');
948  } else {
949    console.error('reset filed,error message is :' + err.message)
950  }
951})
952```
953
954### reset<sup>9+</sup>
955
956reset(): Promise\<void>
957
958通过Promise方式重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。
959
960**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
961
962**返回值:**
963
964| 类型           | 说明                      |
965| -------------- | ------------------------- |
966| Promise\<void> | 重置播放的Promise返回值。 |
967
968**错误码:**
969
970以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
971
972| 错误码ID | 错误信息                                  |
973| -------- | ----------------------------------------- |
974| 5400102  | Operation not allowed. Return by promise. |
975
976**示例:**
977
978```ts
979import { BusinessError } from '@ohos.base';
980
981avPlayer.reset().then(() => {
982  console.info('reset success');
983}, (err: BusinessError) => {
984  console.error('reset filed,error message is :' + err.message)
985})
986```
987
988### release<sup>9+</sup>
989
990release(callback: AsyncCallback\<void>): void
991
992通过回调方式销毁播放资源,除released状态,都可以调用。
993
994**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
995
996**参数:**
997
998| 参数名   | 类型     | 必填 | 说明                 |
999| -------- | -------- | ---- | -------------------- |
1000| callback | function | 是   | 销毁播放的回调方法。 |
1001
1002**错误码:**
1003
1004以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1005
1006| 错误码ID | 错误信息                                   |
1007| -------- | ------------------------------------------ |
1008| 5400102  | Operation not allowed. Return by callback. |
1009
1010**示例:**
1011
1012```ts
1013import { BusinessError } from '@ohos.base';
1014
1015avPlayer.release((err: BusinessError) => {
1016  if (err == null) {
1017    console.info('release success');
1018  } else {
1019    console.error('release filed,error message is :' + err.message)
1020  }
1021})
1022```
1023
1024### release<sup>9+</sup>
1025
1026release(): Promise\<void>
1027
1028通过Promise方式销毁播放,除released状态,都可以调用。
1029
1030**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1031
1032**返回值:**
1033
1034| 类型           | 说明                      |
1035| -------------- | ------------------------- |
1036| Promise\<void> | 销毁播放的Promise返回值。 |
1037
1038**错误码:**
1039
1040以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1041
1042| 错误码ID | 错误信息                                  |
1043| -------- | ----------------------------------------- |
1044| 5400102  | Operation not allowed. Return by promise. |
1045
1046**示例:**
1047
1048```ts
1049import { BusinessError } from '@ohos.base';
1050
1051avPlayer.release().then(() => {
1052  console.info('release success');
1053}, (err: BusinessError) => {
1054  console.error('release filed,error message is :' + err.message)
1055})
1056```
1057
1058### getTrackDescription<sup>9+</sup>
1059
1060getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
1061
1062通过回调方式获取音视频轨道信息,可以在prepared/playing/paused状态调用。获取所有音视轨道信息,应在数据加载回调后调用。
1063
1064**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1065
1066**参数:**
1067
1068| 参数名   | 类型                                                         | 必填 | 说明                                         |
1069| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- |
1070| callback | AsyncCallback<Array<[MediaDescription](#mediadescription8)>> | 是   | 音视频轨道信息MediaDescription数组回调方法。 |
1071
1072**错误码:**
1073
1074以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1075
1076| 错误码ID | 错误信息                                   |
1077| -------- | ------------------------------------------ |
1078| 5400102  | Operation not allowed. Return by callback. |
1079
1080**示例:**
1081
1082```ts
1083import { BusinessError } from '@ohos.base';
1084
1085avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
1086  if ((arrList) != null) {
1087    console.info('getTrackDescription success');
1088  } else {
1089    console.error(`video getTrackDescription fail, error:${error}`);
1090  }
1091});
1092```
1093
1094### getTrackDescription<sup>9+</sup>
1095
1096getTrackDescription(): Promise\<Array\<MediaDescription>>
1097
1098通过Promise方式获取音视频轨道信息,可以在prepared/playing/paused状态调用。
1099
1100**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1101
1102**返回值:**
1103
1104| 类型                                                   | 说明                                              |
1105| ------------------------------------------------------ | ------------------------------------------------- |
1106| Promise<Array<[MediaDescription](#mediadescription8)>> | 音视频轨道信息MediaDescription数组Promise返回值。 |
1107
1108**错误码:**
1109
1110以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1111
1112| 错误码ID | 错误信息                                  |
1113| -------- | ----------------------------------------- |
1114| 5400102  | Operation not allowed. Return by promise. |
1115
1116**示例:**
1117
1118```ts
1119import { BusinessError } from '@ohos.base';
1120
1121avPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
1122  console.info('getTrackDescription success');
1123}).catch((error: BusinessError) => {
1124  console.error(`video catchCallback, error:${error}`);
1125});
1126```
1127
1128### setDecryptionConfig<sup>11+</sup>
1129
1130setDecryptionConfig(mediaKeySession: drm.MediaKeySession, secureVideoPath: boolean): void
1131
1132设置解密配置。当收到[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)时,需根据事件上报的信息创建相关配置并设置解密配置,否则无法播放。
1133
1134**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1135
1136**参数:**
1137
1138| 参数名   | 类型                                                         | 必填 | 说明                                         |
1139| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- |
1140| mediaKeySession | [drm.MediaKeySession](../apis-drm-kit/js-apis-drm.md#mediakeysession) | 是   | 解密会话 |
1141| secureVideoPath | boolean | 是 | 安全视频通路,true表示选择安全视频通路,false表示选择非安全视频通路 |
1142
1143**示例:**
1144
1145关于drm模块的示例具体可见[js-apis-drm.md](../apis-drm-kit/js-apis-drm.md)。
1146```ts
1147import drm from '@ohos.multimedia.drm'
1148
1149// 创建MediaKeySystem系统
1150let keySystem:drm.MediaKeySystem = drm.createMediaKeySystem('com.clearplay.drm');
1151// 创建MediaKeySession解密会话
1152let keySession:drm.MediaKeySession = keySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
1153// 安全视频通路标志
1154var secureVideoPath:boolean = false;
1155// 设置解密配置
1156avPlayer.setDecryptionConfig(keySession, secureVideoPath);
1157```
1158
1159### getMediaKeySystemInfos<sup>11+</sup>
1160
1161getMediaKeySystemInfos(): Array\<drm.MediaKeySystemInfo>
1162
1163获取当前播放的媒体资源的MediaKeySystemInfo。需要在[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)触发成功后才能调用。
1164
1165**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1166
1167**返回值:**
1168
1169| 类型                                                   | 说明                                              |
1170| ------------------------------------------------------ | ------------------------------------------------- |
1171|  Array<[drm.MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)> | MediaKeySystemInfo数组,MediaKeySystemInfo具有uuid和pssh两个属性。 |
1172
1173**示例:**
1174
1175```ts
1176import drm from '@ohos.multimedia.drm'
1177
1178const infos = avPlayer.getMediaKeySystemInfos();
1179console.info('GetMediaKeySystemInfos count: ' + infos.length);
1180for (var i = 0; i < infos.length; i++) {
1181  console.info('GetMediaKeySystemInfos uuid: ' + infos[i]["uuid"]);
1182  console.info('GetMediaKeySystemInfos pssh: ' + infos[i]["pssh"]);
1183}
1184```
1185
1186### seek<sup>9+</sup>
1187
1188seek(timeMs: number, mode?:SeekMode): void
1189
1190跳转到指定播放位置,只能在prepared/playing/paused/completed状态调用,可以通过[seekDone事件](#onseekdone9)确认是否生效。
1191注:直播场景不支持seek。
1192
1193**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1194
1195**参数:**
1196
1197| 参数名 | 类型                   | 必填 | 说明                                                         |
1198| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
1199| timeMs | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, [duration](#属性)]。 |
1200| mode   | [SeekMode](#seekmode8) | 否   | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式,**仅在视频资源播放时设置**。 |
1201
1202**示例:**
1203
1204```ts
1205let seekTime: number = 1000
1206avPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC)
1207```
1208
1209### on('seekDone')<sup>9+</sup>
1210
1211on(type: 'seekDone', callback: Callback\<number>): void
1212
1213监听seek生效的事件。
1214
1215**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1216
1217**参数:**
1218
1219| 参数名   | 类型     | 必填 | 说明                                                         |
1220| -------- | -------- | ---- | ------------------------------------------------------------ |
1221| type     | string   | 是   | seek生效的事件回调类型,支持的事件:'seekDone',每次调用seek后都会回调此事件。 |
1222| callback | Callback\<number> | 是   | seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。 |
1223
1224**示例:**
1225
1226```ts
1227avPlayer.on('seekDone', (seekDoneTime:number) => {
1228  console.info('seekDone success,and seek time is:' + seekDoneTime)
1229})
1230```
1231
1232### off('seekDone')<sup>9+</sup>
1233
1234off(type: 'seekDone'): void
1235
1236取消监听seek生效的事件。
1237
1238**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1239
1240**参数:**
1241
1242| 参数名 | 类型   | 必填 | 说明                                                 |
1243| ------ | ------ | ---- | ---------------------------------------------------- |
1244| type   | string | 是   | seek生效的事件回调类型,取消注册的事件:'seekDone'。 |
1245
1246**示例:**
1247
1248```ts
1249avPlayer.off('seekDone')
1250```
1251
1252### setSpeed<sup>9+</sup>
1253
1254setSpeed(speed: PlaybackSpeed): void
1255
1256设置倍速模式,只能在prepared/playing/paused/completed状态调用,可以通过[speedDone事件](#onspeeddone9)确认是否生效。
1257注:直播场景不支持setSpeed。
1258
1259**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1260
1261**参数:**
1262
1263| 参数名 | 类型                             | 必填 | 说明               |
1264| ------ | -------------------------------- | ---- | ------------------ |
1265| speed  | [PlaybackSpeed](#playbackspeed8) | 是   | 指定播放倍速模式。 |
1266
1267**示例:**
1268
1269```ts
1270avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X)
1271```
1272
1273### on('speedDone')<sup>9+</sup>
1274
1275on(type: 'speedDone', callback: Callback\<number>): void
1276
1277监听setSpeed生效的事件
1278
1279**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1280
1281**参数:**
1282
1283| 参数名   | 类型     | 必填 | 说明                                                         |
1284| -------- | -------- | ---- | ------------------------------------------------------------ |
1285| type     | string   | 是   | setSpeed生效的事件回调类型,支持的事件:'speedDone',每次调用setSpeed后都会回调此事件。 |
1286| callback | Callback\<number> | 是   | setSpeed生效的事件回调方法,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。 |
1287
1288**示例:**
1289
1290```ts
1291avPlayer.on('speedDone', (speed:number) => {
1292  console.info('speedDone success,and speed value is:' + speed)
1293})
1294```
1295
1296### off('speedDone')<sup>9+</sup>
1297
1298off(type: 'speedDone'): void
1299
1300取消监听setSpeed生效的事件。
1301
1302**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1303
1304**参数:**
1305
1306| 参数名 | 类型   | 必填 | 说明                                                      |
1307| ------ | ------ | ---- | --------------------------------------------------------- |
1308| type   | string | 是   | setSpeed生效的事件回调类型,取消注册的事件:'speedDone'。 |
1309
1310**示例:**
1311
1312```ts
1313avPlayer.off('speedDone')
1314```
1315
1316### setBitrate<sup>9+</sup>
1317
1318setBitrate(bitrate: number): void
1319
1320选择要播放的指定比特率,仅对**HLS协议网络流**有效,默认情况下,播放器会根据网络连接速度选择合适的比特率,只能在prepared/playing/paused/completed状态调用,可以通过[bitrateDone](#onbitratedone9)事件确认是否生效。
1321
1322**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1323
1324**参数:**
1325
1326| 参数名  | 类型   | 必填 | 说明                                                         |
1327| ------- | ------ | ---- | ------------------------------------------------------------ |
1328| bitrate | number | 是   | 指定比特率,可以通过[availableBitrates](#onavailablebitrates9)事件获得当前HLS协议流可用的比特率,如果用户指定的比特率不在此列表中,则播放器将从可用比特率列表中选择最小和最接近的比特率。如果通过availableBitrates事件获得的比特率列表长度为0,则不支持指定比特率,也不会产生bitrateDone回调。 |
1329
1330**示例:**
1331
1332```ts
1333let bitrate: number = 96000
1334avPlayer.setBitrate(bitrate)
1335```
1336
1337### on('bitrateDone')<sup>9+</sup>
1338
1339on(type: 'bitrateDone', callback: Callback\<number>): void
1340
1341监听setBitrate生效的事件。
1342
1343**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1344
1345**参数:**
1346
1347| 参数名   | 类型     | 必填 | 说明                                                         |
1348| -------- | -------- | ---- | ------------------------------------------------------------ |
1349| type     | string   | 是   | setBitrate生效的事件回调类型,支持的事件:'bitrateDone',每次调用setBitrate后都会回调此事件。 |
1350| callback | function | 是   | setBitrate生效的事件回调方法,上报生效的比特率。             |
1351
1352**示例:**
1353
1354```ts
1355avPlayer.on('bitrateDone', (bitrate:number) => {
1356  console.info('bitrateDone success,and bitrate value is:' + bitrate)
1357})
1358```
1359
1360### off('bitrateDone')<sup>9+</sup>
1361
1362off(type: 'bitrateDone'): void
1363
1364取消监听setBitrate生效的事件。
1365
1366**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1367
1368**参数:**
1369
1370| 参数名 | 类型   | 必填 | 说明                                                         |
1371| ------ | ------ | ---- | ------------------------------------------------------------ |
1372| type   | string | 是   | setBitrate生效的事件回调类型,取消注册的事件:'bitrateDone'。 |
1373
1374**示例:**
1375
1376```ts
1377avPlayer.off('bitrateDone')
1378```
1379
1380### on('availableBitrates')<sup>9+</sup>
1381
1382on(type: 'availableBitrates', callback: (bitrates: Array\<number>) => void): void
1383
1384监听HLS协议流可用的比特率列表,只会在切换prepared状态后上报。
1385
1386**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1387
1388**参数:**
1389
1390| 参数名   | 类型     | 必填 | 说明                                                         |
1391| -------- | -------- | ---- | ------------------------------------------------------------ |
1392| type     | string   | 是   | HLS协议可用比特率上报事件回调类型,支持的事件:'availableBitrates',只会在prepared之后上报一次。 |
1393| callback | function | 是   | HLS协议可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。 |
1394
1395**示例:**
1396
1397```ts
1398avPlayer.on('availableBitrates', (bitrates: Array<number>) => {
1399  console.info('availableBitrates success,and availableBitrates length is:' + bitrates.length)
1400})
1401```
1402
1403### off('availableBitrates')<sup>9+</sup>
1404
1405off(type: 'availableBitrates'): void
1406
1407取消监听HLS协议流可用的比特率列表,调用[prepare](#prepare9)后,上报此事件。
1408
1409**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1410
1411**参数:**
1412
1413| 参数名 | 类型   | 必填 | 说明                                                         |
1414| ------ | ------ | ---- | ------------------------------------------------------------ |
1415| type   | string | 是   | HLS协议可用比特率上报事件回调类型,取消注册的事件:'availableBitrates'。 |
1416
1417**示例:**
1418
1419```ts
1420avPlayer.off('availableBitrates')
1421```
1422
1423
1424### on('mediaKeySystemInfoUpdate')<sup>11+</sup>
1425
1426on(type: 'mediaKeySystemInfoUpdate', callback: (mediaKeySystemInfo: Array\<drm.MediaKeySystemInfo>) => void): void
1427
1428监听mediaKeySystemInfoUpdate事件。
1429
1430**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1431
1432**参数:**
1433
1434| 参数名   | 类型     | 必填 | 说明                                                         |
1435| -------- | -------- | ---- | ------------------------------------------------------------ |
1436| type     | string   | 是   | 版权保护信息更新上报事件回调类型,支持的事件:'mediaKeySystemInfoUpdate',当播放内容的版权保护信息更新时上报事件。 |
1437| callback | function | 是   | 版权保护信息更新上报事件回调方法,上报MediaKeySystemInfo数组,具体可见[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)。 |
1438
1439**示例:**
1440
1441```ts
1442
1443import drm from './@ohos.multimedia.drm';
1444
1445avPlayer.on('mediaKeySystemInfoUpdate', (mediaKeySystemInfo: Array<drm.MediaKeySystemInfo>) => {
1446    for (var i = 0; i < mediaKeySystemInfo.length; i++) {
1447      console.info('mediaKeySystemInfoUpdate happened uuid: ' + mediaKeySystemInfo[i]["uuid"]);
1448      console.info('mediaKeySystemInfoUpdate happened pssh: ' + mediaKeySystemInfo[i]["pssh"]);
1449    }
1450})
1451```
1452
1453### off('mediaKeySystemInfoUpdate')<sup>11+</sup>
1454
1455off(type: 'mediaKeySystemInfoUpdate', callback?: (mediaKeySystemInfo: Array<drm.MediaKeySystemInfo>) => void): void;
1456
1457取消监听mediaKeySystemInfoUpdate事件。
1458
1459**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1460
1461**参数:**
1462
1463| 参数名 | 类型   | 必填 | 说明                                                         |
1464| ------ | ------ | ---- | ------------------------------------------------------------ |
1465| type   | string | 是   | 版权保护信息更新上报事件回调类型,取消注册的事件:'mediaKeySystemInfoUpdate'。 |
1466| callback | function | 否   | 版权保护信息更新上报事件回调方法,上报版权保护信息数组,具体可见[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)。如填写该参数,则仅取消注册此回调方法,否则取消注册mediaKeySystemInfoUpdate事件的所有回调方法。 |
1467
1468**示例:**
1469
1470```ts
1471avPlayer.off('mediaKeySystemInfoUpdate')
1472```
1473
1474### setVolume<sup>9+</sup>
1475
1476setVolume(volume: number): void
1477
1478设置媒体播放音量,只能在prepared/playing/paused/completed状态调用,可以通过[volumeChange事件](#onvolumechange9)确认是否生效。
1479
1480**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1481
1482**参数:**
1483
1484| 参数名 | 类型   | 必填 | 说明                                                         |
1485| ------ | ------ | ---- | ------------------------------------------------------------ |
1486| volume | number | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
1487
1488**示例:**
1489
1490```ts
1491let volume: number = 1.0
1492avPlayer.setVolume(volume)
1493```
1494
1495### on('volumeChange')<sup>9+</sup>
1496
1497on(type: 'volumeChange', callback: Callback\<number>): void
1498
1499监听setVolume生效的事件。
1500
1501**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1502
1503**参数:**
1504
1505| 参数名   | 类型     | 必填 | 说明                                                         |
1506| -------- | -------- | ---- | ------------------------------------------------------------ |
1507| type     | string   | 是   | setVolume生效的事件回调类型,支持的事件:'volumeChange',每次调用setVolume后都会回调此事件。 |
1508| callback | function | 是   | setVolume生效的事件回调方法,上报生效的媒体音量。            |
1509
1510**示例:**
1511
1512```ts
1513avPlayer.on('volumeChange', (vol: number) => {
1514  console.info('volumeChange success,and new volume is :' + vol)
1515})
1516```
1517
1518### off('volumeChange')<sup>9+</sup>
1519
1520off(type: 'volumeChange'): void
1521
1522取消监听setVolume生效的事件。
1523
1524**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1525
1526**参数:**
1527
1528| 参数名 | 类型   | 必填 | 说明                                                         |
1529| ------ | ------ | ---- | ------------------------------------------------------------ |
1530| type   | string | 是   | setVolume生效的事件回调类型,取消注册的事件:'volumeChange'。 |
1531
1532**示例:**
1533
1534```ts
1535avPlayer.off('volumeChange')
1536```
1537
1538### on('endOfStream')<sup>9+</sup>
1539
1540on(type: 'endOfStream', callback: Callback\<void>): void
1541
1542监听资源播放至结尾的事件;如果用户设置[loop](#属性)=true,播放会跳转至开头重播;如果用户没有设置loop,会通过[stateChange](#onstatechange9)上报completed状态。
1543
1544**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1545
1546**参数:**
1547
1548| 参数名   | 类型     | 必填 | 说明                                                         |
1549| -------- | -------- | ---- | ------------------------------------------------------------ |
1550| type     | string   | 是   | 资源播放至结尾的事件回调类型,支持的事件:'endOfStream',当播放至结尾时会上报此事件。 |
1551| callback | Callback\<void> | 是   | 资源播放至结尾的事件回调方法。                               |
1552
1553**示例:**
1554
1555```ts
1556avPlayer.on('endOfStream', () => {
1557  console.info('endOfStream success')
1558})
1559```
1560
1561### off('endOfStream')<sup>9+</sup>
1562
1563off(type: 'endOfStream'): void
1564
1565取消监听资源播放至结尾的事件。
1566
1567**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1568
1569**参数:**
1570
1571| 参数名 | 类型   | 必填 | 说明                                                         |
1572| ------ | ------ | ---- | ------------------------------------------------------------ |
1573| type   | string | 是   | 资源播放至结尾的事件回调类型,取消注册的事件:'endOfStream'。 |
1574
1575**示例:**
1576
1577```ts
1578avPlayer.off('endOfStream')
1579```
1580
1581### on('timeUpdate')<sup>9+</sup>
1582
1583on(type: 'timeUpdate', callback: Callback\<number>): void
1584
1585监听资源播放当前时间,单位为毫秒(ms),用于刷新进度条当前位置,默认间隔100ms时间上报,因用户操作(seek)产生的时间变化会立刻上报。
1586注:直播场景不支持timeUpdate上报。
1587
1588**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1589
1590**参数:**
1591
1592| 参数名   | 类型     | 必填 | 说明                                           |
1593| -------- | -------- | ---- | ---------------------------------------------- |
1594| type     | string   | 是   | 时间更新的回调类型,支持的事件:'timeUpdate'。 |
1595| callback | function | 是   | 当前时间。                                     |
1596
1597**示例:**
1598
1599```ts
1600avPlayer.on('timeUpdate', (time:number) => {
1601  console.info('timeUpdate success,and new time is :' + time)
1602})
1603```
1604
1605### off('timeUpdate')<sup>9+</sup>
1606
1607off(type: 'timeUpdate'): void
1608
1609取消监听资源播放当前时间。
1610
1611**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1612
1613**参数:**
1614
1615| 参数名 | 类型   | 必填 | 说明                                               |
1616| ------ | ------ | ---- | -------------------------------------------------- |
1617| type   | string | 是   | 时间更新的回调类型,取消注册的事件:'timeUpdate'。 |
1618
1619**示例:**
1620
1621```ts
1622avPlayer.off('timeUpdate')
1623```
1624
1625### on('durationUpdate')<sup>9+</sup>
1626
1627
1628on(type: 'durationUpdate', callback: Callback\<number>): void
1629
1630监听资源播放资源的时长,单位为毫秒(ms),用于刷新进度条长度,默认只在prepared上报一次,同时允许一些特殊码流刷新多次时长。
1631注:直播场景不支持durationUpdate上报。
1632
1633**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1634
1635**参数:**
1636
1637| 参数名   | 类型     | 必填 | 说明                                               |
1638| -------- | -------- | ---- | -------------------------------------------------- |
1639| type     | string   | 是   | 时长更新的回调类型,支持的事件:'durationUpdate'。 |
1640| callback | function | 是   | 资源时长。                                         |
1641
1642**示例:**
1643
1644```ts
1645avPlayer.on('durationUpdate', (duration: number) => {
1646  console.info('durationUpdate success,new duration is :' + duration)
1647})
1648```
1649
1650### off('durationUpdate')<sup>9+</sup>
1651
1652off(type: 'durationUpdate'): void
1653
1654取消监听资源播放资源的时长。
1655
1656**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1657
1658**参数:**
1659
1660| 参数名 | 类型   | 必填 | 说明                                                   |
1661| ------ | ------ | ---- | ------------------------------------------------------ |
1662| type   | string | 是   | 时长更新的回调类型,取消注册的事件:'durationUpdate'。 |
1663
1664**示例:**
1665
1666```ts
1667avPlayer.off('durationUpdate')
1668```
1669
1670### on('bufferingUpdate')<sup>9+</sup>
1671
1672on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
1673
1674订阅音视频缓存更新事件,仅网络播放支持该订阅事件。
1675
1676**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1677
1678**参数:**
1679
1680| 参数名   | 类型     | 必填 | 说明                                                         |
1681| -------- | -------- | ---- | ------------------------------------------------------------ |
1682| type     | string   | 是   | 播放缓存事件回调类型,支持的事件:'bufferingUpdate'。        |
1683| callback | function | 是   | 播放缓存事件回调方法。<br/>[BufferingInfoType](#bufferinginfotype8)为BUFFERING_PERCENT或CACHED_DURATION时,value值有效,否则固定为0。 |
1684
1685**示例:**
1686
1687```ts
1688avPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
1689  console.info('bufferingUpdate success,and infoType value is:' + infoType + ', value is :' + value)
1690})
1691```
1692
1693### off('bufferingUpdate')<sup>9+</sup>
1694
1695off(type: 'bufferingUpdate'): void
1696
1697取消监听音视频缓存更新事件。
1698
1699**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1700
1701**参数:**
1702
1703| 参数名 | 类型   | 必填 | 说明                                                      |
1704| ------ | ------ | ---- | --------------------------------------------------------- |
1705| type   | string | 是   | 播放缓存事件回调类型,取消注册的事件:'bufferingUpdate'。 |
1706
1707**示例:**
1708
1709```ts
1710avPlayer.off('bufferingUpdate')
1711```
1712
1713### on('startRenderFrame')<sup>9+</sup>
1714
1715on(type: 'startRenderFrame', callback: Callback\<void>): void
1716
1717订阅视频播放开始首帧渲染的更新事件,仅视频播放支持该订阅事件,该事件仅代表播放服务将第一帧画面送显示模块,实际效果依赖显示服务渲染性能。
1718
1719**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1720
1721**参数:**
1722
1723| 参数名   | 类型     | 必填 | 说明                                                         |
1724| -------- | -------- | ---- | ------------------------------------------------------------ |
1725| type     | string   | 是   | 视频播放开始首帧渲染事件回调类型,支持的事件:'startRenderFrame'。 |
1726| callback | Callback\<void> | 是   | 视频播放开始首帧渲染事件回调方法。                           |
1727
1728**示例:**
1729
1730```ts
1731avPlayer.on('startRenderFrame', () => {
1732  console.info('startRenderFrame success')
1733})
1734```
1735
1736### off('startRenderFrame')<sup>9+</sup>
1737
1738off(type: 'startRenderFrame'): void
1739
1740取消监听视频播放开始首帧渲染的更新事件。
1741
1742**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1743
1744**参数:**
1745
1746| 参数名 | 类型   | 必填 | 说明                                                         |
1747| ------ | ------ | ---- | ------------------------------------------------------------ |
1748| type   | string | 是   | 视频播放开始首帧渲染事件回调类型,取消注册的事件:'startRenderFrame'。 |
1749
1750**示例:**
1751
1752```ts
1753avPlayer.off('startRenderFrame')
1754```
1755
1756### on('videoSizeChange')<sup>9+</sup>
1757
1758on(type: 'videoSizeChange', callback: (width: number, height: number) => void): void
1759
1760监听视频播放宽高变化事件,仅视频播放支持该订阅事件,默认只在prepared状态上报一次,但HLS协议码流会在切换分辨率时上报;
1761
1762**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1763
1764**参数:**
1765
1766| 参数名   | 类型     | 必填 | 说明                                                         |
1767| -------- | -------- | ---- | ------------------------------------------------------------ |
1768| type     | string   | 是   | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChange'。 |
1769| callback | function | 是   | 视频播放宽高变化事件回调方法,width表示宽,height表示高。    |
1770
1771**示例:**
1772
1773```ts
1774avPlayer.on('videoSizeChange', (width: number, height: number) => {
1775  console.info('videoSizeChange success,and width is:' + width + ', height is :' + height)
1776})
1777```
1778
1779### off('videoSizeChange')<sup>9+</sup>
1780
1781off(type: 'videoSizeChange'): void
1782
1783取消监听视频播放宽高变化事件。
1784
1785**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1786
1787**参数:**
1788
1789| 参数名 | 类型   | 必填 | 说明                                                         |
1790| ------ | ------ | ---- | ------------------------------------------------------------ |
1791| type   | string | 是   | 视频播放宽高变化事件回调类型,取消注册的事件:'videoSizeChange'。 |
1792
1793**示例:**
1794
1795```ts
1796avPlayer.off('videoSizeChange')
1797```
1798
1799### on('audioInterrupt')<sup>9+</sup>
1800
1801on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
1802
1803监听音频焦点变化事件,多个音视频资源同时播放时,会根据音频焦点模型[audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9)触发此事件。
1804
1805**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1806
1807**参数:**
1808
1809| 参数名   | 类型                                                         | 必填 | 说明                                                     |
1810| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
1811| type     | string                                                       | 是   | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 |
1812| callback | [audio.InterruptEvent<sup>9+</sup>](../apis-audio-kit/js-apis-audio.md#interruptevent9) | 是   | 音频焦点变化事件回调方法。                               |
1813
1814**示例:**
1815
1816```ts
1817import audio from '@ohos.multimedia.audio';
1818
1819avPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
1820  console.info('audioInterrupt success,and InterruptEvent info is:' + info)
1821})
1822```
1823
1824### off('audioInterrupt')<sup>9+</sup>
1825
1826off(type: 'audioInterrupt'): void
1827
1828取消监听音频焦点变化事件。
1829
1830**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1831
1832**参数:**
1833
1834| 参数名 | 类型   | 必填 | 说明                                                         |
1835| ------ | ------ | ---- | ------------------------------------------------------------ |
1836| type   | string | 是   | 音频焦点变化事件回调类型,取消注册的事件:'audioInterrupt'。 |
1837
1838**示例:**
1839
1840```ts
1841avPlayer.off('audioInterrupt')
1842```
1843
1844### on('audioOutputDeviceChangeWithInfo') <sup>11+</sup>
1845
1846on(type: 'audioOutputDeviceChangeWithInfo', callback: Callback\<audio.AudioStreamDeviceChangeInfo>): void
1847
1848订阅监听音频流输出设备变化及原因,使用callback方式返回结果。
1849
1850**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1851
1852**参数:**
1853
1854| 参数名   | 类型                       | 必填 | 说明                                        |
1855| :------- | :------------------------- | :--- | :------------------------------------------ |
1856| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChangeWithInfo'。 |
1857| callback | Callback\<[AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 是   | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 |
1858
1859**错误码:**
1860
1861| 错误码ID | 错误信息                                   |
1862| -------- | ------------------------------------------ |
1863| 401      | Parameter error. Return by callback.       |
1864
1865**示例:**
1866
1867```ts
1868import audio from '@ohos.multimedia.audio';
1869
1870avPlayer.on('audioOutputDeviceChangeWithInfo', (data: audio.AudioStreamDeviceChangeInfo) => {
1871  console.info(`${JSON.stringify(data)}`);
1872});
1873```
1874
1875### off('audioOutputDeviceChangeWithInfo') <sup>11+</sup>
1876
1877off(type: 'audioOutputDeviceChangeWithInfo', callback?: Callback\<audio.AudioStreamDeviceChangeInfo>): void
1878
1879取消订阅监听音频流输出设备变化及原因,使用callback方式返回结果。
1880
1881**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1882
1883**参数:**
1884
1885| 参数名   | 类型                       | 必填 | 说明                                        |
1886| :------- | :------------------------- | :--- | :------------------------------------------ |
1887| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
1888| callback | Callback\<[AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 否   | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 |
1889
1890**错误码:**
1891
1892| 错误码ID | 错误信息                                   |
1893| -------- | ------------------------------------------ |
1894| 401      | Parameter error. Return by callback.       |
1895
1896**示例:**
1897
1898```ts
1899avPlayer.off('audioOutputDeviceChangeWithInfo');
1900```
1901
1902## AVPlayerState<sup>9+</sup>
1903
1904[AVPlayer](#avplayer9)的状态机,可通过state属性主动获取当前状态,也可通过监听[stateChange](#onstatechange9)事件上报当前状态,状态机之间的切换规则,可参考[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)。
1905
1906**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1907
1908|              名称               |  类型  | 说明                                                         |
1909| :-----------------------------: | :----: | :----------------------------------------------------------- |
1910|              idle               | string | 闲置状态,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属性会被重置,其他用户设置的属性将被保留。 |
1911|           initialized           | string | 资源初始化,在Idle 状态设置 url<sup>9+</sup> 或 fdSrc<sup>9+</sup>属性,AVPlayer会进入initialized状态,此时可以配置窗口、音频等静态属性。 |
1912|            prepared             | string | 已准备状态,在initialized状态调用[prepare()](#prepare9)方法,AVPlayer会进入prepared状态,此时播放引擎的资源已准备就绪。 |
1913|             playing             | string | 正在播放状态,在prepared/paused/completed状态调用[play()](#play9)方法,AVPlayer会进入playing状态。 |
1914|             paused              | string | 暂停状态,在playing状态调用pause方法,AVPlayer会进入paused状态。 |
1915|            completed            | string | 播放至结尾状态,当媒体资源播放至结尾时,如果用户未设置循环播放(loop = true),AVPlayer会进入completed状态,此时调用[play()](#play9)会进入playing状态和重播,调用[stop()](#stop9)会进入stopped状态。 |
1916|             stopped             | string | 停止状态,在prepared/playing/paused/completed状态调用[stop()](#stop9)方法,AVPlayer会进入stopped状态,此时播放引擎只会保留属性,但会释放内存资源,可以调用[prepare()](#prepare9)重新准备,也可以调用[reset()](#reset9)重置,或者调用[release()](#release9)彻底销毁。 |
1917|            released             | string | 销毁状态,销毁与当前AVPlayer关联的播放引擎,无法再进行状态转换,调用[release()](#release9)方法后,会进入released状态,结束流程。 |
1918| error | string | 错误状态,当**播放引擎**发生**不可逆的错误**(详见[媒体错误码](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:播放过程发现码流问题,导致容器、解码短暂异常,不影响连续播放和播控操作的,不需要客户端设计容错机制。 |
1919
1920## AVFileDescriptor<sup>9+</sup>
1921
1922音视频文件资源描述,一种特殊资源的播放方式,使用场景:应用中的音频资源被连续存储在同一个文件中,需要根据偏移量和长度进行播放。
1923
1924**系统能力:** SystemCapability.Multimedia.Media.Core
1925
1926| 名称   | 类型   | 必填 | 说明                                                         |
1927| ------ | ------ | ---- | ------------------------------------------------------------ |
1928| fd     | number | 是   | 资源句柄,通过[resourceManager.getRawFd](../apis-localization-kit/js-apis-resource-manager.md#getrawfd9)获取。     |
1929| offset | number | 否   | 资源偏移量,默认值为0,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 |
1930| length | number | 否   | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 |
1931
1932## AVDataSrcDescriptor<sup>10+</sup>
1933
1934音视频文件资源描述,用于DataSource播放方式,使用场景:应用在未获取完整音视频资源时,允许用户创建播放实例并开始播放,达到提前播放的目的。
1935
1936**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1937
1938| 名称   | 类型   | 必填 | 说明                                                         |
1939| ------ | ------ | ---- | ------------------------------------------------------------ |
1940| fileSize     | number | 是   | 待播放文件大小(字节),-1代表大小未知。如果fileSize设置为-1, 播放模式类似于直播,不能进行seek及setSpeed操作,不能设置loop属性,因此不能重新播放。 |
1941| callback | function | 是   | 用户设置的回调函数,用于填写数据。<br>- 函数列式:callback: (buffer: ArrayBuffer, length: number, pos?:number) => number;<br>- buffer,ArrayBuffer类型,表示被填写的内存,必选。<br>- length,number类型,表示被填写内存的最大长度,必选。<br>- pos,number类型,表示填写的数据在资源文件中的位置,可选,当fileSize设置为-1时,该参数禁止被使用。 <br>- 返回值,number类型,返回要填充数据的长度。 |
1942
1943
1944## SeekMode<sup>8+</sup>
1945
1946视频播放的Seek模式枚举,可通过seek方法作为参数传递下去。
1947
1948**系统能力:** SystemCapability.Multimedia.Media.Core
1949
1950| 名称           | 值   | 说明                                                         |
1951| -------------- | ---- | ------------------------------------------------------------ |
1952| SEEK_NEXT_SYNC | 0    | 表示跳转到指定时间点的下一个关键帧,建议向后快进的时候用这个枚举值。 |
1953| SEEK_PREV_SYNC | 1    | 表示跳转到指定时间点的上一个关键帧,建议向前快进的时候用这个枚举值。 |
1954
1955## PlaybackSpeed<sup>8+</sup>
1956
1957视频播放的倍速枚举,可通过setSpeed方法作为参数传递下去。
1958
1959**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
1960
1961| 名称                 | 值   | 说明                           |
1962| -------------------- | ---- | ------------------------------ |
1963| SPEED_FORWARD_0_75_X | 0    | 表示视频播放正常播速的0.75倍。 |
1964| SPEED_FORWARD_1_00_X | 1    | 表示视频播放正常播速。         |
1965| SPEED_FORWARD_1_25_X | 2    | 表示视频播放正常播速的1.25倍。 |
1966| SPEED_FORWARD_1_75_X | 3    | 表示视频播放正常播速的1.75倍。 |
1967| SPEED_FORWARD_2_00_X | 4    | 表示视频播放正常播速的2.00倍。 |
1968
1969## VideoScaleType<sup>9+</sup>
1970
1971枚举,视频缩放模式。
1972
1973**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
1974
1975| 名称                      | 值   | 说明                                             |
1976| ------------------------- | ---- | ------------------------------------------------ |
1977| VIDEO_SCALE_TYPE_FIT      | 0    | 默认比例类型,视频拉伸至与窗口等大。              |
1978| VIDEO_SCALE_TYPE_FIT_CROP | 1    | 保持视频宽高比拉伸至填满窗口,内容可能会有裁剪。 |
1979
1980## MediaDescription<sup>8+</sup>
1981
1982通过key-value方式获取媒体信息。
1983
1984**系统能力:** SystemCapability.Multimedia.Media.Core
1985
1986| 名称          | 类型   | 必填 | 说明                                                         |
1987| ------------- | ------ | ---- | ------------------------------------------------------------ |
1988| [key: string] | Object | 是   | 该键值对支持的key取值范围,请参考[MediaDescriptionKey](#mediadescriptionkey8);每个key值的Object类型和范围,请参考[MediaDescriptionKey](#mediadescriptionkey8)对应Key值的说明 |
1989
1990**示例:**
1991
1992```ts
1993import { BusinessError } from '@ohos.base';
1994import media from '@ohos.multimedia.media';
1995
1996function printfItemDescription(obj: media.MediaDescription, key: string) {
1997  let property: Object = obj[key];
1998  console.info('audio key is ' + key); // 通过key值获取对应的value。key值具体可见[MediaDescriptionKey]
1999  console.info('audio value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[MediaDescriptionKey]
2000}
2001
2002let avPlayer: media.AVPlayer | undefined = undefined;
2003media.createAVPlayer((err: BusinessError, player: media.AVPlayer) => {
2004  if(player != null) {
2005    avPlayer = player;
2006    console.info(`createAVPlayer success`);
2007    avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
2008      if (arrList != null) {
2009        for (let i = 0; i < arrList.length; i++) {
2010          printfItemDescription(arrList[i], media.MediaDescriptionKey.MD_KEY_TRACK_TYPE);  //打印出每条轨道MD_KEY_TRACK_TYPE的值
2011        }
2012      } else {
2013        console.error(`audio getTrackDescription fail, error:${error}`);
2014      }
2015    });
2016  } else {
2017    console.error(`createAVPlayer fail, error message:${err.message}`);
2018  }
2019});
2020```
2021
2022## AVRecorder<sup>9+</sup>
2023
2024音视频录制管理类,用于音视频媒体录制。在调用AVRecorder的方法前,需要先通过[createAVRecorder()](#mediacreateavrecorder9)构建一个AVRecorder实例。
2025
2026音视频录制demo可参考:[音频录制开发指导](../../media/media/using-avrecorder-for-recording.md)、[视频录制开发指导](../../media/media/video-recording.md)。
2027
2028> **说明:**
2029>
2030> 使用相机进行视频录制时,需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。
2031
2032### 属性
2033
2034**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2035
2036| 名称    | 类型                                 | 可读 | 可写 | 说明               |
2037| ------- | ------------------------------------ | ---- | ---- | ------------------ |
2038| state9+ | [AVRecorderState](#avrecorderstate9) | 是   | 否   | 音视频录制的状态。 |
2039
2040### prepare<sup>9+</sup>
2041
2042prepare(config: AVRecorderConfig, callback: AsyncCallback\<void>): void
2043
2044异步方式进行音视频录制的参数设置。通过注册回调函数获取返回值。
2045
2046**需要权限:** ohos.permission.MICROPHONE
2047
2048不涉及音频录制时,可以不需要获取ohos.permission.MICROPHONE权限。
2049
2050使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。
2051
2052**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2053
2054**参数:**
2055
2056| 参数名   | 类型                                   | 必填 | 说明                                  |
2057| -------- | -------------------------------------- | ---- | ------------------------------------- |
2058| config   | [AVRecorderConfig](#avrecorderconfig9) | 是   | 配置音视频录制的相关参数。            |
2059| callback | AsyncCallback\<void>                   | 是   | 异步音视频录制prepare方法的回调方法。 |
2060
2061**错误码:**
2062
2063以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2064
2065| 错误码ID | 错误信息                                |
2066| -------- | --------------------------------------- |
2067| 201      | Permission denied. Return by callback.  |
2068| 401      | Parameter error. Return by callback.    |
2069| 5400102  | Operate not permit. Return by callback. |
2070| 5400105  | Service died. Return by callback.       |
2071
2072**示例:**
2073
2074```ts
2075import { BusinessError } from '@ohos.base';
2076
2077// 配置参数以实际硬件设备支持的范围为准
2078let avRecorderProfile: media.AVRecorderProfile = {
2079  audioBitrate : 48000,
2080  audioChannels : 2,
2081  audioCodec : media.CodecMimeType.AUDIO_AAC,
2082  audioSampleRate : 48000,
2083  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
2084  videoBitrate : 2000000,
2085  videoCodec : media.CodecMimeType.VIDEO_AVC,
2086  videoFrameWidth : 640,
2087  videoFrameHeight : 480,
2088  videoFrameRate : 30
2089}
2090let avRecorderConfig: media.AVRecorderConfig = {
2091  audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
2092  videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
2093  profile : avRecorderProfile,
2094  url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45
2095  rotation : 0, // 合理值0、90、180、270,非合理值prepare接口将报错
2096  location : { latitude : 30, longitude : 130 }
2097}
2098
2099avRecorder.prepare(avRecorderConfig, (err: BusinessError) => {
2100  if (err == null) {
2101    console.info('prepare success');
2102  } else {
2103    console.error('prepare failed and error is ' + err.message);
2104  }
2105})
2106```
2107
2108### prepare<sup>9+</sup>
2109
2110prepare(config: AVRecorderConfig): Promise\<void>
2111
2112异步方式进行音视频录制的参数设置。通过Promise获取返回值。
2113
2114**需要权限:** ohos.permission.MICROPHONE
2115
2116不涉及音频录制时,可以不需要获ohos.permission.MICROPHONE权限。
2117
2118使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。
2119
2120**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2121
2122**参数:**
2123
2124| 参数名 | 类型                                   | 必填 | 说明                       |
2125| ------ | -------------------------------------- | ---- | -------------------------- |
2126| config | [AVRecorderConfig](#avrecorderconfig9) | 是   | 配置音视频录制的相关参数。 |
2127
2128**返回值:**
2129
2130| 类型           | 说明                                       |
2131| -------------- | ------------------------------------------ |
2132| Promise\<void> | 异步音视频录制prepare方法的Promise返回值。 |
2133
2134**错误码:**
2135
2136以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2137
2138| 错误码ID | 错误信息                               |
2139| -------- | -------------------------------------- |
2140| 201      | Permission denied. Return by promise.  |
2141| 401      | Parameter error. Return by promise.    |
2142| 5400102  | Operate not permit. Return by promise. |
2143| 5400105  | Service died. Return by promise.       |
2144
2145**示例:**
2146
2147```ts
2148import { BusinessError } from '@ohos.base';
2149
2150// 配置参数以实际硬件设备支持的范围为准
2151let avRecorderProfile: media.AVRecorderProfile = {
2152  audioBitrate : 48000,
2153  audioChannels : 2,
2154  audioCodec : media.CodecMimeType.AUDIO_AAC,
2155  audioSampleRate : 48000,
2156  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
2157  videoBitrate : 2000000,
2158  videoCodec : media.CodecMimeType.VIDEO_AVC,
2159  videoFrameWidth : 640,
2160  videoFrameHeight : 480,
2161  videoFrameRate : 30
2162}
2163let avRecorderConfig: media.AVRecorderConfig = {
2164  audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
2165  videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
2166  profile : avRecorderProfile,
2167  url : 'fd://',  // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45
2168  rotation : 0, // 合理值0、90、180、270,非合理值prepare接口报错
2169  location : { latitude : 30, longitude : 130 }
2170}
2171
2172avRecorder.prepare(avRecorderConfig).then(() => {
2173  console.info('prepare success');
2174}).catch((err: BusinessError) => {
2175  console.error('prepare failed and catch error is ' + err.message);
2176});
2177```
2178
2179### getInputSurface<sup>9+</sup>
2180
2181getInputSurface(callback: AsyncCallback\<string>): void
2182
2183异步方式获得录制需要的surface。通过注册回调函数获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。
2184
2185应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。
2186
2187需在[prepare()](#prepare9-2)事件成功触发后,才能调用getInputSurface()方法。
2188
2189**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2190
2191**参数:**
2192
2193| 参数名   | 类型                   | 必填 | 说明                        |
2194| -------- | ---------------------- | ---- | --------------------------- |
2195| callback | AsyncCallback\<string> | 是   | 异步获得surface的回调方法。 |
2196
2197**错误码:**
2198
2199以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
2200
2201| 错误码ID | 错误信息                                |
2202| -------- | --------------------------------------- |
2203| 5400102  | Operate not permit. Return by callback. |
2204| 5400103  | IO error. Return by callback.           |
2205| 5400105  | Service died. Return by callback.       |
2206
2207**示例:**
2208
2209```ts
2210import { BusinessError } from '@ohos.base';
2211let surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput
2212
2213avRecorder.getInputSurface((err: BusinessError, surfaceId: string) => {
2214  if (err == null) {
2215    console.info('getInputSurface success');
2216    surfaceID = surfaceId;
2217  } else {
2218    console.error('getInputSurface failed and error is ' + err.message);
2219  }
2220});
2221
2222```
2223
2224### getInputSurface<sup>9+</sup>
2225
2226getInputSurface(): Promise\<string>
2227
2228异步方式获得录制需要的surface。通过Promise获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。
2229
2230应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。
2231
2232需在[prepare()](#prepare9-3)事件成功触发后,才能调用getInputSurface方法。
2233
2234**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2235
2236**返回值:**
2237
2238| 类型             | 说明                             |
2239| ---------------- | -------------------------------- |
2240| Promise\<string> | 异步获得surface的Promise返回值。 |
2241
2242**错误码:**
2243
2244以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
2245
2246| 错误码ID | 错误信息                               |
2247| -------- | -------------------------------------- |
2248| 5400102  | Operate not permit. Return by promise. |
2249| 5400103  | IO error. Return by promise.           |
2250| 5400105  | Service died. Return by promise.       |
2251
2252**示例:**
2253
2254```ts
2255import { BusinessError } from '@ohos.base';
2256let surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput
2257
2258avRecorder.getInputSurface().then((surfaceId: string) => {
2259  console.info('getInputSurface success');
2260  surfaceID = surfaceId;
2261}).catch((err: BusinessError) => {
2262  console.error('getInputSurface failed and catch error is ' + err.message);
2263});
2264```
2265
2266### start<sup>9+</sup>
2267
2268start(callback: AsyncCallback\<void>): void
2269
2270异步方式开始视频录制。通过注册回调函数获取返回值。
2271
2272纯音频录制需在[prepare()](#prepare9-2)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9)事件成功触发后,才能调用start方法。
2273
2274**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2275
2276**参数:**
2277
2278| 参数名   | 类型                 | 必填 | 说明                         |
2279| -------- | -------------------- | ---- | ---------------------------- |
2280| callback | AsyncCallback\<void> | 是   | 异步开始视频录制的回调方法。 |
2281
2282**错误码:**
2283
2284以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2285
2286| 错误码ID | 错误信息                                |
2287| -------- | --------------------------------------- |
2288| 5400102  | Operate not permit. Return by callback. |
2289| 5400103  | IO error. Return by callback.           |
2290| 5400105  | Service died. Return by callback.       |
2291
2292**示例:**
2293
2294```ts
2295import { BusinessError } from '@ohos.base';
2296
2297avRecorder.start((err: BusinessError) => {
2298  if (err == null) {
2299    console.info('start AVRecorder success');
2300  } else {
2301    console.error('start AVRecorder failed and error is ' + err.message);
2302  }
2303});
2304```
2305
2306### start<sup>9+</sup>
2307
2308start(): Promise\<void>
2309
2310异步方式开始视频录制。通过Promise获取返回值。
2311
2312纯音频录制需在[prepare()](#prepare9-3)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9-1)事件成功触发后,才能调用start方法。
2313
2314**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2315
2316**返回值:**
2317
2318| 类型           | 说明                                  |
2319| -------------- | ------------------------------------- |
2320| Promise\<void> | 异步开始视频录制方法的Promise返回值。 |
2321
2322**错误码:**
2323
2324以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2325
2326| 错误码ID | 错误信息                               |
2327| -------- | -------------------------------------- |
2328| 5400102  | Operate not permit. Return by promise. |
2329| 5400103  | IO error. Return by promise.           |
2330| 5400105  | Service died. Return by promise.       |
2331
2332**示例:**
2333
2334```ts
2335import { BusinessError } from '@ohos.base';
2336
2337avRecorder.start().then(() => {
2338  console.info('start AVRecorder success');
2339}).catch((err: BusinessError) => {
2340  console.error('start AVRecorder failed and catch error is ' + err.message);
2341});
2342```
2343
2344### pause<sup>9+</sup>
2345
2346pause(callback: AsyncCallback\<void>): void
2347
2348异步方式暂停视频录制。通过注册回调函数获取返回值。
2349
2350需要[start()](#start9)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9)接口来恢复录制。
2351
2352**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2353
2354**参数:**
2355
2356| 参数名   | 类型                 | 必填 | 说明                        |
2357| -------- | -------------------- | ---- | --------------------------- |
2358| callback | AsyncCallback\<void> | 是   | 异步获得surface的回调方法。 |
2359
2360**错误码:**
2361
2362以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2363
2364| 错误码ID | 错误信息                                |
2365| -------- | --------------------------------------- |
2366| 5400102  | Operate not permit. Return by callback. |
2367| 5400103  | IO error. Return by callback.           |
2368| 5400105  | Service died. Return by callback.       |
2369
2370**示例:**
2371
2372```ts
2373import { BusinessError } from '@ohos.base';
2374
2375avRecorder.pause((err: BusinessError) => {
2376  if (err == null) {
2377    console.info('pause AVRecorder success');
2378  } else {
2379    console.error('pause AVRecorder failed and error is ' + err.message);
2380  }
2381});
2382```
2383
2384### pause<sup>9+</sup>
2385
2386pause(): Promise\<void>
2387
2388异步方式暂停视频录制。通过Promise获取返回值。
2389
2390需要[start()](#start9-1)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9-1)接口来恢复录制。
2391
2392**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2393
2394**返回值:**
2395
2396| 类型           | 说明                                  |
2397| -------------- | ------------------------------------- |
2398| Promise\<void> | 异步暂停视频录制方法的Promise返回值。 |
2399
2400**错误码:**
2401
2402以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2403
2404| 错误码ID | 错误信息                               |
2405| -------- | -------------------------------------- |
2406| 5400102  | Operate not permit. Return by promise. |
2407| 5400103  | IO error. Return by promise.           |
2408| 5400105  | Service died. Return by promise.       |
2409
2410**示例:**
2411
2412```ts
2413import { BusinessError } from '@ohos.base';
2414
2415avRecorder.pause().then(() => {
2416  console.info('pause AVRecorder success');
2417}).catch((err: BusinessError) => {
2418  console.error('pause AVRecorder failed and catch error is ' + err.message);
2419});
2420```
2421
2422### resume<sup>9+</sup>
2423
2424resume(callback: AsyncCallback\<void>): void
2425
2426异步方式恢复视频录制。通过注册回调函数获取返回值。
2427
2428需要在[pause()](#pause9-2)事件成功触发后,才能调用resume方法。
2429
2430**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2431
2432**参数:**
2433
2434| 参数名   | 类型                 | 必填 | 说明                         |
2435| -------- | -------------------- | ---- | ---------------------------- |
2436| callback | AsyncCallback\<void> | 是   | 异步恢复视频录制的回调方法。 |
2437
2438**错误码:**
2439
2440以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2441
2442| 错误码ID | 错误信息                                |
2443| -------- | --------------------------------------- |
2444| 5400102  | Operate not permit. Return by callback. |
2445| 5400103  | IO error. Return by callback.           |
2446| 5400105  | Service died. Return by callback.       |
2447
2448**示例:**
2449
2450```ts
2451import { BusinessError } from '@ohos.base';
2452
2453avRecorder.resume((err: BusinessError) => {
2454  if (err == null) {
2455    console.info('resume AVRecorder success');
2456  } else {
2457    console.error('resume AVRecorder failed and error is ' + err.message);
2458  }
2459});
2460```
2461
2462### resume<sup>9+</sup>
2463
2464resume(): Promise\<void>
2465
2466异步方式恢复视频录制。通过Promise获取返回值。
2467
2468需要在[pause()](#pause9-3)事件成功触发后,才能调用resume方法。
2469
2470**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2471
2472**返回值:**
2473
2474| 类型           | 说明                                  |
2475| -------------- | ------------------------------------- |
2476| Promise\<void> | 异步恢复视频录制方法的Promise返回值。 |
2477
2478**错误码:**
2479
2480以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2481
2482| 错误码ID | 错误信息                               |
2483| -------- | -------------------------------------- |
2484| 5400102  | Operate not permit. Return by promise. |
2485| 5400103  | IO error. Return by promise.           |
2486| 5400105  | Service died. Return by promise.       |
2487
2488**示例:**
2489
2490```ts
2491import { BusinessError } from '@ohos.base';
2492
2493avRecorder.resume().then(() => {
2494  console.info('resume AVRecorder success');
2495}).catch((err: BusinessError) => {
2496  console.error('resume AVRecorder failed and catch error is ' + err.message);
2497});
2498```
2499
2500### stop<sup>9+</sup>
2501
2502stop(callback: AsyncCallback\<void>): void
2503
2504异步方式停止视频录制。通过注册回调函数获取返回值。
2505
2506需要在[start()](#start9)或[pause()](#pause9-2)事件成功触发后,才能调用stop方法。
2507
2508纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。
2509
2510**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2511
2512**参数:**
2513
2514| 参数名   | 类型                 | 必填 | 说明                         |
2515| -------- | -------------------- | ---- | ---------------------------- |
2516| callback | AsyncCallback\<void> | 是   | 异步停止视频录制的回调方法。 |
2517
2518**错误码:**
2519
2520以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2521
2522| 错误码ID | 错误信息                                |
2523| -------- | --------------------------------------- |
2524| 5400102  | Operate not permit. Return by callback. |
2525| 5400103  | IO error. Return by callback.           |
2526| 5400105  | Service died. Return by callback.       |
2527
2528**示例:**
2529
2530```ts
2531import { BusinessError } from '@ohos.base';
2532
2533avRecorder.stop((err: BusinessError) => {
2534  if (err == null) {
2535    console.info('stop AVRecorder success');
2536  } else {
2537    console.error('stop AVRecorder failed and error is ' + err.message);
2538  }
2539});
2540```
2541
2542### stop<sup>9+</sup>
2543
2544stop(): Promise\<void>
2545
2546异步方式停止视频录制。通过Promise获取返回值。
2547
2548需要在[start()](#start9-1)或[pause()](#pause9-3)事件成功触发后,才能调用stop方法。
2549
2550纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。
2551
2552**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2553
2554**返回值:**
2555
2556| 类型           | 说明                                  |
2557| -------------- | ------------------------------------- |
2558| Promise\<void> | 异步停止视频录制方法的Promise返回值。 |
2559
2560**错误码:**
2561
2562以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2563
2564| 错误码ID | 错误信息                               |
2565| -------- | -------------------------------------- |
2566| 5400102  | Operate not permit. Return by promise. |
2567| 5400103  | IO error. Return by promise.           |
2568| 5400105  | Service died. Return by promise.       |
2569
2570**示例:**
2571
2572```ts
2573import { BusinessError } from '@ohos.base';
2574
2575avRecorder.stop().then(() => {
2576  console.info('stop AVRecorder success');
2577}).catch((err: BusinessError) => {
2578  console.error('stop AVRecorder failed and catch error is ' + err.message);
2579});
2580```
2581
2582### reset<sup>9+</sup>
2583
2584reset(callback: AsyncCallback\<void>): void
2585
2586异步方式重置音视频录制。通过注册回调函数获取返回值。
2587
2588纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。
2589
2590**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2591
2592**参数:**
2593
2594| 参数名   | 类型                 | 必填 | 说明                           |
2595| -------- | -------------------- | ---- | ------------------------------ |
2596| callback | AsyncCallback\<void> | 是   | 异步重置音视频录制的回调方法。 |
2597
2598**错误码:**
2599
2600以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2601
2602| 错误码ID | 错误信息                          |
2603| -------- | --------------------------------- |
2604| 5400103  | IO error. Return by callback.     |
2605| 5400105  | Service died. Return by callback. |
2606
2607**示例:**
2608
2609```ts
2610import { BusinessError } from '@ohos.base';
2611
2612avRecorder.reset((err: BusinessError) => {
2613  if (err == null) {
2614    console.info('reset AVRecorder success');
2615  } else {
2616    console.error('reset AVRecorder failed and error is ' + err.message);
2617  }
2618});
2619```
2620
2621### reset<sup>9+</sup>
2622
2623reset(): Promise\<void>
2624
2625异步方式重置音视频录制。通过Promise获取返回值。
2626
2627纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。
2628
2629**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2630
2631**返回值:**
2632
2633| 类型           | 说明                                    |
2634| -------------- | --------------------------------------- |
2635| Promise\<void> | 异步重置音视频录制方法的Promise返回值。 |
2636
2637**错误码:**
2638
2639以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2640
2641| 错误码ID | 错误信息                         |
2642| -------- | -------------------------------- |
2643| 5400103  | IO error. Return by promise.     |
2644| 5400105  | Service died. Return by promise. |
2645
2646**示例:**
2647
2648```ts
2649import { BusinessError } from '@ohos.base';
2650
2651avRecorder.reset().then(() => {
2652  console.info('reset AVRecorder success');
2653}).catch((err: BusinessError) => {
2654  console.error('reset AVRecorder failed and catch error is ' + err.message);
2655});
2656```
2657
2658### release<sup>9+</sup>
2659
2660release(callback: AsyncCallback\<void>): void
2661
2662异步方式释放音视频录制资源。通过注册回调函数获取返回值。
2663
2664释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。
2665
2666**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2667
2668**参数:**
2669
2670| 参数名   | 类型                 | 必填 | 说明                               |
2671| -------- | -------------------- | ---- | ---------------------------------- |
2672| callback | AsyncCallback\<void> | 是   | 异步释放音视频录制资源的回调方法。 |
2673
2674**错误码:**
2675
2676以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2677
2678| 错误码ID | 错误信息                          |
2679| -------- | --------------------------------- |
2680| 5400105  | Service died. Return by callback. |
2681
2682**示例:**
2683
2684```ts
2685import { BusinessError } from '@ohos.base';
2686
2687avRecorder.release((err: BusinessError) => {
2688  if (err == null) {
2689    console.info('release AVRecorder success');
2690  } else {
2691    console.error('release AVRecorder failed and error is ' + err.message);
2692  }
2693});
2694```
2695
2696### release<sup>9+</sup>
2697
2698release(): Promise\<void>
2699
2700异步方式释放音视频录制资源。通过Promise获取返回值。
2701
2702释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。
2703
2704**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2705
2706**返回值:**
2707
2708| 类型           | 说明                                        |
2709| -------------- | ------------------------------------------- |
2710| Promise\<void> | 异步释放音视频录制资源方法的Promise返回值。 |
2711
2712**错误码:**
2713
2714以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2715
2716| 错误码ID | 错误信息                          |
2717| -------- | --------------------------------- |
2718| 5400105  | Service died. Return by callback. |
2719
2720**示例:**
2721
2722```ts
2723import { BusinessError } from '@ohos.base';
2724
2725avRecorder.release().then(() => {
2726  console.info('release AVRecorder success');
2727}).catch((err: BusinessError) => {
2728  console.error('release AVRecorder failed and catch error is ' + err.message);
2729});
2730```
2731
2732### getCurrentAudioCapturerInfo<sup>11+</sup>
2733
2734getCurrentAudioCapturerInfo(callback: AsyncCallback\<audio.AudioCapturerChangeInfo>): void
2735
2736异步方式获取当前音频采集参数。通过注册回调函数获取返回值。
2737
2738在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
2739
2740**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
2741
2742**参数**:
2743
2744| 参数名   | 类型                                                         | 必填 | 说明                                 |
2745| -------- | ------------------------------------------------------------ | ---- | ------------------------------------ |
2746| callback | AsyncCallback\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是   | 异步获取当前音频采集参数的回调方法。 |
2747
2748**错误码**:
2749
2750以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2751
2752| 错误码ID | 错误信息                                   |
2753| -------- | ------------------------------------------ |
2754| 5400102  | Operation not allowed. Return by callback. |
2755| 5400103  | I/O error. Return by callback.             |
2756| 5400105  | Service died. Return by callback.          |
2757
2758**示例**:
2759
2760```ts
2761let currentCapturerInfo: audio.AudioCapturerChangeInfo;
2762
2763avRecorder.getCurrentAudioCapturerInfo((err: BusinessError, capturerInfo: audio.AudioCapturerChangeInfo) => {
2764  if (err == null) {
2765    console.info('getCurrentAudioCapturerInfo success');
2766    currentCapturerInfo = capturerInfo;
2767  } else {
2768    console.error('getCurrentAudioCapturerInfo failed and error is ' + err.message);
2769  }
2770});
2771```
2772
2773### getCurrentAudioCapturerInfo<sup>11+</sup>
2774
2775getCurrentAudioCapturerInfo(): Promise\<audio.AudioCapturerChangeInfo>
2776
2777异步方式获取当前音频采集参数。通过Promise获取返回值。
2778
2779在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
2780
2781**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
2782
2783**返回值**:
2784
2785| 类型                                                         | 说明                                              |
2786| ------------------------------------------------------------ | ------------------------------------------------- |
2787| Promise\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 异步方式获取当前音频采集参数方法的Promise返回值。 |
2788
2789**错误码**:
2790
2791以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2792
2793| 错误码ID | 错误信息                         |
2794| -------- | -------------------------------- |
2795| 5400102  | Operation not allowed.           |
2796| 5400103  | I/O error.                       |
2797| 5400105  | Service died. Return by promise. |
2798
2799**示例**:
2800
2801```ts
2802let currentCapturerInfo: audio.AudioCapturerChangeInfo;
2803
2804avRecorder.getCurrentAudioCapturerInfo().then((capturerInfo: audio.AudioCapturerChangeInfo) => {
2805  console.info('getCurrentAudioCapturerInfo success');
2806  currentCapturerInfo = capturerInfo;
2807}).catch((err: BusinessError) => {
2808  console.error('getCurrentAudioCapturerInfo failed and catch error is ' + err.message);
2809});
2810```
2811
2812### getAudioCapturerMaxAmplitude<sup>11+</sup>
2813
2814getAudioCapturerMaxAmplitude(callback: AsyncCallback\<number>): void
2815
2816异步方式获取当前音频最大振幅。通过注册回调函数获取返回值。
2817
2818在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
2819
2820调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。
2821
2822**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
2823
2824**参数**:
2825
2826| 参数名   | 类型                   | 必填 | 说明                                 |
2827| -------- | ---------------------- | ---- | ------------------------------------ |
2828| callback | AsyncCallback\<number> | 是   | 异步获取当前音频最大振幅的回调方法。 |
2829
2830**错误码**:
2831
2832以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2833
2834| 错误码ID | 错误信息                                   |
2835| -------- | ------------------------------------------ |
2836| 5400102  | Operation not allowed. Return by callback. |
2837| 5400105  | Service died. Return by callback.          |
2838
2839**示例**:
2840
2841```ts
2842let maxAmplitude: number;
2843
2844avRecorder.getAudioCapturerMaxAmplitude((err: BusinessError, amplitude: number) => {
2845  if (err == null) {
2846    console.info('getAudioCapturerMaxAmplitude success');
2847    maxAmplitude = amplitude;
2848  } else {
2849    console.error('getAudioCapturerMaxAmplitude failed and error is ' + err.message);
2850  }
2851});
2852```
2853
2854### getAudioCapturerMaxAmplitude<sup>11+</sup>
2855
2856getAudioCapturerMaxAmplitude(): Promise\<number>
2857
2858异步方式获取当前音频最大振幅参数。通过Promise获取返回值。
2859
2860在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
2861
2862调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。
2863
2864**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
2865
2866**返回值**:
2867
2868| 类型             | 说明                                              |
2869| ---------------- | ------------------------------------------------- |
2870| Promise\<number> | 异步方式获取当前音频最大振幅方法的Promise返回值。 |
2871
2872**错误码**:
2873
2874以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2875
2876| 错误码ID | 错误信息                         |
2877| -------- | -------------------------------- |
2878| 5400102  | Operation not allowed.           |
2879| 5400105  | Service died. Return by promise. |
2880
2881**示例**:
2882
2883```ts
2884let maxAmplitude: number;
2885
2886avRecorder.getAudioCapturerMaxAmplitude().then((amplitude: number) => {
2887  console.info('getAudioCapturerMaxAmplitude success');
2888  maxAmplitude = amplitude;
2889}).catch((err: BusinessError) => {
2890  console.error('getAudioCapturerMaxAmplitude failed and catch error is ' + err.message);
2891});
2892```
2893
2894### getAvailableEncoder<sup>11+</sup>
2895
2896getAvailableEncoder(callback: AsyncCallback\<Array\<EncoderInfo>>): void
2897
2898异步方式获取可用的编码器参数。通过注册回调函数获取返回值。
2899
2900**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
2901
2902**参数**:
2903
2904| 参数名   | 类型                                                  | 必填 | 说明                                 |
2905| -------- | ----------------------------------------------------- | ---- | ------------------------------------ |
2906| callback | AsyncCallback\<Array\<[EncoderInfo](#encoderinfo11)>> | 是   | 异步获取可用的编码器参数的回调方法。 |
2907
2908**错误码**:
2909
2910以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2911
2912| 错误码ID | 错误信息                                   |
2913| -------- | ------------------------------------------ |
2914| 5400102  | Operation not allowed. Return by callback. |
2915| 5400105  | Service died. Return by callback.          |
2916
2917**示例**:
2918
2919```ts
2920let encoderInfo: media.EncoderInfo;
2921
2922avRecorder.getAvailableEncoder((err: BusinessError, info: media.EncoderInfo) => {
2923  if (err == null) {
2924    console.info('getAvailableEncoder success');
2925    encoderInfo = info;
2926  } else {
2927    console.error('getAvailableEncoder failed and error is ' + err.message);
2928  }
2929});
2930```
2931
2932### getAvailableEncoder<sup>11+</sup>
2933
2934getAvailableEncoder(): Promise\<Array\<EncoderInfo>>
2935
2936异步方式获取可用的编码器参数。通过注册回调函数获取返回值。
2937
2938**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
2939
2940**返回值**:
2941
2942| 类型                                            | 说明                                            |
2943| ----------------------------------------------- | ----------------------------------------------- |
2944| Promise\<Array\<[EncoderInfo](#encoderinfo11)>> | 异步方式获取可用的编码参数方法的Promise返回值。 |
2945
2946**错误码**:
2947
2948以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
2949
2950| 错误码ID | 错误信息                         |
2951| -------- | -------------------------------- |
2952| 5400102  | Operation not allowed.           |
2953| 5400105  | Service died. Return by promise. |
2954
2955**示例**:
2956
2957```ts
2958let encoderInfo: media.EncoderInfo;
2959
2960avRecorder.getAvailableEncoder().then((info: media.EncoderInfo) => {
2961  console.info('getAvailableEncoder success');
2962  encoderInfo = info;
2963}).catch((err: BusinessError) => {
2964  console.error('getAvailableEncoder failed and catch error is ' + err.message);
2965});
2966```
2967
2968### getAVRecorderConfig<sup>11+</sup>
2969
2970getAVRecorderConfig(callback: AsyncCallback\<AVRecorderConfig>): void
2971
2972异步方式获取实时的配置参数。通过注册回调函数获取返回值。
2973
2974只能在[prepare()](#prepare9-2)接口调用后调用。
2975
2976**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
2977
2978**参数:**
2979
2980| 参数名   | 类型                   | 必填 | 说明                        |
2981| -------- | ---------------------- | ---- | --------------------------- |
2982| callback | AsyncCallback\<[AVRecorderConfig](#avrecorderconfig9)> | 是   | 异步获得实时配置参数的回调方法。 |
2983
2984**错误码:**
2985
2986以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
2987
2988| 错误码ID | 错误信息                                   |
2989| -------- | ------------------------------------------ |
2990| 5400102  | Operate not permit. Return by callback. |
2991| 5400103  | IO error. Return by callback.             |
2992| 5400105  | Service died. Return by callback.          |
2993
2994**示例:**
2995
2996```ts
2997import { BusinessError } from '@ohos.base';
2998
2999let AVRecorderConfig: AVRecorderConfig;
3000
3001avRecorder.getAVRecorderConfig((err: BusinessError, config: AVRecorderConfig) => {
3002  if (err == null) {
3003    console.info('getAVRecorderConfig success');
3004    AVRecorderConfig = config;
3005  } else {
3006    console.error('getAVRecorderConfig failed and error is ' + err.message);
3007  }
3008});
3009```
3010
3011### getAVRecorderConfig<sup>11+</sup>
3012
3013getAVRecorderConfig(): Promise\<AVRecorderConfig>;
3014
3015异步方式获取实时的配置参数。通过Promise获取返回值。
3016
3017只能在[prepare()](#prepare9-3)接口调用后调用。
3018
3019**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3020
3021**返回值:**
3022
3023| 类型             | 说明                             |
3024| ---------------- | -------------------------------- |
3025| Promise\<[AVRecorderConfig](#avrecorderconfig9)> | 异步获得实时配置参数的回调方法。 |
3026
3027**错误码:**
3028
3029以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3030
3031| 错误码ID | 错误信息                                  |
3032| -------- | ----------------------------------------- |
3033| 5400102  | Operate not permit. Return by promise. |
3034| 5400103  | IO error. Return by promise.             |
3035| 5400105  | Service died. Return by promise.          |
3036
3037**示例:**
3038
3039```ts
3040import { BusinessError } from '@ohos.base';
3041
3042let AVRecorderConfig: AVRecorderConfig;
3043
3044avRecorder.getAVRecorderConfig().then((config: AVRecorderConfig) => {
3045  console.info('getAVRecorderConfig success');
3046  AVRecorderConfig = config;
3047}).catch((err: BusinessError) => {
3048  console.error('getAVRecorderConfig failed and catch error is ' + err.message);
3049});
3050```
3051
3052### on('stateChange')<sup>9+</sup>
3053
3054on(type: 'stateChange', callback: (state: AVRecorderState, reason: StateChangeReason) => void): void
3055
3056订阅录制状态机AVRecorderState切换的事件,当 AVRecorderState状态机发生变化时,会通过订阅的回调方法通知用户。用户只能订阅一个状态机切换事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
3057
3058**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3059
3060**参数:**
3061
3062| 参数名   | 类型     | 必填 | 说明                                                         |
3063| -------- | -------- | ---- | ------------------------------------------------------------ |
3064| type     | string   | 是   | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 |
3065| callback | function | 是   | 状态机切换事件回调方法:<br>state: [AVRecorderState](#avrecorderstate9),表示当前播放状态 ;<br>reason: [StateChangeReason](#statechangereason9),表示当前播放状态的切换原因。 |
3066
3067**错误码:**
3068
3069以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3070
3071| 错误码ID | 错误信息                          |
3072| -------- | --------------------------------- |
3073| 5400103  | IO error. Return by callback.     |
3074| 5400105  | Service died. Return by callback. |
3075
3076**示例:**
3077
3078```ts
3079avRecorder.on('stateChange', async (state: media.AVRecorderState, reason: media.StateChangeReason) => {
3080  console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
3081});
3082```
3083
3084### off('stateChange')<sup>9+</sup>
3085
3086off(type: 'stateChange'): void
3087
3088取消订阅播放状态机[AVRecorderState](#avrecorderstate9)切换的事件。
3089
3090**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3091
3092**参数:**
3093
3094| 参数名 | 类型   | 必填 | 说明                                                         |
3095| ------ | ------ | ---- | ------------------------------------------------------------ |
3096| type   | string | 是   | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 |
3097
3098**示例:**
3099
3100```ts
3101avRecorder.off('stateChange');
3102```
3103
3104### on('error')<sup>9+</sup>
3105
3106on(type: 'error', callback: ErrorCallback): void
3107
3108订阅AVRecorder的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVRecorderState](#avrecorderstate9)也切至error状态,用户需要通过[reset()](#reset9-2)或者[release()](#release9-2)退出录制操作。
3109
3110用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
3111
3112**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3113
3114**参数:**
3115
3116| 参数名   | 类型          | 必填 | 说明                                                         |
3117| -------- | ------------- | ---- | ------------------------------------------------------------ |
3118| type     | string        | 是   | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 |
3119| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 录制错误事件回调方法。                                       |
3120
3121**错误码:**
3122
3123以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3124
3125| 错误码ID | 错误信息                                   |
3126| -------- | ------------------------------------------ |
3127| 5400101  | No memory. Return by callback.             |
3128| 5400102  | Operation not allowed. Return by callback. |
3129| 5400103  | I/O error. Return by callback.             |
3130| 5400104  | Time out. Return by callback.              |
3131| 5400105  | Service died. Return by callback.          |
3132| 5400106  | Unsupport format. Return by callback.      |
3133| 5400107  | Audio interrupted. Return by callback.     |
3134
3135**示例:**
3136
3137```ts
3138import { BusinessError } from '@ohos.base';
3139
3140avRecorder.on('error', (err: BusinessError) => {
3141  console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
3142});
3143```
3144
3145### off('error')<sup>9+</sup>
3146
3147off(type: 'error'): void
3148
3149取消订阅录制错误事件,取消后不再接收到AVRecorder的错误事件。
3150
3151**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3152
3153**参数:**
3154
3155| 参数名 | 类型   | 必填 | 说明                                                         |
3156| ------ | ------ | ---- | ------------------------------------------------------------ |
3157| type   | string | 是   | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 |
3158
3159**示例:**
3160
3161```ts
3162avRecorder.off('error');
3163```
3164
3165### on('audioCapturerChange')<sup>11+</sup>
3166
3167on(type: 'audioCapturerChange', callback: Callback<audio.AudioCapturerChangeInfo>): void
3168
3169订阅录音配置变化的回调,任意录音配置的变化会触发变化后的录音配置全量信息回调。
3170
3171当用户重复订阅时,以最后一次订阅的回调接口为准。
3172
3173**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3174
3175**参数:**
3176
3177| 参数名   | 类型     | 必填 | 说明                                                         |
3178| -------- | -------- | ---- | ------------------------------------------------------------ |
3179| type     | string   | 是   |录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 |
3180| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是 | 变化后的录音配置全量信息。|
3181
3182**错误码:**
3183
3184| 错误码ID | 错误信息                                   |
3185| -------- | ------------------------------------------ |
3186| 401      | Parameter error. Return by callback.       |
3187
3188**示例:**
3189
3190```ts
3191let capturerChangeInfo: audio.AudioCapturerChangeInfo;
3192
3193avRecorder.on('audioCapturerChange',  (audioCapturerChangeInfo: audio.AudioCapturerChangeInfo) => {
3194  console.info('audioCapturerChange success');
3195  capturerChangeInfo = audioCapturerChangeInfo;
3196});
3197```
3198
3199### off('audioCapturerChange')<sup>11+</sup>
3200
3201off(type: 'audioCapturerChange'): void
3202
3203取消订阅录音变化的回调事件。
3204
3205**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3206
3207**参数:**
3208
3209| 参数名 | 类型   | 必填 | 说明                                                         |
3210| ------ | ------ | ---- | ------------------------------------------------------------ |
3211| type   | string | 是   | 录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 |
3212
3213**示例:**
3214
3215```ts
3216avRecorder.off('audioCapturerChange');
3217```
3218
3219## AVRecorderState<sup>9+</sup>
3220
3221音视频录制的状态机。可通过state属性获取当前状态。
3222
3223**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3224
3225| 名称     | 类型   | 说明                                                         |
3226| -------- | ------ | ------------------------------------------------------------ |
3227| idle     | string | 闲置状态。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,进入prepared状态。AVRecorder刚被创建,或者在任何非released状态下调用[AVRecorder.reset()](#reset9-2)方法,均进入idle状态。 |
3228| prepared | string | 参数设置完成。此时可以调用[AVRecorder.start()](#start9)方法开始录制,进入started状态。 |
3229| started  | string | 正在录制。此时可以调用[AVRecorder.pause()](#pause9-2)方法暂停录制,进入paused状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 |
3230| paused   | string | 录制暂停。此时可以调用[AVRecorder.resume()](#resume9)方法继续录制,进入started状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 |
3231| stopped  | string | 录制停止。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,重新进入prepared状态。 |
3232| released | string | 录制资源释放。此时不能再进行任何操作。在任何其他状态下,均可以通过调用[AVRecorder.release()](#release9-2)方法进入released状态。 |
3233| error    | string | 错误状态。当AVRecorder实例发生不可逆错误,会转换至当前状态。切换至error状态时会伴随[AVRecorder.on('error')事件](#onerror9-1),该事件会上报详细错误原因。在error状态时,用户需要调用[AVRecorder.reset()](#reset9-2)方法重置AVRecorder实例,或者调用[AVRecorder.release()](#release9-2)方法释放资源。 |
3234
3235## AVRecorderConfig<sup>9+</sup>
3236
3237表示音视频录制的参数设置。
3238
3239通过audioSourceType和videoSourceType区分纯音频录制、纯视频录制或音视频录制。纯音频录制时,仅需要设置audioSourceType;纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。
3240
3241**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3242
3243| 名称            | 类型                                     | 必填 | 说明                                                         |
3244| --------------- | ---------------------------------------- | ---- | ------------------------------------------------------------ |
3245| audioSourceType | [AudioSourceType](#audiosourcetype9)     | 否   | 选择录制的音频源类型。选择音频录制时必填。                   |
3246| videoSourceType | [VideoSourceType](#videosourcetype9)     | 否   | 选择录制的视频源类型。选择视频录制时必填。                   |
3247| profile         | [AVRecorderProfile](#avrecorderprofile9) | 是   | 录制的profile,必要参数。                                    |
3248| url             | string                                   | 是   | 录制输出URL:fd://xx (fd number) ![img](figures/zh-cn_image_url.png),必要参数。 |
3249| rotation        | number                                   | 否   | 录制的视频旋转角度,mp4格式支持0,90,180,270,默认值为0。       |
3250| location        | [Location](#location)                    | 否   | 录制的地理位置,默认不记录地理位置信息。                     |
3251
3252## AVRecorderProfile<sup>9+</sup>
3253
3254音视频录制的配置文件。
3255
3256**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3257
3258| 名称             | 类型                                         | 必填 | 说明                                                         |
3259| ---------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
3260| audioBitrate     | number                                       | 否   | 音频编码比特率,选择音频录制时必填,支持范围[8000 - 384000]。 |
3261| audioChannels    | number                                       | 否   | 音频采集声道数,选择音频录制时必填,支持范围[1 - 2]。        |
3262| audioCodec       | [CodecMimeType](#codecmimetype8)             | 否   | 音频编码格式,选择音频录制时必填。当前仅支持AUDIO_AAC。      |
3263| audioSampleRate  | number                                       | 否   | 音频采样率,选择音频录制时必填,支持范围[8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 96000]。 |
3264| fileFormat       | [ContainerFormatType](#containerformattype8) | 是   | 文件的容器格式,必要参数。                                   |
3265| videoBitrate     | number                                       | 否   | 视频编码比特率,选择视频录制时必填,支持范围[1 - 3000000]。  |
3266| videoCodec       | [CodecMimeType](#codecmimetype8)             | 否   | 视频编码格式,选择视频录制时必填。当前支持VIDEO_AVC。        |
3267| videoFrameWidth  | number                                       | 否   | 视频帧的宽,选择视频录制时必填,支持范围[2 - 1920]。         |
3268| videoFrameHeight | number                                       | 否   | 视频帧的高,选择视频录制时必填,支持范围[2 - 1080]。         |
3269| videoFrameRate   | number                                       | 否   | 视频帧率,选择视频录制时必填,支持范围[1 - 30]。             |
3270| isHdr<sup>11+</sup>            | boolean                        | 否   | HDR编码,选择视频录制时选填,isHdr默认为false,对应编码格式没有要求,isHdr为true时,对应的编码格式必须为video/hevc。|
3271
3272## AudioSourceType<sup>9+</sup>
3273
3274表示视频录制中音频源类型的枚举。
3275
3276**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3277
3278| 名称                      | 值   | 说明                   |
3279| ------------------------- | ---- | ---------------------- |
3280| AUDIO_SOURCE_TYPE_DEFAULT | 0    | 默认的音频输入源类型。 |
3281| AUDIO_SOURCE_TYPE_MIC     | 1    | 表示MIC的音频输入源。  |
3282
3283## VideoSourceType<sup>9+</sup>
3284
3285表示视频录制中视频源类型的枚举。
3286
3287**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3288
3289| 名称                          | 值   | 说明                            |
3290| ----------------------------- | ---- | ------------------------------- |
3291| VIDEO_SOURCE_TYPE_SURFACE_YUV | 0    | 输入surface中携带的是raw data。 |
3292| VIDEO_SOURCE_TYPE_SURFACE_ES  | 1    | 输入surface中携带的是ES data。  |
3293
3294## ContainerFormatType<sup>8+</sup>
3295
3296表示容器格式类型的枚举,缩写为CFT。
3297
3298**系统能力:** SystemCapability.Multimedia.Media.Core
3299
3300| 名称        | 值    | 说明                  |
3301| ----------- | ----- | --------------------- |
3302| CFT_MPEG_4  | 'mp4' | 视频的容器格式,MP4。 |
3303| CFT_MPEG_4A | 'm4a' | 音频的容器格式,M4A。 |
3304
3305## Location
3306
3307视频录制的地理位置。
3308
3309**系统能力:** SystemCapability.Multimedia.Media.Core
3310
3311| 名称      | 类型   | 必填 | 说明             |
3312| --------- | ------ | ---- | ---------------- |
3313| latitude  | number | 是   | 地理位置的纬度。 |
3314| longitude | number | 是   | 地理位置的经度。 |
3315
3316## EncoderInfo<sup>11+</sup>
3317
3318编码器和规格参数
3319
3320系统能力:SystemCapability.Multimedia.Media.AVRecorder
3321
3322| 名称       | 类型                             | 可读 | 可写 | 说明                                                         |
3323| ---------- | -------------------------------- | ---- | ---- | ------------------------------------------------------------ |
3324| mimeType   | [CodecMimeType](#codecmimetype8) | 是   | 否   | 编码器MIME类型名称                                           |
3325| type       | string                           | 是   | 否   | 编码器类型,audio表示音频编码器,video表示视频编码器         |
3326| bitRate    | [Range](#range11)                | 是   | 否   | 比特率,包含该编码器的最大和最小值                           |
3327| frameRate  | [Range](#range11)                | 是   | 否   | 视频帧率,包含帧率的最大和最小值,仅视频编码器拥有           |
3328| width      | [Range](#range11)                | 是   | 否   | 视频帧的宽度,包含宽度的最大和最小值,仅视频编码器拥有       |
3329| height     | [Range](#range11)                | 是   | 否   | 视频帧的高度,包含高度的最大和最小值,仅视频编码器拥有       |
3330| channels   | [Range](#range11)                | 是   | 否   | 音频采集声道数,包含声道数的最大和最小值,仅音频编码器拥有   |
3331| sampleRate | Array\<number>                    | 是   | 否   | 音频采样率,包含所有可以使用的音频采样率值,仅音频编码器拥有 |
3332
3333## Range<sup>11+</sup>
3334
3335表示一个类型的范围
3336
3337系统能力:SystemCapability.Multimedia.Media.AVRecorder
3338
3339| 名称 | 类型   | 可读 | 可写 | 说明         |
3340| ---- | ------ | ---- | ---- | ------------ |
3341| min  | number | 是   | 否   | 范围的最小值 |
3342| max  | number | 是   | 否   | 范围的最大值 |
3343
3344
3345
3346## AVMetadataExtractor<sup>11+</sup>
3347
3348元数据获取类,用于从媒体资源中获取元数据。在调用AVMetadataExtractor的方法前,需要先通过[createAVMetadataExtractor()](#mediacreateavmetadataextractor11)构建一个AVMetadataExtractor实例。
3349
3350获取音频或视频元数据的demo可参考:[获取音视频元数据开发指导](../../media/media/avmetadataextractor.md)。
3351
3352### 属性
3353
3354**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
3355
3356| 名称                                                | 类型                                                         | 可读 | 可写 | 说明                                                         |
3357| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
3358| fdSrc<sup>11+</sup>                                  | [AVFileDescriptor](#avfiledescriptor9)                       | 是   | 是   | 媒体文件描述,通过该属性设置数据源。在获取元信息之前,必须设置数据源属性,只能设置fdSrc和dataSrc的其中一个。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。 |
3359| dataSrc<sup>11+</sup>                               | [AVDataSrcDescriptor](#avdatasrcdescriptor10)                | 是   | 是   | 流式媒体资源描述,通过该属性设置数据源。在获取元信息之前,必须设置数据源属性,只能设置fdSrc和dataSrc的其中一个。<br/> 当应用从远端获取音视频媒体文件,在应用未下载完整音视频资源时,可以设置dataSrc提前获取该资源的元信息。|
3360
3361### fetchMetadata<sup>11+</sup>
3362
3363fetchMetadata(callback: AsyncCallback\<AVMetadata>): void
3364
3365异步方式获取媒体元数据。通过注册回调函数获取返回值。
3366
3367**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
3368
3369**参数:**
3370
3371| 参数名   | 类型                                         | 必填 | 说明                                |
3372| -------- | -------------------------------------------- | ---- | ----------------------------------- |
3373| callback | AsyncCallback\<[AVMetadata](#avmetadata11)>       | 是   | 回调函数。异步返回音视频元数据对象(AVMetadata)。|
3374
3375**错误码:**
3376
3377以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3378
3379| 错误码ID | 错误信息                                   |
3380| -------- | ------------------------------------------ |
3381| 5400102  | Operation not allowed. Returned by callback. |
3382| 5400106  | Unsupported format. Returned by callback.  |
3383
3384**示例:**
3385
3386```ts
3387import { BusinessError } from '@ohos.base';
3388import media from '@ohos.multimedia.media';
3389
3390let avMetadataExtractor: media.AVMetadataExtractor | undefined = undefined;
3391
3392// 获取元数据
3393media.createAVMetadataExtractor((err: BusinessError, extractor: media.AVMetadataExtractor) => {
3394  if(extractor != null){
3395    avMetadataExtractor = extractor;
3396    console.error(`createAVMetadataExtractor success`);
3397    avMetadataExtractor.fetchMetadata((error: BusinessError, metadata: media.AVMetadata) => {
3398      if (error) {
3399        console.error(`fetchMetadata callback failed, err = ${JSON.stringify(error)}`);
3400        return;
3401      }
3402      console.info(`fetchMetadata callback success, genre: ${metadata.genre}`);
3403    });
3404  } else {
3405    console.error(`createAVMetadataExtractor fail, error message:${err.message}`);
3406  }
3407});
3408```
3409
3410### fetchMetadata<sup>11+</sup>
3411
3412fetchMetadata(): Promise\<AVMetadata>
3413
3414异步方式获取媒体元数据。通过Promise获取返回值。
3415
3416**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
3417
3418**返回值:**
3419
3420| 类型           | 说明                                     |
3421| -------------- | ---------------------------------------- |
3422| Promise\<[AVMetadata](#avmetadata11)>  | Promise对象。异步返回音视频元数据对象(AVMetadata)。 |
3423
3424**错误码:**
3425
3426以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3427
3428| 错误码ID | 错误信息                                  |
3429| -------- | ----------------------------------------- |
3430| 5400102  | Operation not allowed. Returned by promise. |
3431| 5400106  | Unsupported format. Returned by promise.  |
3432
3433**示例:**
3434
3435```ts
3436import { BusinessError } from '@ohos.base';
3437import media from '@ohos.multimedia.media';
3438
3439let avMetadataExtractor: media.AVMetadataExtractor | undefined = undefined;
3440
3441// 获取元信息
3442media.createAVMetadataExtractor((err: BusinessError, extractor: media.AVMetadataExtractor) => {
3443  if(extractor != null){
3444    avMetadataExtractor = extractor;
3445    console.error(`createAVMetadataExtractor success`);
3446    avMetadataExtractor.fetchMetadata().then((metadata: media.AVMetadata) => {
3447      console.info(`fetchMetadata callback success, genre: ${metadata.genre}`)
3448    }).catch((error: BusinessError) => {
3449      console.error(`fetchMetadata catchCallback, error message:${error.message}`);
3450    });
3451  } else {
3452    console.error(`createAVMetadataExtractor fail, error message:${err.message}`);
3453  }
3454});
3455```
3456
3457### fetchAlbumCover<sup>11+</sup>
3458
3459fetchAlbumCover(callback: AsyncCallback\<image.PixelMap>): void
3460
3461异步方式获取音频专辑封面。通过注册回调函数获取返回值。
3462
3463**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
3464
3465**参数:**
3466
3467| 参数名   | 类型                                         | 必填 | 说明                                |
3468| -------- | -------------------------------------------- | ---- | ----------------------------------- |
3469| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)>    | 是   | 回调函数。异步返回专辑封面。 |
3470
3471**错误码:**
3472
3473以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3474
3475| 错误码ID | 错误信息                                   |
3476| -------- | ------------------------------------------ |
3477| 5400102  | Operation not allowed. Return by callback. |
3478| 5400106  | Unsupported format. Returned by callback.  |
3479
3480**示例:**
3481
3482```ts
3483import { BusinessError } from '@ohos.base';
3484import media from '@ohos.multimedia.media';
3485import image from '@ohos.multimedia.image';
3486
3487let avMetadataExtractor: media.AVMetadataExtractor | undefined = undefined;
3488let pixel_map : image.PixelMap | undefined = undefined;
3489
3490// 获取专辑封面
3491media.createAVMetadataExtractor((err: BusinessError, extractor: media.AVMetadataExtractor) => {
3492  if(extractor != null){
3493    avMetadataExtractor = extractor;
3494    console.error(`createAVMetadataExtractor success`);
3495    avMetadataExtractor.fetchAlbumCover((error: BusinessError, pixelMap: image.PixelMap) => {
3496      if (error) {
3497        console.error(`fetchAlbumCover callback failed, error = ${JSON.stringify(error)}`);
3498        return;
3499      }
3500      pixel_map = pixelMap;
3501    });
3502  } else {
3503    console.error(`createAVMetadataExtractor fail, error message:${err.message}`);
3504  };
3505});
3506```
3507
3508### fetchAlbumCover<sup>11+</sup>
3509
3510fetchAlbumCover(): Promise\<image.PixelMap>
3511
3512异步方式获取专辑封面。通过Promise获取返回值。
3513
3514**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
3515
3516**返回值:**
3517
3518| 类型           | 说明                                     |
3519| -------------- | ---------------------------------------- |
3520| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> |  Promise对象。异步返回专辑封面。 |
3521
3522**错误码:**
3523
3524以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3525
3526| 错误码ID | 错误信息                                  |
3527| -------- | ----------------------------------------- |
3528| 5400102  | Operation not allowed. Returned by promise. |
3529| 5400106  | Unsupported format. Returned by promise.  |
3530
3531**示例:**
3532
3533```ts
3534import { BusinessError } from '@ohos.base';
3535import media from '@ohos.multimedia.media';
3536import image from '@ohos.multimedia.image';
3537
3538let avMetadataExtractor: media.AVMetadataExtractor | undefined = undefined;
3539let pixel_map : image.PixelMap | undefined = undefined;
3540
3541// 获取专辑封面
3542media.createAVMetadataExtractor((err: BusinessError, extractor: media.AVMetadataExtractor) => {
3543  if(extractor != null){
3544    avMetadataExtractor = extractor;
3545    console.error(`createAVMetadataExtractor success`);
3546    avMetadataExtractor.fetchAlbumCover().then((pixelMap: image.PixelMap) => {
3547      pixel_map = pixelMap;
3548    }).catch((error: BusinessError) => {
3549      console.error(`fetchAlbumCover catchCallback, error message:${error.message}`);
3550    });
3551  } else {
3552    console.error(`createAVMetadataExtractor fail, error message:${err.message}`);
3553  };
3554});
3555```
3556
3557### release<sup>11+</sup>
3558
3559release(callback: AsyncCallback\<void>): void
3560
3561异步方式释放资源。通过注册回调函数获取返回值。
3562
3563**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
3564
3565**参数:**
3566
3567| 参数名   | 类型                                         | 必填 | 说明                                |
3568| -------- | -------------------------------------------- | ---- | ----------------------------------- |
3569| callback | AsyncCallback\<void>                   | 是   | 异步释放资源release方法的回调方法。 |
3570
3571**错误码:**
3572
3573以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3574
3575| 错误码ID | 错误信息                                   |
3576| -------- | ------------------------------------------ |
3577| 5400102  | Operation not allowed. Returned by callback. |
3578
3579**示例:**
3580
3581```ts
3582import { BusinessError } from '@ohos.base';
3583import media from '@ohos.multimedia.media';
3584
3585let avMetadataExtractor: media.AVMetadataExtractor | undefined = undefined;
3586
3587//释放资源
3588media.createAVMetadataExtractor((err: BusinessError, extractor: media.AVMetadataExtractor) => {
3589  if(extractor != null){
3590    avMetadataExtractor = extractor;
3591    console.error(`createAVMetadataExtractor success`);
3592    avMetadataExtractor.release((error: BusinessError) => {
3593      if (error) {
3594        console.error(`release failed, err = ${JSON.stringify(error)}`);
3595        return;
3596      }
3597      console.info(`release success.`);
3598    });
3599  } else {
3600    console.error(`createAVMetadataExtractor fail, error message:${err.message}`);
3601  };
3602});
3603```
3604
3605### release<sup>11+</sup>
3606
3607release(): Promise\<void>
3608
3609异步方式释放资源。通过Promise获取返回值。
3610
3611**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
3612
3613**返回值:**
3614
3615| 类型           | 说明                                     |
3616| -------------- | ---------------------------------------- |
3617| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 |
3618
3619**错误码:**
3620
3621以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3622
3623| 错误码ID | 错误信息                                  |
3624| -------- | ----------------------------------------- |
3625| 5400102  | Operation not allowed. Returned by promise. |
3626
3627**示例:**
3628
3629```ts
3630import { BusinessError } from '@ohos.base';
3631import media from '@ohos.multimedia.media';
3632
3633let avMetadataExtractor: media.AVMetadataExtractor | undefined = undefined;
3634
3635//释放资源
3636media.createAVMetadataExtractor((err: BusinessError, extractor: media.AVMetadataExtractor) => {
3637  if(extractor != null){
3638    avMetadataExtractor = extractor;
3639    console.error(`createAVMetadataExtractor success`);
3640    avMetadataExtractor.release().then(() => {
3641      console.info(`release success.`);
3642    }).catch((error: BusinessError) => {
3643      console.error(`release catchCallback, error message:${error.message}`);
3644    });
3645  } else {
3646    console.error(`createAVMetadataExtractor fail, error message:${err.message}`);
3647  };
3648});
3649```
3650
3651## AVMetadata<sup>11+</sup>
3652
3653音视频元数据,包含各个元数据字段。
3654
3655**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
3656
3657| 名称   | 类型   | 必填 | 说明                                                         |
3658| ------ | ------ | ---- | ------------------------------------------------------------ |
3659| album     | string | 否   | 专辑的标题。     |
3660| albumArtist | string | 否   | 专辑的艺术家。 |
3661| artist | string | 否   | 媒体资源的艺术家。 |
3662| author | string | 否   | 媒体资源的作者。 |
3663| dateTime | string | 否   | 媒体资源的创建时间。 |
3664| dateTimeFormat | string | 否   | 媒体资源的创建时间,按YYYY-MM-DD HH:mm:ss格式输出。 |
3665| composer | string | 否   | 媒体资源的作曲家。 |
3666| duration | string | 否   | 媒体资源的时长。 |
3667| genre | string | 否   | 媒体资源的类型或体裁。 |
3668| hasAudio | string | 否   | 媒体资源是否包含音频。 |
3669| hasVideo | string | 否   | 媒体资源是否包含视频。 |
3670| mimeType | string | 否   | 媒体资源的mime类型。 |
3671| trackCount | string | 否   | 媒体资源的轨道数量。 |
3672| sampleRate | string | 否   | 音频的采样率,单位为赫兹(Hz)。 |
3673| title | string | 否   | 媒体资源的标题。 |
3674| videoHeight | string | 否   | 视频的高度,单位为像素。 |
3675| videoWidth | string | 否   | 视频的宽度,单位为像素。 |
3676| videoOrientation | string | 否   | 视频的旋转方向,单位为度(°)。 |
3677
3678## media.createAudioPlayer<sup>(deprecated)</sup>
3679
3680createAudioPlayer(): AudioPlayer
3681
3682同步方式创建音频播放实例。
3683
3684> **说明:**
3685> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。
3686
3687**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
3688
3689**返回值:**
3690
3691| 类型                        | 说明                                                         |
3692| --------------------------- | ------------------------------------------------------------ |
3693| [AudioPlayer](#audioplayerdeprecated) | 返回AudioPlayer类实例,失败时返回null。可用于音频播放、暂停、停止等操作。 |
3694
3695**示例:**
3696
3697```ts
3698let audioPlayer: media.AudioPlayer = media.createAudioPlayer();
3699```
3700
3701## media.createVideoPlayer<sup>(deprecated)</sup>
3702
3703createVideoPlayer(callback: AsyncCallback\<VideoPlayer>): void
3704
3705异步方式创建视频播放实例,通过注册回调函数获取返回值。
3706
3707> **说明:**
3708> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。
3709
3710**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
3711
3712**参数:**
3713
3714| 参数名   | 类型                                       | 必填 | 说明                                                         |
3715| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
3716| callback | AsyncCallback<[VideoPlayer](#videoplayerdeprecated)> | 是   | 回调函数。异步返回VideoPlayer实例,失败时返回null。可用于管理和播放视频媒体。 |
3717
3718**示例:**
3719
3720```ts
3721import { BusinessError } from '@ohos.base';
3722
3723let videoPlayer: media.VideoPlayer;
3724media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
3725  if (video != null) {
3726    videoPlayer = video;
3727    console.info('video createVideoPlayer success');
3728  } else {
3729    console.error(`video createVideoPlayer fail, error:${error}`);
3730  }
3731});
3732```
3733
3734## media.createVideoPlayer<sup>(deprecated)</sup>
3735
3736createVideoPlayer(): Promise\<VideoPlayer>
3737
3738异步方式创建视频播放实例,通过Promise获取返回值。
3739
3740> **说明:**
3741> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9-1)替代。
3742
3743**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
3744
3745**返回值:**
3746
3747| 类型                                 | 说明                                                         |
3748| ------------------------------------ | ------------------------------------------------------------ |
3749| Promise<[VideoPlayer](#videoplayerdeprecated)> | Promise对象。异步返回VideoPlayer实例,失败时返回null。可用于管理和播放视频媒体。 |
3750
3751**示例:**
3752
3753```ts
3754import { BusinessError } from '@ohos.base';
3755
3756let videoPlayer: media.VideoPlayer;
3757media.createVideoPlayer().then((video: media.VideoPlayer) => {
3758  if (video != null) {
3759    videoPlayer = video;
3760    console.info('video createVideoPlayer success');
3761  } else {
3762    console.error('video createVideoPlayer fail');
3763  }
3764}).catch((error: BusinessError) => {
3765  console.error(`video catchCallback, error:${error}`);
3766});
3767```
3768
3769## media.createAudioRecorder<sup>(deprecated)</sup>
3770
3771createAudioRecorder(): AudioRecorder
3772
3773创建音频录制的实例来控制音频的录制。
3774一台设备只允许创建一个录制实例。
3775
3776> **说明:**
3777> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVRecorder](#mediacreateavrecorder9)替代。
3778
3779**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
3780
3781**返回值:**
3782
3783| 类型                            | 说明                                                         |
3784| ------------------------------- | ------------------------------------------------------------ |
3785| [AudioRecorder](#audiorecorderdeprecated) | 返回AudioRecorder类实例,失败时返回null。可用于录制音频媒体。 |
3786
3787**示例:**
3788
3789```ts
3790let audioRecorder: media.AudioRecorder = media.createAudioRecorder();
3791```
3792
3793## MediaErrorCode<sup>(deprecated)</sup>
3794
3795媒体服务错误类型枚举。
3796
3797> **说明:**
3798> 从API version 8开始支持,从API version 11开始废弃,建议使用[媒体错误码](#averrorcode9)替代。
3799
3800**系统能力:** SystemCapability.Multimedia.Media.Core
3801
3802| 名称                       | 值   | 说明                                   |
3803| -------------------------- | ---- | -------------------------------------- |
3804| MSERR_OK                   | 0    | 表示操作成功。                         |
3805| MSERR_NO_MEMORY            | 1    | 表示申请内存失败,系统可能无可用内存。 |
3806| MSERR_OPERATION_NOT_PERMIT | 2    | 表示无权限执行此操作。                 |
3807| MSERR_INVALID_VAL          | 3    | 表示传入入参无效。                     |
3808| MSERR_IO                   | 4    | 表示发生IO错误。                       |
3809| MSERR_TIMEOUT              | 5    | 表示操作超时。                         |
3810| MSERR_UNKNOWN              | 6    | 表示未知错误。                         |
3811| MSERR_SERVICE_DIED         | 7    | 表示服务端失效。                       |
3812| MSERR_INVALID_STATE        | 8    | 表示在当前状态下,不允许执行此操作。   |
3813| MSERR_UNSUPPORTED          | 9    | 表示在当前版本下,不支持此操作。       |
3814
3815## AudioPlayer<sup>(deprecated)</sup>
3816
3817> **说明:**
3818> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。
3819
3820音频播放管理类,用于管理和播放音频媒体。在调用AudioPlayer的方法前,需要先通过[createAudioPlayer()](#mediacreateaudioplayerdeprecated)构建一个AudioPlayer实例。
3821
3822### 属性<sup>(deprecated)</sup>
3823
3824**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
3825
3826| 名称                            | 类型                                                   | 可读 | 可写 | 说明                                                         |
3827| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
3828| src                             | string                                                 | 是   | 是   | 音频媒体URI,支持当前主流的音频格式(m4a、aac、mp3、ogg、wav)。<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。 |
3829| 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/> |
3830| loop                            | boolean                                                | 是   | 是   | 音频循环播放属性,设置为'true'表示循环播放。                 |
3831| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 是   | 是   | 音频焦点模型。                                               |
3832| currentTime                     | number                                                 | 是   | 否   | 音频的当前播放位置,单位为毫秒(ms)。                       |
3833| duration                        | number                                                 | 是   | 否   | 音频时长,单位为毫秒(ms)。                                 |
3834| state                           | [AudioState](#audiostatedeprecated)                              | 是   | 否   | 可以查询音频播放的状态,该状态不可作为调用play/pause/stop等状态切换的触发条件。 |
3835
3836### play<sup>(deprecated)</sup>
3837
3838play(): void
3839
3840开始播放音频资源,需在'dataLoad'事件成功触发后,才能调用。
3841
3842> **说明:**
3843> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。
3844
3845**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
3846
3847**示例:**
3848
3849```ts
3850audioPlayer.on('play', () => {    //设置'play'事件回调
3851  console.info('audio play success');
3852});
3853audioPlayer.play();
3854```
3855
3856### pause<sup>(deprecated)</sup>
3857
3858pause(): void
3859
3860暂停播放音频资源。
3861
3862> **说明:**
3863> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。
3864
3865**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
3866
3867**示例:**
3868
3869```ts
3870audioPlayer.on('pause', () => {    //设置'pause'事件回调
3871  console.info('audio pause success');
3872});
3873audioPlayer.pause();
3874```
3875
3876### stop<sup>(deprecated)</sup>
3877
3878stop(): void
3879
3880停止播放音频资源。
3881
3882> **说明:**
3883> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。
3884
3885**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
3886
3887**示例:**
3888
3889```ts
3890audioPlayer.on('stop', () => {    //设置'stop'事件回调
3891  console.info('audio stop success');
3892});
3893audioPlayer.stop();
3894```
3895
3896### reset<sup>(deprecated)</sup>
3897
3898reset(): void
3899
3900重置播放音频资源。
3901
3902> **说明:**
3903> 从API version 7开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。
3904
3905**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
3906
3907**示例:**
3908
3909```ts
3910audioPlayer.on('reset', () => {    //设置'reset'事件回调
3911  console.info('audio reset success');
3912});
3913audioPlayer.reset();
3914```
3915
3916### seek<sup>(deprecated)</sup>
3917
3918seek(timeMs: number): void
3919
3920跳转到指定播放位置。
3921
3922> **说明:**
3923> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
3924
3925**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
3926
3927**参数:**
3928
3929| 参数名 | 类型   | 必填 | 说明                                                        |
3930| ------ | ------ | ---- | ----------------------------------------------------------- |
3931| timeMs | number | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围[0, duration]。 |
3932
3933**示例:**
3934
3935```ts
3936audioPlayer.on('timeUpdate', (seekDoneTime: number) => {    //设置'timeUpdate'事件回调
3937  if (seekDoneTime == null) {
3938    console.error('audio seek fail');
3939    return;
3940  }
3941  console.info('audio seek success. seekDoneTime: ' + seekDoneTime);
3942});
3943audioPlayer.seek(30000);    //seek到30000ms的位置
3944```
3945
3946### setVolume<sup>(deprecated)</sup>
3947
3948setVolume(vol: number): void
3949
3950设置音量。
3951
3952> **说明:**
3953> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。
3954
3955**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
3956
3957**参数:**
3958
3959| 参数名 | 类型   | 必填 | 说明                                                         |
3960| ------ | ------ | ---- | ------------------------------------------------------------ |
3961| vol    | number | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
3962
3963**示例:**
3964
3965```ts
3966audioPlayer.on('volumeChange', () => {    //设置'volumeChange'事件回调
3967  console.info('audio volumeChange success');
3968});
3969audioPlayer.setVolume(1);    //设置音量到100%
3970```
3971
3972### release<sup>(deprecated)</sup>
3973
3974release(): void
3975
3976释放音频资源。
3977
3978> **说明:**
3979> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。
3980
3981**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
3982
3983**示例:**
3984
3985```ts
3986audioPlayer.release();
3987audioPlayer = undefined;
3988```
3989
3990### getTrackDescription<sup>(deprecated)</sup>
3991
3992getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
3993
3994通过回调方式获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。
3995
3996> **说明:**
3997> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。
3998
3999**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
4000
4001**参数:**
4002
4003| 参数名   | 类型                                                         | 必填 | 说明                                       |
4004| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ |
4005| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是   | 音频轨道信息MediaDescription数组回调方法。 |
4006
4007**示例:**
4008
4009```ts
4010import { BusinessError } from '@ohos.base';
4011
4012audioPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
4013  if (arrList != null) {
4014    console.info('audio getTrackDescription success');
4015  } else {
4016    console.error(`audio getTrackDescription fail, error:${error}`);
4017  }
4018});
4019```
4020
4021### getTrackDescription<sup>(deprecated)</sup>
4022
4023getTrackDescription(): Promise\<Array\<MediaDescription>>
4024
4025通过Promise方式获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。
4026
4027> **说明:**
4028> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。
4029
4030**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
4031
4032**返回值:**
4033
4034| 类型                                                   | 说明                                            |
4035| ------------------------------------------------------ | ----------------------------------------------- |
4036| Promise<Array<[MediaDescription](#mediadescription8)>> | 音频轨道信息MediaDescription数组Promise返回值。 |
4037
4038**示例:**
4039
4040```ts
4041import { BusinessError } from '@ohos.base';
4042
4043audioPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
4044  console.info('audio getTrackDescription success');
4045}).catch((error: BusinessError) => {
4046  console.error(`audio catchCallback, error:${error}`);
4047});
4048```
4049
4050### on('bufferingUpdate')<sup>(deprecated)</sup>
4051
4052on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
4053
4054开始订阅音频缓存更新事件。仅网络播放支持该订阅事件。
4055
4056> **说明:**
4057> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。
4058
4059**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
4060
4061**参数:**
4062
4063| 参数名   | 类型     | 必填 | 说明                                                         |
4064| -------- | -------- | ---- | ------------------------------------------------------------ |
4065| type     | string   | 是   | 音频缓存事件回调类型,支持的事件:'bufferingUpdate'。        |
4066| callback | function | 是   | 音频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)为BUFFERING_PERCENT或CACHED_DURATION时,value值有效,否则固定为0。 |
4067
4068**示例:**
4069
4070```ts
4071audioPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
4072  console.info('audio bufferingInfo type: ' + infoType);
4073  console.info('audio bufferingInfo value: ' + value);
4074});
4075```
4076
4077### on('play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange')<sup>(deprecated)</sup>
4078
4079on(type: 'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange', callback: () => void): void
4080
4081开始订阅音频播放事件。
4082
4083> **说明:**
4084> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。
4085
4086**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
4087
4088**参数:**
4089
4090| 参数名   | 类型       | 必填 | 说明                                                         |
4091| -------- | ---------- | ---- | ------------------------------------------------------------ |
4092| 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)调用,播放音量改变后触发该事件。 |
4093| callback | () => void | 是   | 播放事件回调方法。                                           |
4094
4095**示例:**
4096
4097```ts
4098import fs from '@ohos.file.fs';
4099import { BusinessError } from '@ohos.base';
4100
4101let audioPlayer: media.AudioPlayer = media.createAudioPlayer();  //创建一个音频播放实例
4102audioPlayer.on('dataLoad', () => {            //设置'dataLoad'事件回调,src属性设置成功后,触发此回调
4103  console.info('audio set source success');
4104  audioPlayer.play();                       //开始播放,并触发'play'事件回调
4105});
4106audioPlayer.on('play', () => {                //设置'play'事件回调
4107  console.info('audio play success');
4108  audioPlayer.seek(30000);                  //调用seek方法,并触发'timeUpdate'事件回调
4109});
4110audioPlayer.on('pause', () => {               //设置'pause'事件回调
4111  console.info('audio pause success');
4112  audioPlayer.stop();                       //停止播放,并触发'stop'事件回调
4113});
4114audioPlayer.on('reset', () => {               //设置'reset'事件回调
4115  console.info('audio reset success');
4116  audioPlayer.release();                    //释放播放实例资源
4117  audioPlayer = undefined;
4118});
4119audioPlayer.on('timeUpdate', (seekDoneTime: number) => {  //设置'timeUpdate'事件回调
4120  if (seekDoneTime == null) {
4121    console.error('audio seek fail');
4122    return;
4123  }
4124  console.info('audio seek success, and seek time is ' + seekDoneTime);
4125  audioPlayer.setVolume(0.5);                //设置音量为50%,并触发'volumeChange'事件回调
4126});
4127audioPlayer.on('volumeChange', () => {         //设置'volumeChange'事件回调
4128  console.info('audio volumeChange success');
4129  audioPlayer.pause();                       //暂停播放,并触发'pause'事件回调
4130});
4131audioPlayer.on('finish', () => {               //设置'finish'事件回调
4132  console.info('audio play finish');
4133  audioPlayer.stop();                        //停止播放,并触发'stop'事件回调
4134});
4135audioPlayer.on('error', (error: BusinessError) => {  //设置'error'事件回调
4136  console.error(`audio error called, error: ${error}`);
4137});
4138
4139// 用户选择音频设置fd(本地播放)
4140let fdPath = 'fd://';
4141// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" 命令,将其推送到设备上
4142let path = '/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3';
4143fs.open(path).then((file) => {
4144  fdPath = fdPath + '' + file.fd;
4145  console.info('open fd success fd is' + fdPath);
4146  audioPlayer.src = fdPath;  //设置src属性,并触发'dataLoad'事件回调
4147}, (err: BusinessError) => {
4148  console.error('open fd failed err is' + err);
4149}).catch((err: BusinessError) => {
4150  console.error('open fd failed err is' + err);
4151});
4152```
4153
4154### on('timeUpdate')<sup>(deprecated)</sup>
4155
4156on(type: 'timeUpdate', callback: Callback\<number>): void
4157
4158开始订阅音频播放时间更新事件。处于播放状态时,每隔1s上报一次该事件。
4159
4160> **说明:**
4161> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('timeUpdate')](#ontimeupdate9)替代。
4162
4163**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
4164
4165**参数:**
4166
4167| 参数名   | 类型              | 必填 | 说明                                                         |
4168| -------- | ----------------- | ---- | ------------------------------------------------------------ |
4169| type     | string            | 是   | 播放事件回调类型,支持的事件包括:'timeUpdate'。<br>- 'timeUpdate':音频播放时间戳更新,开始播放后自动触发该事件。 |
4170| callback | Callback\<number> | 是   | 播放事件回调方法。回调方法入参为更新后的时间戳。             |
4171
4172**示例:**
4173
4174```ts
4175audioPlayer.on('timeUpdate', (newTime: number) => {    //设置'timeUpdate'事件回调
4176  if (newTime == null) {
4177    console.error('audio timeUpadate fail');
4178    return;
4179  }
4180  console.info('audio timeUpadate success. seekDoneTime: ' + newTime);
4181});
4182audioPlayer.play();    //开始播放后,自动触发时间戳更新事件
4183```
4184
4185### on('audioInterrupt')<sup>(deprecated)</sup>
4186
4187on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
4188
4189监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。
4190
4191> **说明:**
4192> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。
4193
4194**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
4195
4196**参数:**
4197
4198| 参数名   | 类型                                                         | 必填 | 说明                                                     |
4199| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
4200| type     | string                                                       | 是   | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 |
4201| callback | function  | 是   | 音频焦点变化事件回调方法。                               |
4202
4203**示例:**
4204
4205```ts
4206import audio from '@ohos.multimedia.audio';
4207
4208audioPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
4209  console.info('audioInterrupt success,and InterruptEvent info is:' + info)
4210})
4211```
4212
4213### on('error')<sup>(deprecated)</sup>
4214
4215on(type: 'error', callback: ErrorCallback): void
4216
4217开始订阅音频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。
4218
4219> **说明:**
4220> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。
4221
4222**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
4223
4224**参数:**
4225
4226| 参数名   | 类型          | 必填 | 说明                                                         |
4227| -------- | ------------- | ---- | ------------------------------------------------------------ |
4228| type     | string        | 是   | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':音频播放中发生错误,触发该事件。 |
4229| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 播放错误事件回调方法。                                       |
4230
4231**示例:**
4232
4233```ts
4234import { BusinessError } from '@ohos.base';
4235
4236audioPlayer.on('error', (error: BusinessError) => {  //设置'error'事件回调
4237  console.error(`audio error called, error: ${error}`);
4238});
4239audioPlayer.setVolume(3);  //设置volume为无效值,触发'error'事件
4240```
4241
4242## AudioState<sup>(deprecated)</sup>
4243
4244音频播放的状态机。可通过state属性获取当前状态。
4245
4246> **说明:**
4247> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。
4248
4249**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
4250
4251| 名称    | 类型   | 说明                                           |
4252| ------- | ------ | ---------------------------------------------- |
4253| idle    | string | 音频播放空闲,dataload/reset成功后处于此状态。 |
4254| playing | string | 音频正在播放,play成功后处于此状态。           |
4255| paused  | string | 音频暂停播放,pause成功后处于此状态。          |
4256| stopped | string | 音频播放停止,stop/播放结束后处于此状态。      |
4257| error   | string | 错误状态。                                     |
4258
4259## VideoPlayer<sup>(deprecated)</sup>
4260
4261> **说明:**
4262> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。
4263
4264视频播放管理类,用于管理和播放视频媒体。在调用VideoPlayer的方法前,需要先通过[createVideoPlayer()](#mediacreatevideoplayerdeprecated)构建一个VideoPlayer实例。
4265
4266### 属性
4267
4268**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4269
4270| 名称                            | 类型                                                   | 可读 | 可写 | 说明                                                         |
4271| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
4272| 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。 |
4273| 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/> |
4274| loop<sup>8+</sup>               | boolean                                                | 是   | 是   | 视频循环播放属性,设置为'true'表示循环播放。                 |
4275| videoScaleType<sup>9+</sup>     | [VideoScaleType](#videoscaletype9)                     | 是   | 是   | 视频缩放模式。默认值为VIDEO_SCALE_TYPE_FIT。                                               |
4276| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 是   | 是   | 音频焦点模型。                                               |
4277| currentTime<sup>8+</sup>        | number                                                 | 是   | 否   | 视频的当前播放位置,单位为毫秒(ms)。                       |
4278| duration<sup>8+</sup>           | number                                                 | 是   | 否   | 视频时长,单位为毫秒(ms),返回-1表示直播模式。             |
4279| state<sup>8+</sup>              | [VideoPlayState](#videoplaystatedeprecated)                    | 是   | 否   | 视频播放的状态。                                             |
4280| width<sup>8+</sup>              | number                                                 | 是   | 否   | 视频宽,单位为像素(px)。                                   |
4281| height<sup>8+</sup>             | number                                                 | 是   | 否   | 视频高,单位为像素(px)。                                   |
4282
4283### setDisplaySurface<sup>(deprecated)</sup>
4284
4285setDisplaySurface(surfaceId: string, callback: AsyncCallback\<void>): void
4286
4287通过回调方式设置SurfaceId。
4288
4289*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。
4290
4291> **说明:**
4292> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。
4293
4294**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4295
4296**参数:**
4297
4298| 参数名    | 类型                 | 必填 | 说明                      |
4299| --------- | -------------------- | ---- | ------------------------- |
4300| surfaceId | string               | 是   | SurfaceId                 |
4301| callback  | AsyncCallback\<void> | 是   | 设置SurfaceId的回调方法。 |
4302
4303**示例:**
4304
4305```ts
4306import { BusinessError } from '@ohos.base';
4307
4308let surfaceId: string = '';
4309videoPlayer.setDisplaySurface(surfaceId, (err: BusinessError) => {
4310  if (err == null) {
4311    console.info('setDisplaySurface success!');
4312  } else {
4313    console.error('setDisplaySurface fail!');
4314  }
4315});
4316```
4317
4318### setDisplaySurface<sup>(deprecated)</sup>
4319
4320setDisplaySurface(surfaceId: string): Promise\<void>
4321
4322通过Promise方式设置SurfaceId。
4323
4324*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。
4325
4326> **说明:**
4327> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。
4328
4329**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4330
4331**参数:**
4332
4333| 参数名    | 类型   | 必填 | 说明      |
4334| --------- | ------ | ---- | --------- |
4335| surfaceId | string | 是   | SurfaceId |
4336
4337**返回值:**
4338
4339| 类型           | 说明                           |
4340| -------------- | ------------------------------ |
4341| Promise\<void> | 设置SurfaceId的Promise返回值。 |
4342
4343**示例:**
4344
4345```ts
4346import { BusinessError } from '@ohos.base';
4347
4348let surfaceId: string = '';
4349videoPlayer.setDisplaySurface(surfaceId).then(() => {
4350  console.info('setDisplaySurface success');
4351}).catch((error: BusinessError) => {
4352  console.error(`video catchCallback, error:${error}`);
4353});
4354```
4355
4356### prepare<sup>(deprecated)</sup>
4357
4358prepare(callback: AsyncCallback\<void>): void
4359
4360通过回调方式准备播放视频。
4361
4362> **说明:**
4363> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9)替代。
4364
4365**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4366
4367**参数:**
4368
4369| 参数名   | 类型                 | 必填 | 说明                     |
4370| -------- | -------------------- | ---- | ------------------------ |
4371| callback | AsyncCallback\<void> | 是   | 准备播放视频的回调方法。 |
4372
4373**示例:**
4374
4375```ts
4376import { BusinessError } from '@ohos.base';
4377
4378videoPlayer.prepare((err: BusinessError) => {
4379  if (err == null) {
4380    console.info('prepare success!');
4381  } else {
4382    console.error('prepare fail!');
4383  }
4384});
4385```
4386
4387### prepare<sup>(deprecated)</sup>
4388
4389prepare(): Promise\<void>
4390
4391通过Promise方式准备播放视频。
4392
4393> **说明:**
4394> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9-1)替代。
4395
4396**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4397
4398**返回值:**
4399
4400| 类型           | 说明                          |
4401| -------------- | ----------------------------- |
4402| Promise\<void> | 准备播放视频的Promise返回值。 |
4403
4404**示例:**
4405
4406```ts
4407import { BusinessError } from '@ohos.base';
4408
4409videoPlayer.prepare().then(() => {
4410  console.info('prepare success');
4411}).catch((error: BusinessError) => {
4412  console.error(`video catchCallback, error:${error}`);
4413});
4414```
4415
4416### play<sup>(deprecated)</sup>
4417
4418play(callback: AsyncCallback\<void>): void
4419
4420通过回调方式开始播放视频。
4421
4422> **说明:**
4423> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。
4424
4425**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4426
4427**参数:**
4428
4429| 参数名   | 类型                 | 必填 | 说明                     |
4430| -------- | -------------------- | ---- | ------------------------ |
4431| callback | AsyncCallback\<void> | 是   | 开始播放视频的回调方法。 |
4432
4433**示例:**
4434
4435```ts
4436import { BusinessError } from '@ohos.base';
4437
4438videoPlayer.play((err: BusinessError) => {
4439  if (err == null) {
4440    console.info('play success!');
4441  } else {
4442    console.error('play fail!');
4443  }
4444});
4445```
4446
4447### play<sup>(deprecated)</sup>
4448
4449play(): Promise\<void>
4450
4451通过Promise方式开始播放视频。
4452
4453> **说明:**
4454> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9-1)替代。
4455
4456**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4457
4458**返回值:**
4459
4460| 类型           | 说明                          |
4461| -------------- | ----------------------------- |
4462| Promise\<void> | 开始播放视频的Promise返回值。 |
4463
4464**示例:**
4465
4466```ts
4467import { BusinessError } from '@ohos.base';
4468
4469videoPlayer.play().then(() => {
4470  console.info('play success');
4471}).catch((error: BusinessError) => {
4472  console.error(`video catchCallback, error:${error}`);
4473});
4474```
4475
4476### pause<sup>(deprecated)</sup>
4477
4478pause(callback: AsyncCallback\<void>): void
4479
4480通过回调方式暂停播放视频。
4481
4482> **说明:**
4483> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。
4484
4485**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4486
4487**参数:**
4488
4489| 参数名   | 类型                 | 必填 | 说明                     |
4490| -------- | -------------------- | ---- | ------------------------ |
4491| callback | AsyncCallback\<void> | 是   | 暂停播放视频的回调方法。 |
4492
4493**示例:**
4494
4495```ts
4496import { BusinessError } from '@ohos.base';
4497
4498videoPlayer.pause((err: BusinessError) => {
4499  if (err == null) {
4500    console.info('pause success!');
4501  } else {
4502    console.error('pause fail!');
4503  }
4504});
4505```
4506
4507### pause<sup>(deprecated)</sup>
4508
4509pause(): Promise\<void>
4510
4511通过Promise方式暂停播放视频。
4512
4513> **说明:**
4514> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9-1)替代。
4515
4516**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4517
4518**返回值:**
4519
4520| 类型           | 说明                          |
4521| -------------- | ----------------------------- |
4522| Promise\<void> | 暂停播放视频的Promise返回值。 |
4523
4524**示例:**
4525
4526```ts
4527import { BusinessError } from '@ohos.base';
4528
4529videoPlayer.pause().then(() => {
4530  console.info('pause success');
4531}).catch((error: BusinessError) => {
4532  console.error(`video catchCallback, error:${error}`);
4533});
4534```
4535
4536### stop<sup>(deprecated)</sup>
4537
4538stop(callback: AsyncCallback\<void>): void
4539
4540通过回调方式停止播放视频。
4541
4542> **说明:**
4543> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。
4544
4545**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4546
4547**参数:**
4548
4549| 参数名   | 类型                 | 必填 | 说明                     |
4550| -------- | -------------------- | ---- | ------------------------ |
4551| callback | AsyncCallback\<void> | 是   | 停止播放视频的回调方法。 |
4552
4553**示例:**
4554
4555```ts
4556import { BusinessError } from '@ohos.base';
4557
4558videoPlayer.stop((err: BusinessError) => {
4559  if (err == null) {
4560    console.info('stop success!');
4561  } else {
4562    console.error('stop fail!');
4563  }
4564});
4565```
4566
4567### stop<sup>(deprecated)</sup>
4568
4569stop(): Promise\<void>
4570
4571通过Promise方式停止播放视频。
4572
4573> **说明:**
4574> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9-1)替代。
4575
4576**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4577
4578**返回值:**
4579
4580| 类型           | 说明                          |
4581| -------------- | ----------------------------- |
4582| Promise\<void> | 停止播放视频的Promise返回值。 |
4583
4584**示例:**
4585
4586```ts
4587import { BusinessError } from '@ohos.base';
4588
4589videoPlayer.stop().then(() => {
4590  console.info('stop success');
4591}).catch((error: BusinessError) => {
4592  console.error(`video catchCallback, error:${error}`);
4593});
4594```
4595
4596### reset<sup>(deprecated)</sup>
4597
4598reset(callback: AsyncCallback\<void>): void
4599
4600通过回调方式重置播放视频。
4601
4602> **说明:**
4603> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。
4604
4605**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4606
4607**参数:**
4608
4609| 参数名   | 类型                 | 必填 | 说明                     |
4610| -------- | -------------------- | ---- | ------------------------ |
4611| callback | AsyncCallback\<void> | 是   | 切换播放视频的回调方法。 |
4612
4613**示例:**
4614
4615```ts
4616import { BusinessError } from '@ohos.base';
4617
4618videoPlayer.reset((err: BusinessError) => {
4619  if (err == null) {
4620    console.info('reset success!');
4621  } else {
4622    console.error('reset fail!');
4623  }
4624});
4625```
4626
4627### reset<sup>(deprecated)</sup>
4628
4629reset(): Promise\<void>
4630
4631通过Promise方式重置播放视频。
4632
4633> **说明:**
4634> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9-1)替代。
4635
4636**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4637
4638**返回值:**
4639
4640| 类型           | 说明                          |
4641| -------------- | ----------------------------- |
4642| Promise\<void> | 切换播放视频的Promise返回值。 |
4643
4644**示例:**
4645
4646```ts
4647import { BusinessError } from '@ohos.base';
4648
4649videoPlayer.reset().then(() => {
4650  console.info('reset success');
4651}).catch((error: BusinessError) => {
4652  console.error(`video catchCallback, error:${error}`);
4653});
4654```
4655
4656### seek<sup>(deprecated)</sup>
4657
4658seek(timeMs: number, callback: AsyncCallback\<number>): void
4659
4660通过回调方式跳转到指定播放位置,默认跳转到指定时间点的上一个关键帧。
4661
4662> **说明:**
4663> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
4664
4665**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4666
4667**参数:**
4668
4669| 参数名   | 类型                   | 必填 | 说明                                                         |
4670| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
4671| timeMs   | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 |
4672| callback | AsyncCallback\<number> | 是   | 跳转到指定播放位置的回调方法。                               |
4673
4674**示例:**
4675
4676```ts
4677import { BusinessError } from '@ohos.base';
4678
4679let videoPlayer: media.VideoPlayer;
4680media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
4681  if (video != null) {
4682    videoPlayer = video;
4683    console.info('video createVideoPlayer success');
4684  } else {
4685    console.error(`video createVideoPlayer fail, error:${error}`);
4686  }
4687});
4688
4689let seekTime: number = 5000;
4690videoPlayer.seek(seekTime, (err: BusinessError, result: number) => {
4691  if (err == null) {
4692    console.info('seek success!');
4693  } else {
4694    console.error('seek fail!');
4695  }
4696});
4697```
4698
4699### seek<sup>(deprecated)</sup>
4700
4701seek(timeMs: number, mode:SeekMode, callback: AsyncCallback\<number>): void
4702
4703通过回调方式跳转到指定播放位置。
4704
4705> **说明:**
4706> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
4707
4708**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4709
4710**参数:**
4711
4712| 参数名   | 类型                   | 必填 | 说明                                                         |
4713| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
4714| timeMs   | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 |
4715| mode     | [SeekMode](#seekmode8) | 是   | 跳转模式。                                                   |
4716| callback | AsyncCallback\<number> | 是   | 跳转到指定播放位置的回调方法。                               |
4717
4718**示例:**
4719
4720```ts
4721import { BusinessError } from '@ohos.base';
4722
4723let videoPlayer: media.VideoPlayer | null = null;
4724media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
4725  if (video != null) {
4726    videoPlayer = video;
4727    console.info('video createVideoPlayer success');
4728  } else {
4729    console.error(`video createVideoPlayer fail, error:${error}`);
4730  }
4731});
4732let seekTime: number = 5000;
4733if (videoPlayer) {
4734  (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC, (err: BusinessError, result: number) => {
4735    if (err == null) {
4736      console.info('seek success!');
4737    } else {
4738      console.error('seek fail!');
4739    }
4740  });
4741}
4742```
4743
4744### seek<sup>(deprecated)</sup>
4745
4746seek(timeMs: number, mode?:SeekMode): Promise\<number>
4747
4748通过Promise方式跳转到指定播放位置,如果没有设置mode则跳转到指定时间点的上一个关键帧。
4749
4750> **说明:**
4751> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
4752
4753**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4754
4755**参数:**
4756
4757| 参数名 | 类型                   | 必填 | 说明                                                         |
4758| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
4759| timeMs | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 |
4760| mode   | [SeekMode](#seekmode8) | 否   | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式。            |
4761
4762**返回值:**
4763
4764| 类型             | 说明                                        |
4765| ---------------- | ------------------------------------------- |
4766| Promise\<number> | 跳转到指定播放位置的Promise返回值,单位ms。 |
4767
4768**示例:**
4769
4770```ts
4771import { BusinessError } from '@ohos.base';
4772
4773let videoPlayer: media.VideoPlayer | null = null;
4774media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
4775  if (video != null) {
4776    videoPlayer = video;
4777    console.info('video createVideoPlayer success');
4778  } else {
4779    console.error(`video createVideoPlayer fail, error:${error}`);
4780  }
4781});
4782let seekTime: number = 5000;
4783if (videoPlayer) {
4784  (videoPlayer as media.VideoPlayer).seek(seekTime).then((seekDoneTime: number) => { // seekDoneTime表示seek完成后的时间点
4785    console.info('seek success');
4786  }).catch((error: BusinessError) => {
4787    console.error(`video catchCallback, error:${error}`);
4788  });
4789
4790  (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime: number) => {
4791    console.info('seek success');
4792  }).catch((error: BusinessError) => {
4793    console.error(`video catchCallback, error:${error}`);
4794  });
4795}
4796```
4797
4798### setVolume<sup>(deprecated)</sup>
4799
4800setVolume(vol: number, callback: AsyncCallback\<void>): void
4801
4802通过回调方式设置音量。
4803
4804> **说明:**
4805> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。
4806
4807**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4808
4809**参数:**
4810
4811| 参数名   | 类型                 | 必填 | 说明                                                         |
4812| -------- | -------------------- | ---- | ------------------------------------------------------------ |
4813| vol      | number               | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
4814| callback | AsyncCallback\<void> | 是   | 设置音量的回调方法。                                         |
4815
4816**示例:**
4817
4818```ts
4819import { BusinessError } from '@ohos.base';
4820
4821let vol: number = 0.5;
4822videoPlayer.setVolume(vol, (err: BusinessError) => {
4823  if (err == null) {
4824    console.info('setVolume success!');
4825  } else {
4826    console.error('setVolume fail!');
4827  }
4828});
4829```
4830
4831### setVolume<sup>(deprecated)</sup>
4832
4833setVolume(vol: number): Promise\<void>
4834
4835通过Promise方式设置音量。
4836
4837> **说明:**
4838> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。
4839
4840**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4841
4842**参数:**
4843
4844| 参数名 | 类型   | 必填 | 说明                                                         |
4845| ------ | ------ | ---- | ------------------------------------------------------------ |
4846| vol    | number | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
4847
4848**返回值:**
4849
4850| 类型           | 说明                      |
4851| -------------- | ------------------------- |
4852| Promise\<void> | 设置音量的Promise返回值。 |
4853
4854**示例:**
4855
4856```ts
4857import { BusinessError } from '@ohos.base';
4858
4859let vol: number = 0.5;
4860videoPlayer.setVolume(vol).then(() => {
4861  console.info('setVolume success');
4862}).catch((error: BusinessError) => {
4863  console.error(`video catchCallback, error:${error}`);
4864});
4865```
4866
4867### release<sup>(deprecated)</sup>
4868
4869release(callback: AsyncCallback\<void>): void
4870
4871通过回调方式释放视频资源。
4872
4873> **说明:**
4874> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。
4875
4876**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4877
4878**参数:**
4879
4880| 参数名   | 类型                 | 必填 | 说明                     |
4881| -------- | -------------------- | ---- | ------------------------ |
4882| callback | AsyncCallback\<void> | 是   | 释放视频资源的回调方法。 |
4883
4884**示例:**
4885
4886```ts
4887import { BusinessError } from '@ohos.base';
4888
4889videoPlayer.release((err: BusinessError) => {
4890  if (err == null) {
4891    console.info('release success!');
4892  } else {
4893    console.error('release fail!');
4894  }
4895});
4896```
4897
4898### release<sup>(deprecated)</sup>
4899
4900release(): Promise\<void>
4901
4902通过Promise方式释放视频资源。
4903
4904> **说明:**
4905> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9-1)替代。
4906
4907**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4908
4909**返回值:**
4910
4911| 类型           | 说明                          |
4912| -------------- | ----------------------------- |
4913| Promise\<void> | 释放视频资源的Promise返回值。 |
4914
4915**示例:**
4916
4917```ts
4918import { BusinessError } from '@ohos.base';
4919
4920videoPlayer.release().then(() => {
4921  console.info('release success');
4922}).catch((error: BusinessError) => {
4923  console.error(`video catchCallback, error:${error}`);
4924});
4925```
4926
4927### getTrackDescription<sup>(deprecated)</sup>
4928
4929getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
4930
4931通过回调方式获取视频轨道信息。
4932
4933> **说明:**
4934> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。
4935
4936**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4937
4938**参数:**
4939
4940| 参数名   | 类型                                                         | 必填 | 说明                                       |
4941| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ |
4942| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是   | 视频轨道信息MediaDescription数组回调方法。 |
4943
4944**示例:**
4945
4946```ts
4947import { BusinessError } from '@ohos.base';
4948
4949videoPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
4950  if ((arrList) != null) {
4951    console.info('video getTrackDescription success');
4952  } else {
4953    console.error(`video getTrackDescription fail, error:${error}`);
4954  }
4955});
4956```
4957
4958### getTrackDescription<sup>(deprecated)</sup>
4959
4960getTrackDescription(): Promise\<Array\<MediaDescription>>
4961
4962通过Promise方式获取视频轨道信息。
4963
4964> **说明:**
4965> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。
4966
4967**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
4968
4969**返回值:**
4970
4971| 类型                                                   | 说明                                            |
4972| ------------------------------------------------------ | ----------------------------------------------- |
4973| Promise<Array<[MediaDescription](#mediadescription8)>> | 视频轨道信息MediaDescription数组Promise返回值。 |
4974
4975**示例:**
4976
4977```ts
4978import { BusinessError } from '@ohos.base';
4979
4980videoPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
4981  if (arrList != null) {
4982    console.info('video getTrackDescription success');
4983  } else {
4984    console.error('video getTrackDescription fail');
4985  }
4986}).catch((error: BusinessError) => {
4987  console.error(`video catchCallback, error:${error}`);
4988});
4989```
4990
4991### setSpeed<sup>(deprecated)</sup>
4992
4993setSpeed(speed: number, callback: AsyncCallback\<number>): void
4994
4995通过回调方式设置播放速度。
4996
4997> **说明:**
4998> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。
4999
5000**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5001
5002**参数:**
5003
5004| 参数名   | 类型                   | 必填 | 说明                                                       |
5005| -------- | ---------------------- | ---- | ---------------------------------------------------------- |
5006| speed    | number                 | 是   | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 |
5007| callback | AsyncCallback\<number> | 是   | 设置播放速度的回调方法。                                   |
5008
5009**示例:**
5010
5011```ts
5012import { BusinessError } from '@ohos.base';
5013
5014let videoPlayer: media.VideoPlayer | null = null;
5015media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
5016  if (video != null) {
5017    videoPlayer = video;
5018    console.info('video createVideoPlayer success');
5019  } else {
5020    console.error(`video createVideoPlayer fail, error:${error}`);
5021  }
5022});
5023let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;
5024if (videoPlayer) {
5025  (videoPlayer as media.VideoPlayer).setSpeed(speed, (err: BusinessError, result: number) => {
5026    if (err == null) {
5027      console.info('setSpeed success!');
5028    } else {
5029      console.error('setSpeed fail!');
5030    }
5031  });
5032}
5033```
5034
5035### setSpeed<sup>(deprecated)</sup>
5036
5037setSpeed(speed: number): Promise\<number>
5038
5039通过Promise方式设置播放速度。
5040
5041> **说明:**
5042> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。
5043
5044**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5045
5046**参数:**
5047
5048| 参数名 | 类型   | 必填 | 说明                                                       |
5049| ------ | ------ | ---- | ---------------------------------------------------------- |
5050| speed  | number | 是   | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 |
5051
5052**返回值:**
5053
5054| 类型             | 说明                                                         |
5055| ---------------- | ------------------------------------------------------------ |
5056| Promise\<number> | 播放速度Promise返回值,具体见[PlaybackSpeed](#playbackspeed8)。 |
5057
5058**示例:**
5059
5060```ts
5061import { BusinessError } from '@ohos.base';
5062
5063let videoPlayer: media.VideoPlayer | null = null;
5064media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
5065  if (video != null) {
5066    videoPlayer = video;
5067    console.info('video createVideoPlayer success');
5068  } else {
5069    console.error(`video createVideoPlayer fail, error:${error}`);
5070  }
5071});
5072let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;
5073if (videoPlayer) {
5074  (videoPlayer as media.VideoPlayer).setSpeed(speed).then((result: number) => {
5075    console.info('setSpeed success');
5076  }).catch((error: BusinessError) => {
5077    console.error(`video catchCallback, error:${error}`);
5078  });
5079}
5080```
5081
5082### on('playbackCompleted')<sup>(deprecated)</sup>
5083
5084on(type: 'playbackCompleted', callback: Callback\<void>): void
5085
5086开始监听视频播放完成事件。
5087
5088> **说明:**
5089> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。
5090
5091**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5092
5093**参数:**
5094
5095| 参数名   | 类型     | 必填 | 说明                                                        |
5096| -------- | -------- | ---- | ----------------------------------------------------------- |
5097| type     | string   | 是   | 视频播放完成事件回调类型,支持的事件:'playbackCompleted'。 |
5098| callback | Callback\<void> | 是   | 视频播放完成事件回调方法。                                  |
5099
5100**示例:**
5101
5102```ts
5103videoPlayer.on('playbackCompleted', () => {
5104  console.info('playbackCompleted success!');
5105});
5106```
5107
5108### on('bufferingUpdate')<sup>(deprecated)</sup>
5109
5110on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
5111
5112开始监听视频缓存更新事件。仅网络播放支持该订阅事件。
5113
5114> **说明:**
5115> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。
5116
5117**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5118
5119**参数:**
5120
5121| 参数名   | 类型     | 必填 | 说明                                                         |
5122| -------- | -------- | ---- | ------------------------------------------------------------ |
5123| type     | string   | 是   | 视频缓存事件回调类型,支持的事件:'bufferingUpdate'。        |
5124| callback | function | 是   | 视频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)为BUFFERING_PERCENT或CACHED_DURATION时,value值有效,否则固定为0。 |
5125
5126**示例:**
5127
5128```ts
5129videoPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
5130  console.info('video bufferingInfo type: ' + infoType);
5131  console.info('video bufferingInfo value: ' + value);
5132});
5133```
5134
5135### on('startRenderFrame')<sup>(deprecated)</sup>
5136
5137on(type: 'startRenderFrame', callback: Callback\<void>): void
5138
5139开始监听视频播放首帧送显上报事件。
5140
5141> **说明:**
5142> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('startRenderFrame')](#onstartrenderframe9)替代。
5143
5144**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5145
5146**参数:**
5147
5148| 参数名   | 类型            | 必填 | 说明                                                         |
5149| -------- | --------------- | ---- | ------------------------------------------------------------ |
5150| type     | string          | 是   | 视频播放首帧送显上报事件回调类型,支持的事件:'startRenderFrame'。 |
5151| callback | Callback\<void> | 是   | 视频播放首帧送显上报事件回调方法。                           |
5152
5153**示例:**
5154
5155```ts
5156videoPlayer.on('startRenderFrame', () => {
5157  console.info('startRenderFrame success!');
5158});
5159```
5160
5161### on('videoSizeChanged')<sup>(deprecated)</sup>
5162
5163on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void
5164
5165开始监听视频播放宽高变化事件。
5166
5167> **说明:**
5168> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('videoSizeChange')](#onvideosizechange9)替代。
5169
5170**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5171
5172**参数:**
5173
5174| 参数名   | 类型     | 必填 | 说明                                                         |
5175| -------- | -------- | ---- | ------------------------------------------------------------ |
5176| type     | string   | 是   | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChanged'。 |
5177| callback | function | 是   | 视频播放宽高变化事件回调方法,width表示宽,height表示高。    |
5178
5179**示例:**
5180
5181```ts
5182videoPlayer.on('videoSizeChanged', (width: number, height: number) => {
5183  console.info('video width is: ' + width);
5184  console.info('video height is: ' + height);
5185});
5186```
5187### on('audioInterrupt')<sup>(deprecated)</sup>
5188
5189on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
5190
5191监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。
5192
5193> **说明:**
5194> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。
5195
5196**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5197
5198**参数:**
5199
5200| 参数名   | 类型                                                         | 必填 | 说明                                                     |
5201| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
5202| type     | string                                                       | 是   | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 |
5203| callback | function | 是   | 音频焦点变化事件回调方法。                               |
5204
5205**示例:**
5206
5207```ts
5208import audio from '@ohos.multimedia.audio';
5209
5210videoPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
5211  console.info('audioInterrupt success,and InterruptEvent info is:' + info)
5212})
5213```
5214
5215### on('error')<sup>(deprecated)</sup>
5216
5217on(type: 'error', callback: ErrorCallback): void
5218
5219开始监听视频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。
5220
5221> **说明:**
5222> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。
5223
5224**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5225
5226**参数:**
5227
5228| 参数名   | 类型          | 必填 | 说明                                                         |
5229| -------- | ------------- | ---- | ------------------------------------------------------------ |
5230| type     | string        | 是   | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':视频播放中发生错误,触发该事件。 |
5231| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 播放错误事件回调方法。                                       |
5232
5233**示例:**
5234
5235```ts
5236import { BusinessError } from '@ohos.base';
5237
5238videoPlayer.on('error', (error: BusinessError) => {  // 设置'error'事件回调
5239  console.error(`video error called, error: ${error}`);
5240});
5241videoPlayer.url = 'fd://error';  //设置错误的播放地址,触发'error'事件
5242```
5243
5244## VideoPlayState<sup>(deprecated)</sup>
5245
5246视频播放的状态机,可通过state属性获取当前状态。
5247
5248> **说明:**
5249> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。
5250
5251**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5252
5253| 名称     | 类型   | 说明           |
5254| -------- | ------ | -------------- |
5255| idle     | string | 视频播放空闲。 |
5256| prepared | string | 视频播放准备。 |
5257| playing  | string | 视频正在播放。 |
5258| paused   | string | 视频暂停播放。 |
5259| stopped  | string | 视频播放停止。 |
5260| error    | string | 错误状态。     |
5261
5262## AudioRecorder<sup>(deprecated)</sup>
5263
5264> **说明:**
5265> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder](#avrecorder9)替代。
5266
5267音频录制管理类,用于录制音频媒体。在调用AudioRecorder的方法前,需要先通过[createAudioRecorder()](#mediacreateaudiorecorderdeprecated) 构建一个AudioRecorder实例。
5268
5269### prepare<sup>(deprecated)</sup>
5270
5271prepare(config: AudioRecorderConfig): void
5272
5273录音准备。
5274
5275> **说明:**
5276> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.prepare](#prepare9-2)替代。
5277
5278**需要权限:** ohos.permission.MICROPHONE
5279
5280**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5281
5282**参数:**
5283
5284| 参数名 | 类型                                        | 必填 | 说明                                                         |
5285| ------ | ------------------------------------------- | ---- | ------------------------------------------------------------ |
5286| config | [AudioRecorderConfig](#audiorecorderconfigdeprecated) | 是   | 配置录音的相关参数,包括音频输出URI、编码格式、采样率、声道数、输出格式等。 |
5287
5288**示例:**
5289
5290```ts
5291let audioRecorderConfig: media.AudioRecorderConfig = {
5292  audioEncoder : media.AudioEncoder.AAC_LC,
5293  audioEncodeBitRate : 22050,
5294  audioSampleRate : 22050,
5295  numberOfChannels : 2,
5296  format : media.AudioOutputFormat.AAC_ADTS,
5297  uri : 'fd://1',       // 文件需先由调用者创建,并给予适当的权限
5298  location : { latitude : 30, longitude : 130},
5299}
5300audioRecorder.on('prepare', () => {    //设置'prepare'事件回调
5301  console.info('prepare success');
5302});
5303audioRecorder.prepare(audioRecorderConfig);
5304```
5305
5306### start<sup>(deprecated)</sup>
5307
5308start(): void
5309
5310开始录制,需在'prepare'事件成功触发后,才能调用start方法。
5311
5312> **说明:**
5313> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.start](#start9)替代。
5314
5315**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5316
5317**示例:**
5318
5319```ts
5320audioRecorder.on('start', () => {    //设置'start'事件回调
5321  console.info('audio recorder start success');
5322});
5323audioRecorder.start();
5324```
5325
5326### pause<sup>(deprecated)</sup>
5327
5328pause():void
5329
5330暂停录制,需要在'start'事件成功触发后,才能调用pause方法。
5331
5332> **说明:**
5333> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.pause](#pause9-2)替代。
5334
5335**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5336
5337**示例:**
5338
5339```ts
5340audioRecorder.on('pause', () => {    //设置'pause'事件回调
5341  console.info('audio recorder pause success');
5342});
5343audioRecorder.pause();
5344```
5345
5346### resume<sup>(deprecated)</sup>
5347
5348resume():void
5349
5350恢复录制,需要在'pause'事件成功触发后,才能调用resume方法。
5351
5352> **说明:**
5353> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.resume](#resume9)替代。
5354
5355**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5356
5357**示例:**
5358
5359```ts
5360audioRecorder.on('resume', () => {    //设置'resume'事件回调
5361  console.info('audio recorder resume success');
5362});
5363audioRecorder.resume();
5364```
5365
5366### stop<sup>(deprecated)</sup>
5367
5368stop(): void
5369
5370停止录音。
5371
5372> **说明:**
5373> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.stop](#stop9-2)替代。
5374
5375**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5376
5377**示例:**
5378
5379```ts
5380audioRecorder.on('stop', () => {    //设置'stop'事件回调
5381  console.info('audio recorder stop success');
5382});
5383audioRecorder.stop();
5384```
5385
5386### release<sup>(deprecated)</sup>
5387
5388release(): void
5389
5390释放录音资源。
5391
5392> **说明:**
5393> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.release](#release9-2)替代。
5394
5395**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5396
5397**示例:**
5398
5399```ts
5400audioRecorder.on('release', () => {    //设置'release'事件回调
5401  console.info('audio recorder release success');
5402});
5403audioRecorder.release();
5404audioRecorder = undefined;
5405```
5406
5407### reset<sup>(deprecated)</sup>
5408
5409reset(): void
5410
5411重置录音。
5412
5413进行重置录音之前,需要先调用stop()停止录音。重置录音之后,需要调用prepare()设置录音参数项,才能再次进行录音。
5414
5415> **说明:**
5416> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.reset](#reset9-2)替代。
5417
5418**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5419
5420**示例:**
5421
5422```ts
5423audioRecorder.on('reset', () => {    //设置'reset'事件回调
5424  console.info('audio recorder reset success');
5425});
5426audioRecorder.reset();
5427```
5428
5429### on('prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset')<sup>(deprecated)</sup>
5430
5431on(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset', callback: () => void): void
5432
5433开始订阅音频录制事件。
5434
5435> **说明:**
5436> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('stateChange')](#onstatechange9-1)替代。
5437
5438**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5439
5440**参数:**
5441
5442| 参数名   | 类型     | 必填 | 说明                                                         |
5443| -------- | -------- | ---- | ------------------------------------------------------------ |
5444| 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调用,音频重置为初始状态,触发该事件。 |
5445| callback | ()=>void | 是   | 录制事件回调方法。                                           |
5446
5447**示例:**
5448
5449```ts
5450import { BusinessError } from '@ohos.base';
5451
5452let audioRecorder: media.AudioRecorder = media.createAudioRecorder();  // 创建一个音频录制实例
5453let audioRecorderConfig: media.AudioRecorderConfig = {
5454  audioEncoder : media.AudioEncoder.AAC_LC,
5455  audioEncodeBitRate : 22050,
5456  audioSampleRate : 22050,
5457  numberOfChannels : 2,
5458  format : media.AudioOutputFormat.AAC_ADTS,
5459  uri : 'fd://xx',  // 文件需先由调用者创建,并给予适当的权限
5460  location : { latitude : 30, longitude : 130}
5461}
5462audioRecorder.on('error', (error: BusinessError) => {  // 设置'error'事件回调
5463  console.error(`audio error called, error: ${error}`);
5464});
5465audioRecorder.on('prepare', () => {  // 设置'prepare'事件回调
5466  console.info('prepare success');
5467  audioRecorder.start();  // 开始录制,并触发'start'事件回调
5468});
5469audioRecorder.on('start', () => {  // 设置'start'事件回调
5470  console.info('audio recorder start success');
5471});
5472audioRecorder.on('pause', () => {  // 设置'pause'事件回调
5473  console.info('audio recorder pause success');
5474});
5475audioRecorder.on('resume', () => {  // 设置'resume'事件回调
5476  console.info('audio recorder resume success');
5477});
5478audioRecorder.on('stop', () => {  // 设置'stop'事件回调
5479  console.info('audio recorder stop success');
5480});
5481audioRecorder.on('release', () => {  // 设置'release'事件回调
5482  console.info('audio recorder release success');
5483});
5484audioRecorder.on('reset', () => {  // 设置'reset'事件回调
5485  console.info('audio recorder reset success');
5486});
5487audioRecorder.prepare(audioRecorderConfig)  // 设置录制参数 ,并触发'prepare'事件回调
5488```
5489
5490### on('error')<sup>(deprecated)</sup>
5491
5492on(type: 'error', callback: ErrorCallback): void
5493
5494开始订阅音频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。
5495
5496> **说明:**
5497> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('error')](#onerror9-1)替代。
5498
5499**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5500
5501**参数:**
5502
5503| 参数名   | 类型          | 必填 | 说明                                                         |
5504| -------- | ------------- | ---- | ------------------------------------------------------------ |
5505| type     | string        | 是   | 录制错误事件回调类型'error'。<br/>-&nbsp;'error':音频录制过程中发生错误,触发该事件。 |
5506| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 录制错误事件回调方法。                                       |
5507
5508**示例:**
5509
5510```ts
5511import { BusinessError } from '@ohos.base';
5512
5513let audioRecorderConfig: media.AudioRecorderConfig = {
5514  audioEncoder : media.AudioEncoder.AAC_LC,
5515  audioEncodeBitRate : 22050,
5516  audioSampleRate : 22050,
5517  numberOfChannels : 2,
5518  format : media.AudioOutputFormat.AAC_ADTS,
5519  uri : 'fd://xx',   // 文件需先由调用者创建,并给予适当的权限
5520  location : { latitude : 30, longitude : 130}
5521}
5522audioRecorder.on('error', (error: BusinessError) => {  // 设置'error'事件回调
5523  console.error(`audio error called, error: ${error}`);
5524});
5525audioRecorder.prepare(audioRecorderConfig);  // prepare不设置参数,触发'error'事件
5526```
5527
5528## AudioRecorderConfig<sup>(deprecated)</sup>
5529
5530> **说明:**
5531> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorderConfig](#avrecorderconfig9)替代。
5532
5533表示音频的录音配置。
5534
5535**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5536
5537| 名称                                | 类型                                         | 必填 | 说明                                                         |
5538| ----------------------------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
5539| audioEncoder                        | [AudioEncoder](#audioencoderdeprecated)                | 否   | 音频编码格式,默认设置为AAC_LC。<br/>**说明:** 从API version 8开始废弃,建议使用audioEncoderMime替代。 |
5540| audioEncodeBitRate                  | number                                       | 否   | 音频编码比特率,默认值为48000。                              |
5541| audioSampleRate                     | number                                       | 否   | 音频采集采样率,默认值为48000。                              |
5542| numberOfChannels                    | number                                       | 否   | 音频采集声道数,默认值为2。                                  |
5543| format                              | [AudioOutputFormat](#audiooutputformatdeprecated)      | 否   | 音频输出封装格式,默认设置为MPEG_4。<br/>**说明:** 从API version 8开始废弃,建议使用fileFormat替代。 |
5544| location                            | [Location](#location)                        | 否   | 音频采集的地理位置。                                         |
5545| uri                                 | string                                       | 是   | 音频输出URI:fd://xx&nbsp;(fd&nbsp;number)<br/>![](figures/zh-cn_image_url.png) <br/>文件需要由调用者创建,并赋予适当的权限。 |
5546| audioEncoderMime<sup>8+</sup>       | [CodecMimeType](#codecmimetype8)             | 否   | 容器编码格式。                                               |
5547| fileFormat<sup>8+</sup>             | [ContainerFormatType](#containerformattype8) | 否   | 音频编码格式。                                               |
5548
5549## AudioEncoder<sup>(deprecated)</sup>
5550
5551> **说明:**
5552> 从API version 6开始支持,从API version 8开始废弃,建议使用[CodecMimeType](#codecmimetype8)替代。
5553
5554表示音频编码格式的枚举。
5555
5556**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5557
5558| 名称    | 值   | 说明                                                         |
5559| ------- | ---- | ------------------------------------------------------------ |
5560| DEFAULT | 0    | 默认编码格式。<br/>仅做接口定义,暂不支持使用。              |
5561| AMR_NB  | 1    | AMR-NB(Adaptive Multi Rate-Narrow Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 |
5562| AMR_WB  | 2    | AMR-WB(Adaptive Multi Rate-Wide Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 |
5563| AAC_LC  | 3    | AAC-LC(Advanced&nbsp;Audio&nbsp;Coding&nbsp;Low&nbsp;Complexity)编码格式。 |
5564| HE_AAC  | 4    | HE_AAC(High-Efficiency Advanced&nbsp;Audio&nbsp;Coding)编码格式。<br/>仅做接口定义,暂不支持使用。 |
5565
5566## AudioOutputFormat<sup>(deprecated)</sup>
5567
5568> **说明:**
5569> 从API version 6开始支持,从API version 8 开始废弃,建议使用[ContainerFormatType](#containerformattype8)替代。
5570
5571表示音频封装格式的枚举。
5572
5573**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5574
5575| 名称     | 值   | 说明                                                         |
5576| -------- | ---- | ------------------------------------------------------------ |
5577| DEFAULT  | 0    | 默认封装格式。<br/>仅做接口定义,暂不支持使用。              |
5578| MPEG_4   | 2    | 封装为MPEG-4格式。                                           |
5579| AMR_NB   | 3    | 封装为AMR_NB格式。<br/>仅做接口定义,暂不支持使用。          |
5580| AMR_WB   | 4    | 封装为AMR_WB格式。<br/>仅做接口定义,暂不支持使用。          |
5581| AAC_ADTS | 6    | 封装为ADTS(Audio&nbsp;Data&nbsp;Transport&nbsp;Stream)格式,是AAC音频的传输流格式。 |
5582