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