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.info(`createAVPlayer fail, error:${error}`); 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.info('createAVPlayer fail'); 93 } 94}).catch((error) => { 95 console.info(`AVPlayer catchCallback, error:${error}`); 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.info(`createAVRecorder fail, error:${error}`); 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.info('createAVRecorder fail'); 175 } 176}).catch((error) => { 177 console.info(`createAVRecorder catchCallback, error:${error}`); 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.info(`video createVideoRecorder fail, error:${error}`); 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.info('video createVideoRecorder fail'); 257 } 258}).catch((error) => { 259 console.info(`video catchCallback, error:${error}`); 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可参考:[AVPlayer开发指导](../../media/avplayer-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><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: | 播放中发现码流异常。 | 480| 5400104 | Network Timeout: | 网络原因超时响应,[AVPlayerState](#avplayerstate9)会进入error状态。 | 481| 5400105 | Service Died: | 播放进程死亡,[AVPlayerState](#avplayerstate9)会进入error状态。 | 482| 5400106 | Unsupport Format: | 不支持的文件格式,[AVPlayerState](#avplayerstate9)会进入error状态。 | 483 484**示例:** 485 486```js 487avPlayer.on('error', (error) => { 488 console.info('error happened,and error message is :' + error.message) 489 console.info('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 936printfDescription(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 982printfDescription(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帧的跳转模式,**仅在视频资源播放时设置**。 | 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生效的事件回调类型,取消注册的事件:'availableBitrates'。 | 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/avplayer-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/avrecorder.md) 1703 1704*注意:使用相机进行视频录制时,需要与相机模块配合,相机模块接口开放状态以及使用详情见[相机管理](js-apis-camera.md)。 1705 1706### 属性 1707 1708**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 1709 1710| 名称 | 类型 | 可读 | 可写 | 说明 | 1711| ------- | ------------------------------------ | ---- | ---- | ------------------ | 1712| state9+ | [AVRecorderState](#avrecorderstate9) | 是 | 否 | 音视频录制的状态。 | 1713 1714### prepare<sup>9+</sup><a name=avrecorder_prepare></a> 1715 1716prepare(config: AVRecorderConfig, callback: AsyncCallback\<void>): void 1717 1718异步方式进行音视频录制的参数设置。通过注册回调函数获取返回值。 1719 1720**需要权限:** ohos.permission.MICROPHONE 1721 1722不涉及音频录制时,可以不需要获取ohos.permission.MICROPHONE权限。 1723 1724**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 1725 1726**参数:** 1727 1728| 参数名 | 类型 | 必填 | 说明 | 1729| -------- | -------------------------------------- | ---- | ------------------------------------- | 1730| config | [AVRecorderConfig](#avrecorderconfig9) | 是 | 配置音视频录制的相关参数。 | 1731| callback | AsyncCallback\<void> | 是 | 异步音视频录制prepare方法的回调方法。 | 1732 1733**错误码:** 1734 1735以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 1736 1737| 错误码ID | 错误信息 | 1738| -------- | --------------------------------------- | 1739| 201 | Permission denied. Return by callback. | 1740| 401 | Parameter error. Return by callback. | 1741| 5400102 | Operate not permit. Return by callback. | 1742| 5400105 | Service died. Return by callback. | 1743 1744**示例:** 1745 1746```js 1747// 配置参数以实际硬件设备支持的范围为准 1748let AVRecorderProfile = { 1749 audioBitrate : 48000, 1750 audioChannels : 2, 1751 audioCodec : media.CodecMimeType.AUDIO_AAC, 1752 audioSampleRate : 48000, 1753 fileFormat : media.ContainerFormatType.CFT_MPEG_4, 1754 videoBitrate : 2000000, 1755 videoCodec : media.CodecMimeType.VIDEO_AVC, 1756 videoFrameWidth : 640, 1757 videoFrameHeight : 480, 1758 videoFrameRate : 30 1759} 1760let AVRecorderConfig = { 1761 audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 1762 videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 1763 profile : AVRecorderProfile, 1764 url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45 1765 rotation : 0, // 合理值0、90、180、270,非合理值prepare接口将报错 1766 location : { latitude : 30, longitude : 130 } 1767} 1768 1769avRecorder.prepare(AVRecorderConfig, (err) => { 1770 if (err == null) { 1771 console.info('prepare success'); 1772 } else { 1773 console.info('prepare failed and error is ' + err.message); 1774 } 1775}) 1776``` 1777 1778### prepare<sup>9+</sup> 1779 1780prepare(config: AVRecorderConfig): Promise\<void> 1781 1782异步方式进行音视频录制的参数设置。通过Promise获取返回值。 1783 1784**需要权限:** ohos.permission.MICROPHONE 1785 1786不涉及音频录制时,可以不需要获ohos.permission.MICROPHONE权限。 1787 1788**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 1789 1790**参数:** 1791 1792| 参数名 | 类型 | 必填 | 说明 | 1793| ------ | -------------------------------------- | ---- | -------------------------- | 1794| config | [AVRecorderConfig](#avrecorderconfig9) | 是 | 配置音视频录制的相关参数。 | 1795 1796**返回值:** 1797 1798| 类型 | 说明 | 1799| -------------- | ------------------------------------------ | 1800| Promise\<void> | 异步音视频录制prepare方法的Promise返回值。 | 1801 1802**错误码:** 1803 1804以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 1805 1806| 错误码ID | 错误信息 | 1807| -------- | -------------------------------------- | 1808| 201 | Permission denied. Return by promise. | 1809| 401 | Parameter error. Return by promise. | 1810| 5400102 | Operate not permit. Return by promise. | 1811| 5400105 | Service died. Return by promise. | 1812 1813**示例:** 1814 1815```js 1816// 配置参数以实际硬件设备支持的范围为准 1817let AVRecorderProfile = { 1818 audioBitrate : 48000, 1819 audioChannels : 2, 1820 audioCodec : media.CodecMimeType.AUDIO_AAC, 1821 audioSampleRate : 48000, 1822 fileFormat : media.ContainerFormatType.CFT_MPEG_4, 1823 videoBitrate : 2000000, 1824 videoCodec : media.CodecMimeType.VIDEO_AVC, 1825 videoFrameWidth : 640, 1826 videoFrameHeight : 480, 1827 videoFrameRate : 30 1828} 1829let AVRecorderConfig = { 1830 audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 1831 videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 1832 profile : AVRecorderProfile, 1833 url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45 1834 rotation : 0, // 合理值0、90、180、270,非合理值prepare接口报错 1835 location : { latitude : 30, longitude : 130 } 1836} 1837 1838avRecorder.prepare(AVRecorderConfig).then(() => { 1839 console.info('prepare success'); 1840}).catch((err) => { 1841 console.info('prepare failed and catch error is ' + err.message); 1842}); 1843 1844``` 1845 1846### getInputSurface<sup>9+</sup><a name=avrecorder_getinputsurface></a> 1847 1848getInputSurface(callback: AsyncCallback\<string>): void 1849 1850异步方式获得录制需要的surface。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。 1851 1852应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。 1853 1854需在prepare()事件成功触发后,才能调用getInputSurface()方法。 1855 1856**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 1857 1858**参数:** 1859 1860| 参数名 | 类型 | 必填 | 说明 | 1861| -------- | ---------------------- | ---- | --------------------------- | 1862| callback | AsyncCallback\<string> | 是 | 异步获得surface的回调方法。 | 1863 1864**错误码:** 1865 1866以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md) 1867 1868| 错误码ID | 错误信息 | 1869| -------- | --------------------------------------- | 1870| 5400102 | Operate not permit. Return by callback. | 1871| 5400103 | IO error. Return by callback. | 1872| 5400105 | Service died. Return by callback. | 1873 1874**示例:** 1875 1876```js 1877let surfaceID = null; // 该surfaceID用于传递给相机接口创造videoOutput 1878 1879avRecorder.getInputSurface((err, surfaceId) => { 1880 if (err == null) { 1881 console.info('getInputSurface success'); 1882 surfaceID = surfaceId; 1883 } else { 1884 console.info('getInputSurface failed and error is ' + err.message); 1885 } 1886}); 1887 1888``` 1889 1890### getInputSurface<sup>9+</sup> 1891 1892getInputSurface(): Promise\<string> 1893 1894异步方式获得录制需要的surface。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。 1895 1896应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。 1897 1898需在prepare()事件成功触发后,才能调用getInputSurface方法。 1899 1900**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 1901 1902**返回值:** 1903 1904| 类型 | 说明 | 1905| ---------------- | -------------------------------- | 1906| Promise\<string> | 异步获得surface的Promise返回值。 | 1907 1908**错误码:** 1909 1910以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md) 1911 1912| 错误码ID | 错误信息 | 1913| -------- | -------------------------------------- | 1914| 5400102 | Operate not permit. Return by promise. | 1915| 5400103 | IO error. Return by promise. | 1916| 5400105 | Service died. Return by promise. | 1917 1918**示例:** 1919 1920```js 1921let surfaceID = null; // 该surfaceID用于传递给相机接口创造videoOutput 1922 1923avRecorder.getInputSurface().then((surfaceId) => { 1924 console.info('getInputSurface success'); 1925 surfaceID = surfaceId; 1926}).catch((err) => { 1927 console.info('getInputSurface failed and catch error is ' + err.message); 1928}); 1929``` 1930 1931### start<sup>9+</sup><a name=avrecorder_start></a> 1932 1933start(callback: AsyncCallback\<void>): void 1934 1935异步方式开始视频录制。通过注册回调函数获取返回值。 1936 1937纯音频录制需在prepare()事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在getInputSurface()事件成功触发后,才能调用start方法。 1938 1939**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 1940 1941**参数:** 1942 1943| 参数名 | 类型 | 必填 | 说明 | 1944| -------- | -------------------- | ---- | ---------------------------- | 1945| callback | AsyncCallback\<void> | 是 | 异步开始视频录制的回调方法。 | 1946 1947**错误码:** 1948 1949以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 1950 1951| 错误码ID | 错误信息 | 1952| -------- | --------------------------------------- | 1953| 5400102 | Operate not permit. Return by callback. | 1954| 5400103 | IO error. Return by callback. | 1955| 5400105 | Service died. Return by callback. | 1956 1957**示例:** 1958 1959```js 1960avRecorder.start((err) => { 1961 if (err == null) { 1962 console.info('start AVRecorder success'); 1963 } else { 1964 console.info('start AVRecorder failed and error is ' + err.message); 1965 } 1966}); 1967``` 1968 1969### start<sup>9+</sup> 1970 1971start(): Promise\<void> 1972 1973异步方式开始视频录制。通过Promise获取返回值。 1974 1975纯音频录制需在prepare()事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在getInputSurface()事件成功触发后,才能调用start方法。 1976 1977**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 1978 1979**返回值:** 1980 1981| 类型 | 说明 | 1982| -------------- | ------------------------------------- | 1983| Promise\<void> | 异步开始视频录制方法的Promise返回值。 | 1984 1985**错误码:** 1986 1987以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 1988 1989| 错误码ID | 错误信息 | 1990| -------- | -------------------------------------- | 1991| 5400102 | Operate not permit. Return by promise. | 1992| 5400103 | IO error. Return by promise. | 1993| 5400105 | Service died. Return by promise. | 1994 1995**示例:** 1996 1997```js 1998avRecorder.start().then(() => { 1999 console.info('start AVRecorder success'); 2000}).catch((err) => { 2001 console.info('start AVRecorder failed and catch error is ' + err.message); 2002}); 2003``` 2004 2005### pause<sup>9+</sup><a name=avrecorder_pause></a> 2006 2007pause(callback: AsyncCallback\<void>): void 2008 2009异步方式暂停视频录制。通过注册回调函数获取返回值。 2010 2011需要start()事件成功触发后,才能调用pause方法,可以通过调用resume()接口来恢复录制。 2012 2013**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2014 2015**参数:** 2016 2017| 参数名 | 类型 | 必填 | 说明 | 2018| -------- | -------------------- | ---- | --------------------------- | 2019| callback | AsyncCallback\<void> | 是 | 异步获得surface的回调方法。 | 2020 2021**错误码:** 2022 2023以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2024 2025| 错误码ID | 错误信息 | 2026| -------- | --------------------------------------- | 2027| 5400102 | Operate not permit. Return by callback. | 2028| 5400103 | IO error. Return by callback. | 2029| 5400105 | Service died. Return by callback. | 2030 2031**示例:** 2032 2033```js 2034avRecorder.pause((err) => { 2035 if (err == null) { 2036 console.info('pause AVRecorder success'); 2037 } else { 2038 console.info('pause AVRecorder failed and error is ' + err.message); 2039 } 2040}); 2041``` 2042 2043### pause<sup>9+</sup> 2044 2045pause(): Promise\<void> 2046 2047异步方式暂停视频录制。通过Promise获取返回值。 2048 2049需要start()事件成功触发后,才能调用pause方法,可以通过调用resume()接口来恢复录制。 2050 2051**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2052 2053**返回值:** 2054 2055| 类型 | 说明 | 2056| -------------- | ------------------------------------- | 2057| Promise\<void> | 异步暂停视频录制方法的Promise返回值。 | 2058 2059**错误码:** 2060 2061以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2062 2063| 错误码ID | 错误信息 | 2064| -------- | -------------------------------------- | 2065| 5400102 | Operate not permit. Return by promise. | 2066| 5400103 | IO error. Return by promise. | 2067| 5400105 | Service died. Return by promise. | 2068 2069**示例:** 2070 2071```js 2072avRecorder.pause().then(() => { 2073 console.info('pause AVRecorder success'); 2074}).catch((err) => { 2075 console.info('pause AVRecorder failed and catch error is ' + err.message); 2076}); 2077``` 2078 2079### resume<sup>9+</sup><a name=avrecorder_resume></a> 2080 2081resume(callback: AsyncCallback\<void>): void 2082 2083异步方式恢复视频录制。通过注册回调函数获取返回值。 2084 2085需要在pause()事件成功触发后,才能调用resume方法。 2086 2087**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2088 2089**参数:** 2090 2091| 参数名 | 类型 | 必填 | 说明 | 2092| -------- | -------------------- | ---- | ---------------------------- | 2093| callback | AsyncCallback\<void> | 是 | 异步恢复视频录制的回调方法。 | 2094 2095**错误码:** 2096 2097以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2098 2099| 错误码ID | 错误信息 | 2100| -------- | --------------------------------------- | 2101| 5400102 | Operate not permit. Return by callback. | 2102| 5400103 | IO error. Return by callback. | 2103| 5400105 | Service died. Return by callback. | 2104 2105**示例:** 2106 2107```js 2108avRecorder.resume((err) => { 2109 if (err == null) { 2110 console.info('resume AVRecorder success'); 2111 } else { 2112 console.info('resume AVRecorder failed and error is ' + err.message); 2113 } 2114}); 2115``` 2116 2117### resume<sup>9+</sup> 2118 2119resume(): Promise\<void> 2120 2121异步方式恢复视频录制。通过Promise获取返回值。 2122 2123需要在pause()事件成功触发后,才能调用resume方法。 2124 2125**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2126 2127**返回值:** 2128 2129| 类型 | 说明 | 2130| -------------- | ------------------------------------- | 2131| Promise\<void> | 异步恢复视频录制方法的Promise返回值。 | 2132 2133**错误码:** 2134 2135以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2136 2137| 错误码ID | 错误信息 | 2138| -------- | -------------------------------------- | 2139| 5400102 | Operate not permit. Return by promise. | 2140| 5400103 | IO error. Return by promise. | 2141| 5400105 | Service died. Return by promise. | 2142 2143**示例:** 2144 2145```js 2146avRecorder.resume().then(() => { 2147 console.info('resume AVRecorder success'); 2148}).catch((err) => { 2149 console.info('resume AVRecorder failed and catch error is ' + err.message); 2150}); 2151``` 2152 2153### stop<sup>9+</sup><a name=avrecorder_stop></a> 2154 2155stop(callback: AsyncCallback\<void>): void 2156 2157异步方式停止视频录制。通过注册回调函数获取返回值。 2158 2159需要在start()或pause()事件成功触发后,才能调用stop方法。 2160 2161纯音频录制时,需要重新调用prepare()接口才能重新录制。纯视频录制,音视频录制时,需要重新调用prepare()和getInputSurface()接口才能重新录制。 2162 2163**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2164 2165**参数:** 2166 2167| 参数名 | 类型 | 必填 | 说明 | 2168| -------- | -------------------- | ---- | ---------------------------- | 2169| callback | AsyncCallback\<void> | 是 | 异步停止视频录制的回调方法。 | 2170 2171**错误码:** 2172 2173以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2174 2175| 错误码ID | 错误信息 | 2176| -------- | --------------------------------------- | 2177| 5400102 | Operate not permit. Return by callback. | 2178| 5400103 | IO error. Return by callback. | 2179| 5400105 | Service died. Return by callback. | 2180 2181**示例:** 2182 2183```js 2184avRecorder.stop((err) => { 2185 if (err == null) { 2186 console.info('stop AVRecorder success'); 2187 } else { 2188 console.info('stop AVRecorder failed and error is ' + err.message); 2189 } 2190}); 2191``` 2192 2193### stop<sup>9+</sup> 2194 2195stop(): Promise\<void> 2196 2197异步方式停止视频录制。通过Promise获取返回值。 2198 2199需要在start()或pause()事件成功触发后,才能调用stop方法。 2200 2201纯音频录制时,需要重新调用prepare()接口才能重新录制。纯视频录制,音视频录制时,需要重新调用prepare()和getInputSurface()接口才能重新录制。 2202 2203**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2204 2205**返回值:** 2206 2207| 类型 | 说明 | 2208| -------------- | ------------------------------------- | 2209| Promise\<void> | 异步停止视频录制方法的Promise返回值。 | 2210 2211**错误码:** 2212 2213以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2214 2215| 错误码ID | 错误信息 | 2216| -------- | -------------------------------------- | 2217| 5400102 | Operate not permit. Return by promise. | 2218| 5400103 | IO error. Return by promise. | 2219| 5400105 | Service died. Return by promise. | 2220 2221**示例:** 2222 2223```js 2224avRecorder.stop().then(() => { 2225 console.info('stop AVRecorder success'); 2226}).catch((err) => { 2227 console.info('stop AVRecorder failed and catch error is ' + err.message); 2228}); 2229``` 2230 2231### reset<sup>9+</sup><a name=avrecorder_reset></a> 2232 2233reset(callback: AsyncCallback\<void>): void 2234 2235异步方式重置音视频录制。通过注册回调函数获取返回值。 2236 2237纯音频录制时,需要重新调用prepare()接口才能重新录制。纯视频录制,音视频录制时,需要重新调用prepare()和getInputSurface()接口才能重新录制。 2238 2239**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2240 2241**参数:** 2242 2243| 参数名 | 类型 | 必填 | 说明 | 2244| -------- | -------------------- | ---- | ------------------------------ | 2245| callback | AsyncCallback\<void> | 是 | 异步重置音视频录制的回调方法。 | 2246 2247**错误码:** 2248 2249以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2250 2251| 错误码ID | 错误信息 | 2252| -------- | --------------------------------- | 2253| 5400103 | IO error. Return by callback. | 2254| 5400105 | Service died. Return by callback. | 2255 2256**示例:** 2257 2258```js 2259avRecorder.reset((err) => { 2260 if (err == null) { 2261 console.info('reset AVRecorder success'); 2262 } else { 2263 console.info('reset AVRecorder failed and error is ' + err.message); 2264 } 2265}); 2266``` 2267 2268### reset<sup>9+</sup> 2269 2270reset(): Promise\<void> 2271 2272异步方式重置音视频录制。通过Promise获取返回值。 2273 2274纯音频录制时,需要重新调用prepare()接口才能重新录制。纯视频录制,音视频录制时,需要重新调用prepare()和getInputSurface()接口才能重新录制。 2275 2276**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2277 2278**返回值:** 2279 2280| 类型 | 说明 | 2281| -------------- | --------------------------------------- | 2282| Promise\<void> | 异步重置音视频录制方法的Promise返回值。 | 2283 2284**错误码:** 2285 2286以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2287 2288| 错误码ID | 错误信息 | 2289| -------- | -------------------------------- | 2290| 5400103 | IO error. Return by promise. | 2291| 5400105 | Service died. Return by promise. | 2292 2293**示例:** 2294 2295```js 2296avRecorder.reset().then(() => { 2297 console.info('reset AVRecorder success'); 2298}).catch((err) => { 2299 console.info('reset AVRecorder failed and catch error is ' + err.message); 2300}); 2301``` 2302 2303### release<sup>9+</sup><a name=avrecorder_release></a> 2304 2305release(callback: AsyncCallback\<void>): void 2306 2307异步方式释放音视频录制资源。通过注册回调函数获取返回值。 2308 2309释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。 2310 2311**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2312 2313**参数:** 2314 2315| 参数名 | 类型 | 必填 | 说明 | 2316| -------- | -------------------- | ---- | ---------------------------------- | 2317| callback | AsyncCallback\<void> | 是 | 异步释放音视频录制资源的回调方法。 | 2318 2319**错误码:** 2320 2321以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2322 2323| 错误码ID | 错误信息 | 2324| -------- | --------------------------------- | 2325| 5400105 | Service died. Return by callback. | 2326 2327**示例:** 2328 2329```js 2330avRecorder.release((err) => { 2331 if (err == null) { 2332 console.info('release AVRecorder success'); 2333 } else { 2334 console.info('release AVRecorder failed and error is ' + err.message); 2335 } 2336}); 2337``` 2338 2339### release<sup>9+</sup> 2340 2341release(): Promise\<void> 2342 2343异步方式释放音视频录制资源。通过Promise获取返回值。 2344 2345释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。 2346 2347**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2348 2349**返回值:** 2350 2351| 类型 | 说明 | 2352| -------------- | ------------------------------------------- | 2353| Promise\<void> | 异步释放音视频录制资源方法的Promise返回值。 | 2354 2355**错误码:** 2356 2357以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2358 2359| 错误码ID | 错误信息 | 2360| -------- | --------------------------------- | 2361| 5400105 | Service died. Return by callback. | 2362 2363**示例:** 2364 2365```js 2366avRecorder.release().then(() => { 2367 console.info('release AVRecorder success'); 2368}).catch((err) => { 2369 console.info('release AVRecorder failed and catch error is ' + err.message); 2370}); 2371``` 2372 2373### on('stateChange')<sup>9+</sup><a name=avrecorder_onstatechange></a> 2374 2375on(type: 'stateChange', callback: (state: AVRecorderState, reason: StateChangeReason) => void): void 2376 2377订阅录制状态机AVRecorderState切换的事件,当 AVRecorderState状态机发生变化时,会通过订阅的回调方法通知用户。用户只能订阅一个状态机切换事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2378 2379**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2380 2381**参数:** 2382 2383| 参数名 | 类型 | 必填 | 说明 | 2384| -------- | -------- | ---- | ------------------------------------------------------------ | 2385| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 2386| callback | function | 是 | 状态机切换事件回调方法:<br>state: [AVRecorderState](#avrecorderstate9),表示当前播放状态 ;<br>reason: [StateChangeReason](#statechangereason9),表示当前播放状态的切换原因。 | 2387 2388**示例:** 2389 2390```js 2391avRecorder.on('stateChange', async (state, reason) => { 2392 console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason); 2393}); 2394``` 2395 2396### off('stateChange')<sup>9+</sup> 2397 2398off(type: 'stateChange'): void 2399 2400取消订阅播放状态机[AVRecorderState](#avrecorderstate9)切换的事件。 2401 2402**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2403 2404**参数:** 2405 2406| 参数名 | 类型 | 必填 | 说明 | 2407| ------ | ------ | ---- | ------------------------------------------------------------ | 2408| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 2409 2410**示例:** 2411 2412```js 2413avRecorder.off('stateChange'); 2414``` 2415 2416### on('error')<sup>9+</sup><a name=avrecorder_onerror></a> 2417 2418on(type: 'error', callback: ErrorCallback): void 2419 2420订阅AVRecorder的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVRecorderState](#avrecorderstate9)也切至error状态,用户需要通过reset()或者release()退出录制操作。 2421 2422用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2423 2424**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2425 2426**参数:** 2427 2428| 参数名 | 类型 | 必填 | 说明 | 2429| -------- | ------------- | ---- | ------------------------------------------------------------ | 2430| type | string | 是 | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 2431| callback | ErrorCallback | 是 | 录制错误事件回调方法。 | 2432 2433**错误码:** 2434 2435以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2436 2437| 错误码ID | 错误信息 | 2438| -------- | --------------------------------- | 2439| 5400103 | IO error. Return by callback. | 2440| 5400105 | Service died. Return by callback. | 2441 2442**示例:** 2443 2444```js 2445avRecorder.on('error', (err) => { 2446 console.info('case avRecorder.on(error) called, errMessage is ' + err.message); 2447}); 2448``` 2449 2450### off('error')<sup>9+</sup> 2451 2452off(type: 'error'): void 2453 2454取消订阅录制错误事件,取消后不再接收到AVRecorder的错误事件。 2455 2456**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2457 2458**参数:** 2459 2460| 参数名 | 类型 | 必填 | 说明 | 2461| ------ | ------ | ---- | ------------------------------------------------------------ | 2462| type | string | 是 | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 2463 2464**错误码:** 2465 2466以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md)。 2467 2468| 错误码ID | 错误信息 | 2469| -------- | --------------------------------- | 2470| 5400103 | IO error. Return by callback. | 2471| 5400105 | Service died. Return by callback. | 2472 2473**示例:** 2474 2475```js 2476avRecorder.off('error'); 2477``` 2478 2479## AVRecorderState<sup>9+</sup> 2480 2481音视频录制的状态机。可通过state属性获取当前状态。 2482 2483**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2484 2485| 名称 | 类型 | 说明 | 2486| -------- | ------ | ------------------------------------------------------------ | 2487| idle | string | 闲置状态。此时可以调用[prepare()](#avrecorder_prepare)方法设置录制参数,进入prepared状态。AVRecorder刚被创建,或者在任何非released状态下调用[reset()](#avrecorder_reset)方法,均进入idle状态。 | 2488| prepared | string | 参数设置完成。此时可以调用[start()](#avrecorder_start)方法开始录制,进入started状态。 | 2489| started | string | 正在录制。此时可以调用[pause()](#avrecorder_pause)方法暂停录制,进入paused状态。也可以调用[stop()](#avrecorder_stop)方法结束录制,进入stopped状态。 | 2490| paused | string | 录制暂停。此时可以调用[resume()](#avrecorder_resume)方法继续录制,进入started状态。也可以调用[stop()](#avrecorder_stop)方法结束录制,进入stopped状态。 | 2491| stopped | string | 录制停止。此时可以调用[prepare()](#avrecorder_prepare)方法设置录制参数,重新进入prepared状态。 | 2492| released | string | 录制资源释放。此时不能再进行任何操作。在任何其他状态下,均可以通过调用[release()](#avrecorder_release)方法进入released状态。 | 2493| error | string | 错误状态。当AVRecorder实例发生不可逆错误,会转换至当前状态。切换至error状态时会伴随[on('error')事件](#avrecorder_onerror),该事件会上报详细错误原因。在error状态时,用户需要调用[reset()](#avrecorder_reset)方法重置AVRecorder实例,或者调用[release()](#avrecorder_release)方法释放资源。 | 2494 2495## AVRecorderConfig<sup>9+</sup> 2496 2497表示音视频录制的参数设置。 2498 2499**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2500 2501| 名称 | 类型 | 必填 | 说明 | 2502| --------------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | 2503| audioSourceType | [AudioSourceType](#audiosourcetype9) | 否 | 选择录制的音频源类型。选择音频录制时必填。 | 2504| videoSourceType | [VideoSourceType](#videosourcetype9) | 否 | 选择录制的视频源类型。选择视频录制时必填。 | 2505| profile | [AVRecorderProfile](#avrecorderprofile9) | 是 | 录制的profile,必要参数。 | 2506| url | string | 是 | 录制输出URL:fd://xx (fd number) ,必要参数。 | 2507| rotation | number | 否 | 录制的视频旋转角度,仅支持0,90,180,270。 | 2508| location | [Location](#location) | 否 | 录制的地理位置。 | 2509 2510通过audioSourceType和videoSourceType区分纯音频录制、纯视频录制或音视频录制。纯音频录制时,仅需要设置audioSourceType;纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。 2511 2512## AVRecorderProfile<sup>9+</sup> 2513 2514音视频录制的配置文件。 2515 2516**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2517 2518| 名称 | 类型 | 必填 | 说明 | 2519| ---------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | 2520| audioBitrate | number | 否 | 音频编码比特率,选择音频录制时必填。 | 2521| audioChannels | number | 否 | 音频采集声道数,选择音频录制时必填。 | 2522| audioCodec | [CodecMimeType](#codecmimetype8) | 否 | 音频编码格式,选择音频录制时必填。当前仅支持AUDIO_AAC。 | 2523| audioSampleRate | number | 否 | 音频采样率,选择音频录制时必填。 | 2524| fileFormat | [ContainerFormatType](#containerformattype8) | 是 | 文件的容器格式,必要参数。 | 2525| videoBitrate | number | 否 | 视频编码比特率,选择视频录制时必填。 | 2526| videoCodec | [CodecMimeType](#codecmimetype8) | 否 | 视频编码格式,选择视频录制时必填。需要查询设备支持的编码能力(包括编码格式,分辨率大小等)。 | 2527| videoFrameWidth | number | 否 | 视频帧的宽,选择视频录制时必填。 | 2528| videoFrameHeight | number | 否 | 视频帧的高,选择视频录制时必填。 | 2529| videoFrameRate | number | 否 | 视频帧率,选择视频录制时必填。 | 2530 2531## AudioSourceType<sup>9+</sup> 2532 2533表示视频录制中音频源类型的枚举。 2534 2535**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2536 2537| 名称 | 值 | 说明 | 2538| ------------------------- | ---- | ---------------------- | 2539| AUDIO_SOURCE_TYPE_DEFAULT | 0 | 默认的音频输入源类型。 | 2540| AUDIO_SOURCE_TYPE_MIC | 1 | 表示MIC的音频输入源。 | 2541 2542## VideoSourceType<sup>9+</sup> 2543 2544表示视频录制中视频源类型的枚举。 2545 2546**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 2547 2548| 名称 | 值 | 说明 | 2549| ----------------------------- | ---- | ------------------------------- | 2550| VIDEO_SOURCE_TYPE_SURFACE_YUV | 0 | 输入surface中携带的是raw data。 | 2551| VIDEO_SOURCE_TYPE_SURFACE_ES | 1 | 输入surface中携带的是ES data。 | 2552 2553## ContainerFormatType<sup>8+</sup> 2554 2555表示容器格式类型的枚举,缩写为CFT。 2556 2557**系统能力:** SystemCapability.Multimedia.Media.Core 2558 2559| 名称 | 值 | 说明 | 2560| ----------- | ----- | --------------------- | 2561| CFT_MPEG_4 | 'mp4' | 视频的容器格式,MP4。 | 2562| CFT_MPEG_4A | 'm4a' | 音频的容器格式,M4A。 | 2563 2564## Location 2565 2566视频录制的地理位置。 2567 2568**系统能力:** SystemCapability.Multimedia.Media.Core 2569 2570| 名称 | 类型 | 必填 | 说明 | 2571| --------- | ------ | ---- | ---------------- | 2572| latitude | number | 是 | 地理位置的纬度。 | 2573| longitude | number | 是 | 地理位置的经度。 | 2574 2575## VideoRecorder<sup>9+</sup> 2576 2577> **说明:** 2578> AVRecorder<sup>9+</sup>发布后停止维护,建议使用[AVRecorder](#avrecorder9)替代。 2579 2580视频录制管理类,用于录制视频媒体。在调用VideoRecorder的方法前,需要先通过[createVideoRecorder()](#mediacreatevideorecorder9)构建一个[VideoRecorder](#videorecorder9)实例。 2581 2582视频录制demo可参考:[视频录制开发指导](../../media/video-recorder.md) 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.info('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.info('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.info('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.info('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.info('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.info('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.info('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.info('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.info('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.info('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.info('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.info('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.info('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.info('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.info('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.info('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.info(`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 | 否 | 录制视频的旋转角度。 | 3347| location | [Location](#location) | 否 | 录制视频的地理位置。 | 3348| url | string | 是 | 视频输出URL:fd://xx (fd number)<br/> | 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.info(`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.info('video createVideoPlayer fail'); 3454 } 3455}).catch((error) => { 3456 console.info(`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><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 fileio from '@ohos.fileio' 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.info(`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'; 3822fileio.open(path).then((fdValue) => { 3823 fdPath = fdPath + '' + fdValue; 3824 console.info('open fd success fd is' + fdPath); 3825}, (err) => { 3826 console.info('open fd failed err is' + err); 3827}).catch((err) => { 3828 console.info('open fd failed err is' + err); 3829}); 3830audioPlayer.src = fdPath; //设置src属性,并触发'dataLoad'事件回调 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.info(`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视频播放demo可参考:[视频播放开发指导](../../media/video-playback.md) 3910 3911### 属性<a name=videoplayer_属性></a> 3912 3913**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 3914 3915| 名称 | 类型 | 可读 | 可写 | 说明 | 3916| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 3917| url<sup>8+</sup> | string | 是 | 是 | 视频媒体URL,支持当前主流的视频格式(mp4、mpeg-ts、webm、mkv)。<br>**支持路径示例**:<br>1. fd类型播放:fd://xx<br><br>2. http网络播放: http://xx<br/>3. https网络播放: https://xx<br/>4. hls网络播放路径:http://xx或者https://xx<br/> | 3918| 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/> | 3919| loop<sup>8+</sup> | boolean | 是 | 是 | 视频循环播放属性,设置为'true'表示循环播放。 | 3920| videoScaleType<sup>9+</sup> | [VideoScaleType](#videoscaletype9) | 是 | 是 | 视频缩放模式。 | 3921| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](js-apis-audio.md#interruptmode9) | 是 | 是 | 音频焦点模型。 | 3922| currentTime<sup>8+</sup> | number | 是 | 否 | 视频的当前播放位置,单位为毫秒(ms)。 | 3923| duration<sup>8+</sup> | number | 是 | 否 | 视频时长,单位为毫秒(ms),返回-1表示直播模式。 | 3924| state<sup>8+</sup> | [VideoPlayState](#videoplayerstate) | 是 | 否 | 视频播放的状态。 | 3925| width<sup>8+</sup> | number | 是 | 否 | 视频宽,单位为像素(px)。 | 3926| height<sup>8+</sup> | number | 是 | 否 | 视频高,单位为像素(px)。 | 3927 3928### setDisplaySurface<sup>8+</sup> 3929 3930setDisplaySurface(surfaceId: string, callback: AsyncCallback\<void>): void 3931 3932通过回调方式设置SurfaceId。 3933 3934*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。 3935 3936**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 3937 3938**参数:** 3939 3940| 参数名 | 类型 | 必填 | 说明 | 3941| --------- | -------------------- | ---- | ------------------------- | 3942| surfaceId | string | 是 | SurfaceId | 3943| callback | AsyncCallback\<void> | 是 | 设置SurfaceId的回调方法。 | 3944 3945**示例:** 3946 3947```js 3948let surfaceId = null; 3949videoPlayer.setDisplaySurface(surfaceId, (err) => { 3950 if (err == null) { 3951 console.info('setDisplaySurface success!'); 3952 } else { 3953 console.info('setDisplaySurface fail!'); 3954 } 3955}); 3956``` 3957 3958### setDisplaySurface<sup>8+</sup> 3959 3960setDisplaySurface(surfaceId: string): Promise\<void> 3961 3962通过Promise方式设置SurfaceId。 3963 3964*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。 3965 3966**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 3967 3968**参数:** 3969 3970| 参数名 | 类型 | 必填 | 说明 | 3971| --------- | ------ | ---- | --------- | 3972| surfaceId | string | 是 | SurfaceId | 3973 3974**返回值:** 3975 3976| 类型 | 说明 | 3977| -------------- | ------------------------------ | 3978| Promise\<void> | 设置SurfaceId的Promise返回值。 | 3979 3980**示例:** 3981 3982```js 3983let surfaceId = null; 3984videoPlayer.setDisplaySurface(surfaceId).then(() => { 3985 console.info('setDisplaySurface success'); 3986}).catch((error) => { 3987 console.info(`video catchCallback, error:${error}`); 3988}); 3989``` 3990 3991### prepare<sup>8+</sup> 3992 3993prepare(callback: AsyncCallback\<void>): void 3994 3995通过回调方式准备播放视频。 3996 3997**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 3998 3999**参数:** 4000 4001| 参数名 | 类型 | 必填 | 说明 | 4002| -------- | -------------------- | ---- | ------------------------ | 4003| callback | AsyncCallback\<void> | 是 | 准备播放视频的回调方法。 | 4004 4005**示例:** 4006 4007```js 4008videoPlayer.prepare((err) => { 4009 if (err == null) { 4010 console.info('prepare success!'); 4011 } else { 4012 console.info('prepare fail!'); 4013 } 4014}); 4015``` 4016 4017### prepare<sup>8+</sup> 4018 4019prepare(): Promise\<void> 4020 4021通过Promise方式准备播放视频。 4022 4023**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4024 4025**返回值:** 4026 4027| 类型 | 说明 | 4028| -------------- | ----------------------------- | 4029| Promise\<void> | 准备播放视频的Promise返回值。 | 4030 4031**示例:** 4032 4033```js 4034videoPlayer.prepare().then(() => { 4035 console.info('prepare success'); 4036}).catch((error) => { 4037 console.info(`video catchCallback, error:${error}`); 4038}); 4039``` 4040 4041### play<sup>8+</sup> 4042 4043play(callback: AsyncCallback\<void>): void; 4044 4045通过回调方式开始播放视频。 4046 4047**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4048 4049**参数:** 4050 4051| 参数名 | 类型 | 必填 | 说明 | 4052| -------- | -------------------- | ---- | ------------------------ | 4053| callback | AsyncCallback\<void> | 是 | 开始播放视频的回调方法。 | 4054 4055**示例:** 4056 4057```js 4058videoPlayer.play((err) => { 4059 if (err == null) { 4060 console.info('play success!'); 4061 } else { 4062 console.info('play fail!'); 4063 } 4064}); 4065``` 4066 4067### play<sup>8+</sup> 4068 4069play(): Promise\<void>; 4070 4071通过Promise方式开始播放视频。 4072 4073**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4074 4075**返回值:** 4076 4077| 类型 | 说明 | 4078| -------------- | ----------------------------- | 4079| Promise\<void> | 开始播放视频的Promise返回值。 | 4080 4081**示例:** 4082 4083```js 4084videoPlayer.play().then(() => { 4085 console.info('play success'); 4086}).catch((error) => { 4087 console.info(`video catchCallback, error:${error}`); 4088}); 4089``` 4090 4091### pause<sup>8+</sup> 4092 4093pause(callback: AsyncCallback\<void>): void 4094 4095通过回调方式暂停播放视频。 4096 4097**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4098 4099**参数:** 4100 4101| 参数名 | 类型 | 必填 | 说明 | 4102| -------- | -------------------- | ---- | ------------------------ | 4103| callback | AsyncCallback\<void> | 是 | 暂停播放视频的回调方法。 | 4104 4105**示例:** 4106 4107```js 4108videoPlayer.pause((err) => { 4109 if (err == null) { 4110 console.info('pause success!'); 4111 } else { 4112 console.info('pause fail!'); 4113 } 4114}); 4115``` 4116 4117### pause<sup>8+</sup> 4118 4119pause(): Promise\<void> 4120 4121通过Promise方式暂停播放视频。 4122 4123**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4124 4125**返回值:** 4126 4127| 类型 | 说明 | 4128| -------------- | ----------------------------- | 4129| Promise\<void> | 暂停播放视频的Promise返回值。 | 4130 4131**示例:** 4132 4133```js 4134videoPlayer.pause().then(() => { 4135 console.info('pause success'); 4136}).catch((error) => { 4137 console.info(`video catchCallback, error:${error}`); 4138}); 4139``` 4140 4141### stop<sup>8+</sup> 4142 4143stop(callback: AsyncCallback\<void>): void 4144 4145通过回调方式停止播放视频。 4146 4147**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4148 4149**参数:** 4150 4151| 参数名 | 类型 | 必填 | 说明 | 4152| -------- | -------------------- | ---- | ------------------------ | 4153| callback | AsyncCallback\<void> | 是 | 停止播放视频的回调方法。 | 4154 4155**示例:** 4156 4157```js 4158videoPlayer.stop((err) => { 4159 if (err == null) { 4160 console.info('stop success!'); 4161 } else { 4162 console.info('stop fail!'); 4163 } 4164}); 4165``` 4166 4167### stop<sup>8+</sup> 4168 4169stop(): Promise\<void> 4170 4171通过Promise方式停止播放视频。 4172 4173**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4174 4175**返回值:** 4176 4177| 类型 | 说明 | 4178| -------------- | ----------------------------- | 4179| Promise\<void> | 停止播放视频的Promise返回值。 | 4180 4181**示例:** 4182 4183```js 4184videoPlayer.stop().then(() => { 4185 console.info('stop success'); 4186}).catch((error) => { 4187 console.info(`video catchCallback, error:${error}`); 4188}); 4189``` 4190 4191### reset<sup>8+</sup> 4192 4193reset(callback: AsyncCallback\<void>): void 4194 4195通过回调方式重置播放视频。 4196 4197**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4198 4199**参数:** 4200 4201| 参数名 | 类型 | 必填 | 说明 | 4202| -------- | -------------------- | ---- | ------------------------ | 4203| callback | AsyncCallback\<void> | 是 | 切换播放视频的回调方法。 | 4204 4205**示例:** 4206 4207```js 4208videoPlayer.reset((err) => { 4209 if (err == null) { 4210 console.info('reset success!'); 4211 } else { 4212 console.info('reset fail!'); 4213 } 4214}); 4215``` 4216 4217### reset<sup>8+</sup> 4218 4219reset(): Promise\<void> 4220 4221通过Promise方式重置播放视频。 4222 4223**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4224 4225**返回值:** 4226 4227| 类型 | 说明 | 4228| -------------- | ----------------------------- | 4229| Promise\<void> | 切换播放视频的Promise返回值。 | 4230 4231**示例:** 4232 4233```js 4234videoPlayer.reset().then(() => { 4235 console.info('reset success'); 4236}).catch((error) => { 4237 console.info(`video catchCallback, error:${error}`); 4238}); 4239``` 4240 4241### seek<sup>8+</sup> 4242 4243seek(timeMs: number, callback: AsyncCallback\<number>): void 4244 4245通过回调方式跳转到指定播放位置,默认跳转到指定时间点的上一个关键帧。 4246 4247**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4248 4249**参数:** 4250 4251| 参数名 | 类型 | 必填 | 说明 | 4252| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 4253| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 4254| callback | AsyncCallback\<number> | 是 | 跳转到指定播放位置的回调方法。 | 4255 4256**示例:** 4257 4258```js 4259let seekTime = 5000; 4260videoPlayer.seek(seekTime, (err, result) => { 4261 if (err == null) { 4262 console.info('seek success!'); 4263 } else { 4264 console.info('seek fail!'); 4265 } 4266}); 4267``` 4268 4269### seek<sup>8+</sup> 4270 4271seek(timeMs: number, mode:SeekMode, callback: AsyncCallback\<number>): void 4272 4273通过回调方式跳转到指定播放位置。 4274 4275**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4276 4277**参数:** 4278 4279| 参数名 | 类型 | 必填 | 说明 | 4280| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 4281| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 4282| mode | [SeekMode](#seekmode8) | 是 | 跳转模式。 | 4283| callback | AsyncCallback\<number> | 是 | 跳转到指定播放位置的回调方法。 | 4284 4285**示例:** 4286 4287```js 4288import media from '@ohos.multimedia.media' 4289let seekTime = 5000; 4290videoPlayer.seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC, (err, result) => { 4291 if (err == null) { 4292 console.info('seek success!'); 4293 } else { 4294 console.info('seek fail!'); 4295 } 4296}); 4297``` 4298 4299### seek<sup>8+</sup> 4300 4301seek(timeMs: number, mode?:SeekMode): Promise\<number> 4302 4303通过Promise方式跳转到指定播放位置,如果没有设置mode则跳转到指定时间点的上一个关键帧。 4304 4305**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4306 4307**参数:** 4308 4309| 参数名 | 类型 | 必填 | 说明 | 4310| ------ | ---------------------- | ---- | ------------------------------------------------------------ | 4311| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 4312| mode | [SeekMode](#seekmode8) | 否 | 跳转模式。 | 4313 4314**返回值:** 4315 4316| 类型 | 说明 | 4317| ---------------- | ------------------------------------------- | 4318| Promise\<number> | 跳转到指定播放位置的Promise返回值,单位ms。 | 4319 4320**示例:** 4321 4322```js 4323import media from '@ohos.multimedia.media' 4324let seekTime = 5000; 4325videoPlayer.seek(seekTime).then((seekDoneTime) => { // seekDoneTime表示seek完成后的时间点 4326 console.info('seek success'); 4327}).catch((error) => { 4328 console.info(`video catchCallback, error:${error}`); 4329}); 4330 4331videoPlayer.seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => { 4332 console.info('seek success'); 4333}).catch((error) => { 4334 console.info(`video catchCallback, error:${error}`); 4335}); 4336``` 4337 4338### setVolume<sup>8+</sup> 4339 4340setVolume(vol: number, callback: AsyncCallback\<void>): void 4341 4342通过回调方式设置音量。 4343 4344**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4345 4346**参数:** 4347 4348| 参数名 | 类型 | 必填 | 说明 | 4349| -------- | -------------------- | ---- | ------------------------------------------------------------ | 4350| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 4351| callback | AsyncCallback\<void> | 是 | 设置音量的回调方法。 | 4352 4353**示例:** 4354 4355```js 4356let vol = 0.5; 4357videoPlayer.setVolume(vol, (err, result) => { 4358 if (err == null) { 4359 console.info('setVolume success!'); 4360 } else { 4361 console.info('setVolume fail!'); 4362 } 4363}); 4364``` 4365 4366### setVolume<sup>8+</sup> 4367 4368setVolume(vol: number): Promise\<void> 4369 4370通过Promise方式设置音量。 4371 4372**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4373 4374**参数:** 4375 4376| 参数名 | 类型 | 必填 | 说明 | 4377| ------ | ------ | ---- | ------------------------------------------------------------ | 4378| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 4379 4380**返回值:** 4381 4382| 类型 | 说明 | 4383| -------------- | ------------------------- | 4384| Promise\<void> | 设置音量的Promise返回值。 | 4385 4386**示例:** 4387 4388```js 4389let vol = 0.5; 4390videoPlayer.setVolume(vol).then(() => { 4391 console.info('setVolume success'); 4392}).catch((error) => { 4393 console.info(`video catchCallback, error:${error}`); 4394}); 4395``` 4396 4397### release<sup>8+</sup> 4398 4399release(callback: AsyncCallback\<void>): void 4400 4401通过回调方式释放视频资源。 4402 4403**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4404 4405**参数:** 4406 4407| 参数名 | 类型 | 必填 | 说明 | 4408| -------- | -------------------- | ---- | ------------------------ | 4409| callback | AsyncCallback\<void> | 是 | 释放视频资源的回调方法。 | 4410 4411**示例:** 4412 4413```js 4414videoPlayer.release((err) => { 4415 if (err == null) { 4416 console.info('release success!'); 4417 } else { 4418 console.info('release fail!'); 4419 } 4420}); 4421``` 4422 4423### release<sup>8+</sup> 4424 4425release(): Promise\<void> 4426 4427通过Promise方式释放视频资源。 4428 4429**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4430 4431**返回值:** 4432 4433| 类型 | 说明 | 4434| -------------- | ----------------------------- | 4435| Promise\<void> | 释放视频资源的Promise返回值。 | 4436 4437**示例:** 4438 4439```js 4440videoPlayer.release().then(() => { 4441 console.info('release success'); 4442}).catch((error) => { 4443 console.info(`video catchCallback, error:${error}`); 4444}); 4445``` 4446 4447### getTrackDescription<sup>8+</sup> 4448 4449getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void 4450 4451通过回调方式获取视频轨道信息。 4452 4453**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4454 4455**参数:** 4456 4457| 参数名 | 类型 | 必填 | 说明 | 4458| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ | 4459| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是 | 视频轨道信息MediaDescription数组回调方法。 | 4460 4461**示例:** 4462 4463```js 4464function printfDescription(obj) { 4465 for (let item in obj) { 4466 let property = obj[item]; 4467 console.info('video key is ' + item); 4468 console.info('video value is ' + property); 4469 } 4470} 4471 4472videoPlayer.getTrackDescription((error, arrList) => { 4473 if ((arrList) != null) { 4474 for (let i = 0; i < arrList.length; i++) { 4475 printfDescription(arrList[i]); 4476 } 4477 } else { 4478 console.log(`video getTrackDescription fail, error:${error}`); 4479 } 4480}); 4481``` 4482 4483### getTrackDescription<sup>8+</sup> 4484 4485getTrackDescription(): Promise\<Array\<MediaDescription>> 4486 4487通过Promise方式获取视频轨道信息。 4488 4489**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4490 4491**返回值:** 4492 4493| 类型 | 说明 | 4494| ------------------------------------------------------ | ----------------------------------------------- | 4495| Promise<Array<[MediaDescription](#mediadescription8)>> | 视频轨道信息MediaDescription数组Promise返回值。 | 4496 4497**示例:** 4498 4499```js 4500function printfDescription(obj) { 4501 for (let item in obj) { 4502 let property = obj[item]; 4503 console.info('video key is ' + item); 4504 console.info('video value is ' + property); 4505 } 4506} 4507 4508let arrayDescription; 4509videoPlayer.getTrackDescription().then((arrList) => { 4510 if (arrList != null) { 4511 arrayDescription = arrList; 4512 } else { 4513 console.log('video getTrackDescription fail'); 4514 } 4515}).catch((error) => { 4516 console.info(`video catchCallback, error:${error}`); 4517}); 4518for (let i = 0; i < arrayDescription.length; i++) { 4519 printfDescription(arrayDescription[i]); 4520} 4521``` 4522 4523### setSpeed<sup>8+</sup> 4524 4525setSpeed(speed:number, callback: AsyncCallback\<number>): void 4526 4527通过回调方式设置播放速度。 4528 4529**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4530 4531**参数:** 4532 4533| 参数名 | 类型 | 必填 | 说明 | 4534| -------- | ---------------------- | ---- | ---------------------------------------------------------- | 4535| speed | number | 是 | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 4536| callback | AsyncCallback\<number> | 是 | 设置播放速度的回调方法。 | 4537 4538**示例:** 4539 4540```js 4541import media from '@ohos.multimedia.media' 4542let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X; 4543 4544videoPlayer.setSpeed(speed, (err, result) => { 4545 if (err == null) { 4546 console.info('setSpeed success!'); 4547 } else { 4548 console.info('setSpeed fail!'); 4549 } 4550}); 4551``` 4552 4553### setSpeed<sup>8+</sup> 4554 4555setSpeed(speed:number): Promise\<number> 4556 4557通过Promise方式设置播放速度。 4558 4559**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4560 4561**参数:** 4562 4563| 参数名 | 类型 | 必填 | 说明 | 4564| ------ | ------ | ---- | ---------------------------------------------------------- | 4565| speed | number | 是 | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 4566 4567**返回值:** 4568 4569| 类型 | 说明 | 4570| ---------------- | ------------------------------------------------------------ | 4571| Promise\<number> | 播放速度Promise返回值,具体见[PlaybackSpeed](#playbackspeed8)。 | 4572 4573**示例:** 4574 4575```js 4576import media from '@ohos.multimedia.media' 4577let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X; 4578 4579videoPlayer.setSpeed(speed).then(() => { 4580 console.info('setSpeed success'); 4581}).catch((error) => { 4582 console.info(`video catchCallback, error:${error}`); 4583}); 4584``` 4585 4586### on('playbackCompleted')<sup>8+</sup> 4587 4588on(type: 'playbackCompleted', callback: Callback\<void>): void 4589 4590开始监听视频播放完成事件。 4591 4592**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4593 4594**参数:** 4595 4596| 参数名 | 类型 | 必填 | 说明 | 4597| -------- | -------- | ---- | ----------------------------------------------------------- | 4598| type | string | 是 | 视频播放完成事件回调类型,支持的事件:'playbackCompleted'。 | 4599| callback | function | 是 | 视频播放完成事件回调方法。 | 4600 4601**示例:** 4602 4603```js 4604videoPlayer.on('playbackCompleted', () => { 4605 console.info('playbackCompleted success!'); 4606}); 4607``` 4608 4609### on('bufferingUpdate')<sup>8+</sup> 4610 4611on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void 4612 4613开始监听视频缓存更新事件。仅网络播放支持该订阅事件。 4614 4615**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4616 4617**参数:** 4618 4619| 参数名 | 类型 | 必填 | 说明 | 4620| -------- | -------- | ---- | ------------------------------------------------------------ | 4621| type | string | 是 | 视频缓存事件回调类型,支持的事件:'bufferingUpdate'。 | 4622| callback | function | 是 | 视频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)为BUFFERING_PERCENT或CACHED_DURATION时,value值有效,否则固定为0。 | 4623 4624**示例:** 4625 4626```js 4627videoPlayer.on('bufferingUpdate', (infoType, value) => { 4628 console.log('video bufferingInfo type: ' + infoType); 4629 console.log('video bufferingInfo value: ' + value); 4630}); 4631``` 4632 4633### on('startRenderFrame')<sup>8+</sup> 4634 4635on(type: 'startRenderFrame', callback: Callback\<void>): void 4636 4637开始监听视频播放首帧送显上报事件。 4638 4639**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4640 4641**参数:** 4642 4643| 参数名 | 类型 | 必填 | 说明 | 4644| -------- | --------------- | ---- | ------------------------------------------------------------ | 4645| type | string | 是 | 视频播放首帧送显上报事件回调类型,支持的事件:'startRenderFrame'。 | 4646| callback | Callback\<void> | 是 | 视频播放首帧送显上报事件回调方法。 | 4647 4648**示例:** 4649 4650```js 4651videoPlayer.on('startRenderFrame', () => { 4652 console.info('startRenderFrame success!'); 4653}); 4654``` 4655 4656### on('videoSizeChanged')<sup>8+</sup> 4657 4658on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void 4659 4660开始监听视频播放宽高变化事件。 4661 4662**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4663 4664**参数:** 4665 4666| 参数名 | 类型 | 必填 | 说明 | 4667| -------- | -------- | ---- | ------------------------------------------------------------ | 4668| type | string | 是 | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChanged'。 | 4669| callback | function | 是 | 视频播放宽高变化事件回调方法,width表示宽,height表示高。 | 4670 4671**示例:** 4672 4673```js 4674videoPlayer.on('videoSizeChanged', (width, height) => { 4675 console.log('video width is: ' + width); 4676 console.log('video height is: ' + height); 4677}); 4678``` 4679 4680### on('error')<sup>8+</sup> 4681 4682on(type: 'error', callback: ErrorCallback): void 4683 4684开始监听视频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。 4685 4686**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4687 4688**参数:** 4689 4690| 参数名 | 类型 | 必填 | 说明 | 4691| -------- | ------------- | ---- | ------------------------------------------------------------ | 4692| type | string | 是 | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':视频播放中发生错误,触发该事件。 | 4693| callback | ErrorCallback | 是 | 播放错误事件回调方法。 | 4694 4695**示例:** 4696 4697```js 4698videoPlayer.on('error', (error) => { // 设置'error'事件回调 4699 console.info(`video error called, error: ${error}`); 4700}); 4701videoPlayer.url = 'fd://error'; //设置错误的播放地址,触发'error'事件 4702``` 4703 4704## VideoPlayState<sup>(deprecated)</sup><a name=videoplayerstate></a> 4705 4706视频播放的状态机,可通过state属性获取当前状态。 4707 4708> **说明:** 4709> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。 4710 4711**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 4712 4713| 名称 | 类型 | 说明 | 4714| -------- | ------ | -------------- | 4715| idle | string | 视频播放空闲。 | 4716| prepared | string | 视频播放准备。 | 4717| playing | string | 视频正在播放。 | 4718| paused | string | 视频暂停播放。 | 4719| stopped | string | 视频播放停止。 | 4720| error | string | 错误状态。 | 4721 4722## AudioRecorder<sup>(deprecated)</sup> 4723 4724> **说明:** 4725> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder](#avrecorder9)替代。 4726 4727音频录制管理类,用于录制音频媒体。在调用AudioRecorder的方法前,需要先通过[createAudioRecorder()](#mediacreateaudiorecorder) 构建一个AudioRecorder实例。 4728 4729音频录制demo可参考:[音频录制开发指导](../../media/audio-recorder.md) 4730 4731### prepare<a name=audiorecorder_prepare></a> 4732 4733prepare(config: AudioRecorderConfig): void 4734 4735录音准备。 4736 4737**需要权限:** ohos.permission.MICROPHONE 4738 4739**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4740 4741**参数:** 4742 4743| 参数名 | 类型 | 必填 | 说明 | 4744| ------ | ------------------------------------------- | ---- | ------------------------------------------------------------ | 4745| config | [AudioRecorderConfig](#audiorecorderconfigdeprecated) | 是 | 配置录音的相关参数,包括音频输出URI、编码格式、采样率、声道数、输出格式等。 | 4746 4747**示例:** 4748 4749```js 4750let audioRecorderConfig = { 4751 audioEncoder : media.AudioEncoder.AAC_LC, 4752 audioEncodeBitRate : 22050, 4753 audioSampleRate : 22050, 4754 numberOfChannels : 2, 4755 format : media.AudioOutputFormat.AAC_ADTS, 4756 uri : 'fd://1', // 文件需先由调用者创建,并给予适当的权限 4757 location : { latitude : 30, longitude : 130}, 4758} 4759audioRecorder.on('prepare', () => { //设置'prepare'事件回调 4760 console.log('prepare success'); 4761}); 4762audioRecorder.prepare(audioRecorderConfig); 4763``` 4764 4765 4766### start<a name=audiorecorder_start></a> 4767 4768start(): void 4769 4770开始录制,需在[prepare](#audiorecorder_on)事件成功触发后,才能调用start方法。 4771 4772**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4773 4774**示例:** 4775 4776```js 4777audioRecorder.on('start', () => { //设置'start'事件回调 4778 console.log('audio recorder start success'); 4779}); 4780audioRecorder.start(); 4781``` 4782 4783### pause<a name=audiorecorder_pause></a> 4784 4785pause():void 4786 4787暂停录制,需要在[start](#audiorecorder_on)事件成功触发后,才能调用pause方法。 4788 4789**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4790 4791**示例:** 4792 4793```js 4794audioRecorder.on('pause', () => { //设置'pause'事件回调 4795 console.log('audio recorder pause success'); 4796}); 4797audioRecorder.pause(); 4798``` 4799 4800### resume<a name=audiorecorder_resume></a> 4801 4802resume():void 4803 4804恢复录制,需要在[pause](#audiorecorder_on)事件成功触发后,才能调用resume方法。 4805 4806**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4807 4808**示例:** 4809 4810```js 4811audioRecorder.on('resume', () => { //设置'resume'事件回调 4812 console.log('audio recorder resume success'); 4813}); 4814audioRecorder.resume(); 4815``` 4816 4817### stop<a name=audiorecorder_stop></a> 4818 4819stop(): void 4820 4821停止录音。 4822 4823**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4824 4825**示例:** 4826 4827```js 4828audioRecorder.on('stop', () => { //设置'stop'事件回调 4829 console.log('audio recorder stop success'); 4830}); 4831audioRecorder.stop(); 4832``` 4833 4834### release<a name=audiorecorder_release></a> 4835 4836release(): void 4837 4838释放录音资源。 4839 4840**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4841 4842**示例:** 4843 4844```js 4845audioRecorder.on('release', () => { //设置'release'事件回调 4846 console.log('audio recorder release success'); 4847}); 4848audioRecorder.release(); 4849audioRecorder = undefined; 4850``` 4851 4852### reset<a name=audiorecorder_reset></a> 4853 4854reset(): void 4855 4856重置录音。 4857 4858进行重置录音之前,需要先调用[stop()](#audiorecorder_stop)停止录音。重置录音之后,需要调用[prepare()](#audiorecorder_prepare)设置录音参数项,才能再次进行录音。 4859 4860**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4861 4862**示例:** 4863 4864```js 4865audioRecorder.on('reset', () => { //设置'reset'事件回调 4866 console.log('audio recorder reset success'); 4867}); 4868audioRecorder.reset(); 4869``` 4870 4871### on('prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset')<a name=audiorecorder_on></a> 4872 4873on(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset', callback: () => void): void 4874 4875开始订阅音频录制事件。 4876 4877**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4878 4879**参数:** 4880 4881| 参数名 | 类型 | 必填 | 说明 | 4882| -------- | -------- | ---- | ------------------------------------------------------------ | 4883| 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)调用,音频重置为初始状态,触发该事件。 | 4884| callback | ()=>void | 是 | 录制事件回调方法。 | 4885 4886**示例:** 4887 4888```js 4889let audioRecorder = media.createAudioRecorder(); // 创建一个音频录制实例 4890let audioRecorderConfig = { 4891 audioEncoder : media.AudioEncoder.AAC_LC, 4892 audioEncodeBitRate : 22050, 4893 audioSampleRate : 22050, 4894 numberOfChannels : 2, 4895 format : media.AudioOutputFormat.AAC_ADTS, 4896 uri : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限 4897 location : { latitude : 30, longitude : 130}, 4898} 4899audioRecorder.on('error', (error) => { // 设置'error'事件回调 4900 console.info(`audio error called, error: ${error}`); 4901}); 4902audioRecorder.on('prepare', () => { // 设置'prepare'事件回调 4903 console.log('prepare success'); 4904 audioRecorder.start(); // 开始录制,并触发'start'事件回调 4905}); 4906audioRecorder.on('start', () => { // 设置'start'事件回调 4907 console.log('audio recorder start success'); 4908}); 4909audioRecorder.on('pause', () => { // 设置'pause'事件回调 4910 console.log('audio recorder pause success'); 4911}); 4912audioRecorder.on('resume', () => { // 设置'resume'事件回调 4913 console.log('audio recorder resume success'); 4914}); 4915audioRecorder.on('stop', () => { // 设置'stop'事件回调 4916 console.log('audio recorder stop success'); 4917}); 4918audioRecorder.on('release', () => { // 设置'release'事件回调 4919 console.log('audio recorder release success'); 4920}); 4921audioRecorder.on('reset', () => { // 设置'reset'事件回调 4922 console.log('audio recorder reset success'); 4923}); 4924audioRecorder.prepare(audioRecorderConfig) // 设置录制参数 ,并触发'prepare'事件回调 4925``` 4926 4927### on('error') 4928 4929on(type: 'error', callback: ErrorCallback): void 4930 4931开始订阅音频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。 4932 4933**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4934 4935**参数:** 4936 4937| 参数名 | 类型 | 必填 | 说明 | 4938| -------- | ------------- | ---- | ------------------------------------------------------------ | 4939| type | string | 是 | 录制错误事件回调类型'error'。<br/>- 'error':音频录制过程中发生错误,触发该事件。 | 4940| callback | ErrorCallback | 是 | 录制错误事件回调方法。 | 4941 4942**示例:** 4943 4944```js 4945let audioRecorderConfig = { 4946 audioEncoder : media.AudioEncoder.AAC_LC, 4947 audioEncodeBitRate : 22050, 4948 audioSampleRate : 22050, 4949 numberOfChannels : 2, 4950 format : media.AudioOutputFormat.AAC_ADTS, 4951 uri : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限 4952 location : { latitude : 30, longitude : 130}, 4953} 4954audioRecorder.on('error', (error) => { // 设置'error'事件回调 4955 console.info(`audio error called, error: ${error}`); 4956}); 4957audioRecorder.prepare(audioRecorderConfig); // prepare不设置参数,触发'error'事件 4958``` 4959 4960## AudioRecorderConfig<sup>(deprecated)</sup> 4961 4962> **说明:** 4963> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorderConfig](#avrecorderconfig9)替代。 4964 4965表示音频的录音配置。 4966 4967**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4968 4969| 名称 | 类型 | 必填 | 说明 | 4970| ----------------------------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | 4971| audioEncoder | [AudioEncoder](#audioencoderdeprecated) | 否 | 音频编码格式,默认设置为AAC_LC。<br/>**说明:** 从API version 8开始废弃,建议使用audioEncoderMime替代。 | 4972| audioEncodeBitRate | number | 否 | 音频编码比特率,默认值为48000。 | 4973| audioSampleRate | number | 否 | 音频采集采样率,默认值为48000。 | 4974| numberOfChannels | number | 否 | 音频采集声道数,默认值为2。 | 4975| format | [AudioOutputFormat](#audiooutputformatdeprecated) | 否 | 音频输出封装格式,默认设置为MPEG_4。<br/>**说明:** 从API version 8开始废弃,建议使用fileFormat替代。 | 4976| location | [Location](#location) | 否 | 音频采集的地理位置。 | 4977| uri | string | 是 | 音频输出URI:fd://xx (fd number)<br/> <br/>文件需要由调用者创建,并赋予适当的权限。 | 4978| audioEncoderMime<sup>8+</sup> | [CodecMimeType](#codecmimetype8) | 否 | 音频编码格式。 | 4979| fileFormat<sup>8+</sup> | [ContainerFormatType](#containerformattype8) | 否 | 音频编码格式。 | 4980 4981## AudioEncoder<sup>(deprecated)</sup> 4982 4983> **说明:** 4984> 从API version 6开始支持,从API version 8开始废弃,建议使用[CodecMimeType](#codecmimetype8)替代。 4985 4986表示音频编码格式的枚举。 4987 4988**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 4989 4990| 名称 | 值 | 说明 | 4991| ------- | ---- | ------------------------------------------------------------ | 4992| DEFAULT | 0 | 默认编码格式。<br/>仅做接口定义,暂不支持使用。 | 4993| AMR_NB | 1 | AMR-NB(Adaptive Multi Rate-Narrow Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 | 4994| AMR_WB | 2 | AMR-WB(Adaptive Multi Rate-Wide Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 | 4995| AAC_LC | 3 | AAC-LC(Advanced Audio Coding Low Complexity)编码格式。 | 4996| HE_AAC | 4 | HE_AAC(High-Efficiency Advanced Audio Coding)编码格式。<br/>仅做接口定义,暂不支持使用。 | 4997 4998## AudioOutputFormat<sup>(deprecated)</sup> 4999 5000> **说明:** 5001> 从API version 6开始支持,从API version 8 开始废弃,建议使用[ContainerFormatType](#containerformattype8)替代。 5002 5003表示音频封装格式的枚举。 5004 5005**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 5006 5007| 名称 | 值 | 说明 | 5008| -------- | ---- | ------------------------------------------------------------ | 5009| DEFAULT | 0 | 默认封装格式。<br/>仅做接口定义,暂不支持使用。 | 5010| MPEG_4 | 2 | 封装为MPEG-4格式。 | 5011| AMR_NB | 3 | 封装为AMR_NB格式。<br/>仅做接口定义,暂不支持使用。 | 5012| AMR_WB | 4 | 封装为AMR_WB格式。<br/>仅做接口定义,暂不支持使用。 | 5013| AAC_ADTS | 6 | 封装为ADTS(Audio Data Transport Stream)格式,是AAC音频的传输流格式。 | 5014