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