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/>- '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 (fd 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_MEDIA 或 ohos.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' \| 'start' \| 'pause' \| ’resume‘ \| 'stop' \| 'release' \| 'reset'。<br/>- 'prepare' :完成[prepare](#audiorecorder_prepare)调用,音频录制参数设置完成,触发该事件。<br/>- 'start' :完成[start](#audiorecorder_start)调用,音频录制开始,触发该事件。<br/>- 'pause': 完成[pause](#audiorecorder_pause)调用,音频暂停录制,触发该事件。<br/>- 'resume': 完成[resume](#audiorecorder_resume)调用,音频恢复录制,触发该事件。<br/>- 'stop' :完成[stop](#audiorecorder_stop)调用,音频停止录制,触发该事件。<br/>- 'release' :完成[release](#audiorecorder_release)调用,音频释放录制资源,触发该事件。<br/>- '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/>- '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 (fd 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 Audio Coding Low Complexity)编码格式。 | 4992| HE_AAC | 4 | HE_AAC(High-Efficiency Advanced Audio 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 Data Transport Stream)格式,是AAC音频的传输流格式。 | 5010