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- 视频转码([AVTranscoder](#avtranscoder12)<sup>12+</sup>) 15 16- 获取音视频元数据([AVMetadataExtractor](#avmetadataextractor11)<sup>11+</sup>) 17 18- 获取视频缩略图([AVImageGenerator](#avimagegenerator12)<sup>12+</sup>) 19 20## 导入模块 21 22```ts 23import { media } from '@kit.MediaKit'; 24``` 25 26## media.createAVPlayer<sup>9+</sup> 27 28createAVPlayer(callback: AsyncCallback\<AVPlayer>): void 29 30异步方式创建音视频播放实例,通过注册回调函数获取返回值。 31 32> **说明:** 33> 34> - 推荐单个应用创建的音视频播放实例(即音频、视频、音视频三类相加)不超过16个。<!--Del--> 35> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放实例。<!--DelEnd--> 36 37**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 38 39**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 40 41**参数:** 42 43| 参数名 | 类型 | 必填 | 说明 | 44| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | 45| callback | AsyncCallback\<[AVPlayer](#avplayer9)> | 是 | 回调函数。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 | 46 47**错误码:** 48 49以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 50 51| 错误码ID | 错误信息 | 52| -------- | ------------------------------ | 53| 5400101 | No memory. Return by callback. | 54 55**示例:** 56 57```ts 58import { BusinessError } from '@kit.BasicServicesKit'; 59 60let avPlayer: media.AVPlayer; 61media.createAVPlayer((error: BusinessError, video: media.AVPlayer) => { 62 if (video != null) { 63 avPlayer = video; 64 console.info('Succeeded in creating AVPlayer'); 65 } else { 66 console.error(`Failed to create AVPlayer, error message:${error.message}`); 67 } 68}); 69``` 70 71## media.createAVPlayer<sup>9+</sup> 72 73createAVPlayer(): Promise\<AVPlayer> 74 75异步方式创建音视频播放实例,通过Promise获取返回值。 76 77> **说明:** 78> 79> - 推荐单个应用创建的音视频播放实例(即音频、视频、音视频三类相加)不超过16个。<!--Del--> 80> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放实例。<!--DelEnd--> 81 82**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 83 84**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 85 86**返回值:** 87 88| 类型 | 说明 | 89| ------------------------------- | ------------------------------------------------------------ | 90| Promise\<[AVPlayer](#avplayer9)> | Promise对象。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 | 91 92**错误码:** 93 94以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 95 96| 错误码ID | 错误信息 | 97| -------- | ----------------------------- | 98| 5400101 | No memory. Return by promise. | 99 100**示例:** 101 102```ts 103import { BusinessError } from '@kit.BasicServicesKit'; 104 105let avPlayer: media.AVPlayer; 106media.createAVPlayer().then((video: media.AVPlayer) => { 107 if (video != null) { 108 avPlayer = video; 109 console.info('Succeeded in creating AVPlayer'); 110 } else { 111 console.error('Failed to create AVPlayer'); 112 } 113}).catch((error: BusinessError) => { 114 console.error(`Failed to create AVPlayer, error message:${error.message}`); 115}); 116``` 117 118## media.createAVRecorder<sup>9+</sup> 119 120createAVRecorder(callback: AsyncCallback\<AVRecorder>): void 121 122异步方式创建音视频录制实例。通过注册回调函数获取返回值。 123 124> **说明:** 125> 126> - 可创建的音视频录制实例不能超过2个。 127> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。 128 129**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 130 131**参数:** 132 133| 参数名 | 类型 | 必填 | 说明 | 134| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ | 135| callback | AsyncCallback\<[AVRecorder](#avrecorder9)> | 是 | 回调函数。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 | 136 137**错误码:** 138 139以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 140 141| 错误码ID | 错误信息 | 142| -------- | ------------------------------ | 143| 5400101 | No memory. Return by callback. | 144 145**示例:** 146 147```ts 148import { BusinessError } from '@kit.BasicServicesKit'; 149let avRecorder: media.AVRecorder; 150 151media.createAVRecorder((error: BusinessError, recorder: media.AVRecorder) => { 152 if (recorder != null) { 153 avRecorder = recorder; 154 console.info('Succeeded in creating AVRecorder'); 155 } else { 156 console.error(`Failed to create AVRecorder, error message:${error.message}`); 157 } 158}); 159``` 160 161## media.createAVRecorder<sup>9+</sup> 162 163createAVRecorder(): Promise\<AVRecorder> 164 165异步方式创建音视频录制实例。通过Promise获取返回值。 166 167> **说明:** 168> 169> - 可创建的音视频录制实例不能超过2个。 170> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。 171 172**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 173 174**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 175 176**返回值:** 177 178| 类型 | 说明 | 179| ------------------------------------ | ------------------------------------------------------------ | 180| Promise\<[AVRecorder](#avrecorder9)> | Promise对象。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 | 181 182**错误码:** 183 184以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 185 186| 错误码ID | 错误信息 | 187| -------- | ----------------------------- | 188| 5400101 | No memory. Return by promise. | 189 190**示例:** 191 192```ts 193import { BusinessError } from '@kit.BasicServicesKit'; 194 195let avRecorder: media.AVRecorder; 196media.createAVRecorder().then((recorder: media.AVRecorder) => { 197 if (recorder != null) { 198 avRecorder = recorder; 199 console.info('Succeeded in creating AVRecorder'); 200 } else { 201 console.error('Failed to create AVRecorder'); 202 } 203}).catch((error: BusinessError) => { 204 console.error(`Failed to create AVRecorder, error message:${error.message}`); 205}); 206``` 207 208## media.createAVTranscoder<sup>12+</sup> 209 210createAVTranscoder(): Promise\<AVTranscoder> 211 212异步方式创建视频转码实例,通过Promise获取返回值。 213 214> **说明:** 215 216> 可创建的视频转码实例不能超过2个。 217 218**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 219 220**返回值:** 221 222| 类型 | 说明 | 223| ------------------------------- | ------------------------------------------------------------ | 224| Promise\<[AVTranscoder](#avtranscoder12)> | Promise对象。异步返回AVTranscoder实例,失败时返回null。可用于视频转码。 | 225 226**错误码:** 227 228以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 229 230| 错误码ID | 错误信息 | 231| -------- | ----------------------------- | 232| 5400101 | No memory. Return by promise. | 233 234**示例:** 235 236```ts 237import { BusinessError } from '@kit.BasicServicesKit'; 238 239let avTranscoder: media.AVTranscoder; 240media.createAVTranscoder().then((transcoder: media.AVTranscoder) => { 241 if (transcoder != null) { 242 avTranscoder = transcoder; 243 console.info('Succeeded in creating AVTranscoder'); 244 } else { 245 console.error('Failed to create AVTranscoder'); 246 } 247}).catch((error: BusinessError) => { 248 console.error(`Failed to create AVTranscoder, error message:${error.message}`); 249}); 250``` 251 252## media.createAVMetadataExtractor<sup>11+</sup> 253 254createAVMetadataExtractor(callback: AsyncCallback\<AVMetadataExtractor>): void 255 256异步方式创建AVMetadataExtractor实例,通过注册回调函数获取返回值。 257 258**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 259 260**参数:** 261 262| 参数名 | 类型 | 必填 | 说明 | 263| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | 264| callback | AsyncCallback\<[AVMetadataExtractor](#avmetadataextractor11)> | 是 | 回调函数。当创建AVMetadataExtractor实例成功,err为undefined,data为获取到的AVMetadataExtractor实例,否则为错误对象。 | 265 266**错误码:** 267 268以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 269 270| 错误码ID | 错误信息 | 271| -------- | ------------------------------ | 272| 5400101 | No memory. Returned by callback. | 273 274**示例:** 275 276```ts 277import { BusinessError } from '@kit.BasicServicesKit'; 278 279let avMetadataExtractor: media.AVMetadataExtractor; 280media.createAVMetadataExtractor((error: BusinessError, extractor: media.AVMetadataExtractor) => { 281 if (extractor != null) { 282 avMetadataExtractor = extractor; 283 console.info('Succeeded in creating AVMetadataExtractor'); 284 } else { 285 console.error(`Failed to create AVMetadataExtractor, error message:${error.message}`); 286 } 287}); 288``` 289 290## media.createAVMetadataExtractor<sup>11+</sup> 291 292createAVMetadataExtractor(): Promise\<AVMetadataExtractor> 293 294异步方式创建AVMetadataExtractor实例,通过Promise获取返回值。 295 296**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 297 298**错误码:** 299 300以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 301 302| 错误码ID | 错误信息 | 303| -------- | ------------------------------ | 304| 5400101 | No memory. Returned by promise. | 305 306**示例:** 307 308```ts 309import { BusinessError } from '@kit.BasicServicesKit'; 310 311let avMetadataExtractor: media.AVMetadataExtractor; 312media.createAVMetadataExtractor().then((extractor: media.AVMetadataExtractor) => { 313 if (extractor != null) { 314 avMetadataExtractor = extractor; 315 console.info('Succeeded in creating AVMetadataExtractor'); 316 } else { 317 console.error(`Failed to create AVMetadataExtractor`); 318 } 319}).catch((error: BusinessError) => { 320 console.error(`Failed to create AVMetadataExtractor, error message:${error.message}`); 321}); 322``` 323 324## media.createSoundPool<sup>10+</sup> 325 326createSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo, callback: AsyncCallback\<SoundPool>): void 327 328创建音频池实例,使用callback方式异步获取返回值。 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) | 是 | 音频播放参数信息。其中audioRenderInfo中的参数usage取值为STREAM_USAGE_UNKNOWN,STREAM_USAGE_MUSIC,STREAM_USAGE_MOVIE,STREAM_USAGE_AUDIOBOOK时,SoundPool播放短音时为混音模式,不会打断其他音频播放。 | 338| callback | AsyncCallback<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | 是 | 回调函数。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 | 339 340**错误码:** 341 342以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 343 344| 错误码ID | 错误信息 | 345| -------- | ------------------------------ | 346| 5400101 | No memory. Return by callback. | 347 348**示例:** 349 350```js 351import { audio } from '@kit.AudioKit'; 352 353let soundPool: media.SoundPool; 354let audioRendererInfo: audio.AudioRendererInfo = { 355 usage : audio.StreamUsage.STREAM_USAGE_MUSIC, 356 rendererFlags : 0 357} 358 359media.createSoundPool(5, audioRendererInfo, (error, soundPool_: media.SoundPool) => { 360 if (error) { 361 console.error(`Failed to createSoundPool`) 362 return; 363 } else { 364 soundPool = soundPool_; 365 console.info(`Succeeded in createSoundPool`) 366 } 367}); 368``` 369 370## media.createSoundPool<sup>10+</sup> 371 372createSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo): Promise\<SoundPool> 373 374创建音频池实例,通过Promise获取返回值。 375 376**系统能力:** SystemCapability.Multimedia.Media.SoundPool 377 378**参数:** 379 380| 参数名 | 类型 | 必填 | 说明 | 381| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ | 382| maxStreams | number | 是 | soundPool实例的最大播放的流数 | 383| audioRenderInfo | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8) | 是 | 音频播放参数信息 | 384 385**返回值:** 386 387| 类型 | 说明 | 388| ----------------------------------------- | ------------------------------------------------------------ | 389| Promise<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | Promise对象。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 | 390 391**错误码:** 392 393以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 394 395| 错误码ID | 错误信息 | 396| -------- | ----------------------------- | 397| 5400101 | No memory. Return by promise. | 398 399**示例:** 400 401```js 402import { audio } from '@kit.AudioKit'; 403import { BusinessError } from '@kit.BasicServicesKit'; 404 405let soundPool: media.SoundPool; 406let audioRendererInfo: audio.AudioRendererInfo = { 407 usage : audio.StreamUsage.STREAM_USAGE_MUSIC, 408 rendererFlags : 0 409} 410 411media.createSoundPool(5, audioRendererInfo).then((soundpool_: media.SoundPool) => { 412 if (soundpool_ != null) { 413 soundPool = soundpool_; 414 console.info('Succceeded in creating SoundPool'); 415 } else { 416 console.error('Failed to create SoundPool'); 417 } 418}, (error: BusinessError) => { 419 console.error(`soundpool catchCallback, error message:${error.message}`); 420}); 421``` 422 423## media.createAVScreenCaptureRecorder<sup>12+</sup> 424 425createAVScreenCaptureRecorder(): Promise\<AVScreenCaptureRecorder> 426 427创建屏幕录制实例,通过Promise获取返回值。 428 429**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 430 431**返回值:** 432 433| 类型 | 说明 | 434| ------------------------------------------------------------ | ------------------------------------------------------------ | 435| Promise\<[AVScreenCaptureRecorder](#avscreencapturerecorder12)> | Promise对象。异步返回AVScreenCaptureRecorder实例,失败时返回null。可用于进行屏幕录制。 | 436 437**错误码:** 438 439| 错误码ID | 错误信息 | 440| -------- | ------------------------------ | 441| 5400101 | No memory. Return by promise. | 442 443**示例:** 444 445```ts 446import { BusinessError } from '@kit.BasicServicesKit'; 447 448let avScreenCaptureRecorder: media.AVScreenCaptureRecorder; 449media.createAVScreenCaptureRecorder().then((captureRecorder: media.AVScreenCaptureRecorder) => { 450 if (captureRecorder != null) { 451 avScreenCaptureRecorder = captureRecorder; 452 console.info('Succeeded in createAVScreenCaptureRecorder'); 453 } else { 454 console.error('Failed to createAVScreenCaptureRecorder'); 455 } 456}).catch((error: BusinessError) => { 457 console.error(`createAVScreenCaptureRecorder catchCallback, error message:${error.message}`); 458}); 459``` 460 461## AVErrorCode<sup>9+</sup> 462 463[媒体错误码](errorcode-media.md)类型枚举 464 465**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 466 467**系统能力:** SystemCapability.Multimedia.Media.Core 468 469| 名称 | 值 | 说明 | 470| :------------------------------------ | ------- | ------------------------------------ | 471| AVERR_OK | 0 | 表示操作成功。 | 472| AVERR_NO_PERMISSION | 201 | 表示无权限执行此操作。 | 473| AVERR_INVALID_PARAMETER | 401 | 表示传入入参无效。 | 474| AVERR_UNSUPPORT_CAPABILITY | 801 | 表示当前版本不支持该API能力。 | 475| AVERR_NO_MEMORY | 5400101 | 表示系统内存不足或服务数量达到上限。 | 476| AVERR_OPERATE_NOT_PERMIT | 5400102 | 表示当前状态不允许或无权执行此操作。 | 477| AVERR_IO | 5400103 | 表示数据流异常信息。 | 478| AVERR_TIMEOUT | 5400104 | 表示系统或网络响应超时。 | 479| AVERR_SERVICE_DIED | 5400105 | 表示服务进程死亡。 | 480| AVERR_UNSUPPORT_FORMAT | 5400106 | 表示不支持当前媒体资源的格式。 | 481| AVERR_AUDIO_INTERRUPTED<sup>11+</sup> | 5400107 | 表示音频焦点被抢占 | 482 483## MediaType<sup>8+</sup> 484 485媒体类型枚举。 486 487**系统能力:** SystemCapability.Multimedia.Media.Core 488 489| 名称 | 值 | 说明 | 490| -------------- | --------------------- | ------------------- | 491| MEDIA_TYPE_AUD | 0 | 表示音频。 <br> **原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 | 492| MEDIA_TYPE_VID | 1 | 表示视频。 <br> **原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 | 493| MEDIA_TYPE_SUBTITLE<sup>12+</sup> | 2 | 表示字幕。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 494 495## CodecMimeType<sup>8+</sup> 496 497Codec MIME类型枚举。 498 499**系统能力:** SystemCapability.Multimedia.Media.Core 500 501| 名称 | 值 | 说明 | 502| ------------ | --------------------- | ------------------------ | 503| VIDEO_H263 | 'video/h263' | 表示视频/h263类型。 | 504| VIDEO_AVC | 'video/avc' | 表示视频/avc类型。 | 505| VIDEO_MPEG2 | 'video/mpeg2' | 表示视频/mpeg2类型。 | 506| VIDEO_MPEG4 | 'video/mp4v-es' | 表示视频/mpeg4类型。 | 507| VIDEO_VP8 | 'video/x-vnd.on2.vp8' | 表示视频/vp8类型。 | 508| VIDEO_HEVC<sup>11+</sup> | 'video/hevc' | 表示视频/H265类型。| 509| AUDIO_AAC | 'audio/mp4a-latm' | 表示音频/mp4a-latm类型。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 510| AUDIO_VORBIS | 'audio/vorbis' | 表示音频/vorbis类型。 | 511| AUDIO_FLAC | 'audio/flac' | 表示音频/flac类型。 | 512| AUDIO_MP3<sup>12+</sup> | 'audio/mpeg' | 表示音频/mpeg类型。 | 513| AUDIO_G711MU<sup>12+</sup> | 'audio/g711mu' | 表示音频/G711-mulaw类型。 | 514 515## MediaDescriptionKey<sup>8+</sup> 516 517媒体信息描述枚举。 518 519**系统能力:** SystemCapability.Multimedia.Media.Core 520 521| 名称 | 值 | 说明 | 522| ------------------------ | --------------- | ------------------------------------------------------------ | 523| MD_KEY_TRACK_INDEX | 'track_index' | 表示轨道序号,其对应键值类型为number。 <br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 524| MD_KEY_TRACK_TYPE | 'track_type' | 表示轨道类型,其对应键值类型为number,参考[MediaType](#mediatype8)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 525| MD_KEY_CODEC_MIME | 'codec_mime' | 表示codec_mime类型,其对应键值类型为string。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 526| MD_KEY_DURATION | 'duration' | 表示媒体时长,其对应键值类型为number,单位为毫秒(ms)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 527| MD_KEY_BITRATE | 'bitrate' | 表示比特率,其对应键值类型为number,单位为比特率(bps)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 528| MD_KEY_WIDTH | 'width' | 表示视频宽度,其对应键值类型为number,单位为像素(px)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 529| MD_KEY_HEIGHT | 'height' | 表示视频高度,其对应键值类型为number,单位为像素(px)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 530| MD_KEY_FRAME_RATE | 'frame_rate' | 表示视频帧率,其对应键值类型为number,单位为每100秒的帧数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 531| MD_KEY_AUD_CHANNEL_COUNT | 'channel_count' | 表示声道数,其对应键值类型为number。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 532| MD_KEY_AUD_SAMPLE_RATE | 'sample_rate' | 表示采样率,其对应键值类型为number,单位为赫兹(Hz)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 533| MD_KEY_AUD_SAMPLE_DEPTH<sup>12+</sup> | 'sample_depth' | 表示位深,其对应键值类型为number,单位为位(bit)。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 534| MD_KEY_TRACK_NAME<sup>12+</sup> | 'track_name' | 表示track名称,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 535| MD_KEY_HDR_TYPE<sup>12+</sup> | 'hdr_type' | 表示视频轨类型,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 536 537## PlaybackInfoKey<sup>12+</sup> 538 539播放信息描述枚举。 540 541**系统能力:** SystemCapability.Multimedia.Media.Core 542 543| 名称 | 值 | 说明 | 544| ------------------------ | --------------- | ------------------------------------------------------------ | 545| SERVER_IP_ADDRESS | 'server_ip_address' | 表示服务器IP地址,其对应键值类型为string。 | 546| AVG_DOWNLOAD_RATE | 'average_download_rate'| 表示平均下载速率,其对应键值类型为number,单位为比特率(bps)。 | 547| DOWNLOAD_RATE | 'download_rate' | 表示1s的下载速率,其对应键值类型为number,单位为比特率(bps)。| 548| IS_DOWNLOADING | 'is_downloading' | 表示下载状态,1表示在下载状态,0表示非下载状态(下载完成),其对应键值类型为number。| 549| BUFFER_DURATION | 'buffer_duration' | 表示缓存数据的可播放时长,其对应键值类型为number,单位为秒(s)。| 550 551## BufferingInfoType<sup>8+</sup> 552 553缓存事件类型枚举。 554 555**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 556 557**系统能力:** SystemCapability.Multimedia.Media.Core 558 559| 名称 | 值 | 说明 | 560| ----------------- | ---- | -------------------------------- | 561| BUFFERING_START | 1 | 表示开始缓存。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 562| BUFFERING_END | 2 | 表示结束缓存。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 563| BUFFERING_PERCENT | 3 | 表示缓存百分比。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 564| CACHED_DURATION | 4 | 表示缓存时长,单位为毫秒(ms)。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 565 566## StateChangeReason<sup>9+</sup> 567 568表示播放或录制实例状态机切换原因的枚举,伴随state一起上报。 569 570**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 571 572**系统能力:** SystemCapability.Multimedia.Media.Core 573 574| 名称 | 值 | 说明 | 575| ---------- | ---- | ------------------------------------------------------------ | 576| USER | 1 | 表示用户行为造成的状态切换,由用户或客户端主动调用接口产生。 | 577| BACKGROUND | 2 | 表示后台系统行为造成的状态切换,比如应用未注册播控中心权限,退到后台时被系统强制暂停或停止。 | 578 579## AVPlayer<sup>9+</sup> 580 581播放管理类,用于管理和播放媒体资源。在调用AVPlayer的方法前,需要先通过[createAVPlayer()](#mediacreateavplayer9)构建一个AVPlayer实例。 582 583Audio/Video播放demo可参考:[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)、[视频播放开发指导](../../media/media/video-playback.md)。 584 585> **说明:** 586> 587> 在使用AVPlayer实例的方法时,建议开发者注册相关回调,主动获取当前状态变化。 588> - [on('stateChange')](#onstatechange9):监听播放状态机AVPlayerState切换。 589> - [on('error')](#onerror9):监听错误事件。 590 591### 属性 592 593**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 594 595| 名称 | 类型 | 只读 | 可选 | 说明 | 596| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 597| url<sup>9+</sup> | string | 否 | 是 | 媒体URL,只允许在**idle**状态下设置。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr)。<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>- 设置网络播放路径,需[声明权限](../../security/AccessToken/declare-permissions.md):[ohos.permission.INTERNET](../../security/AccessToken/permissions-for-all.md#ohospermissioninternet),相关错误码: [201](../errorcode-universal.md)。<br>- 从API version 11开始不支持webm。<br> - 将资源句柄(fd)传递给 AVPlayer 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致媒体播放器数据获取异常。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 598| fdSrc<sup>9+</sup> | [AVFileDescriptor](#avfiledescriptor9) | 否 | 是 | 媒体文件描述,只允许在**idle**状态下设置。<br/>使用场景:应用中的媒体资源被连续存储在同一个文件中。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr)。<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。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 599| dataSrc<sup>10+</sup> | [AVDataSrcDescriptor](#avdatasrcdescriptor10) | 否 | 是 | 流式媒体资源描述,只允许在**idle**状态下设置。<br/>使用场景:应用播放从远端下载到本地的文件,在应用未下载完整音视频资源时,提前播放已获取的资源文件。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr)。<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。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 600| surfaceId<sup>9+</sup> | string | 否 | 是 | 视频窗口ID,默认无窗口。<br/>支持在**initialized**状态下设置。<br/>支持在**prepared**/**playing**/**paused**/**completed**/**stopped**状态下重新设置,重新设置时确保已经在**initialized**状态下进行设置,否则重新设置失败,重新设置后视频播放在新的窗口渲染。<br/>使用场景:视频播放的窗口渲染,纯音频播放不用设置。<br/>**使用示例**:<br/>[通过XComponent创建surfaceId](../apis-arkui/arkui-ts/ts-basic-components-xcomponent.md#getxcomponentsurfaceid)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 601| loop<sup>9+</sup> | boolean | 否 | 否 | 视频循环播放属性,默认'false',设置为'true'表示循环播放,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>直播场景不支持loop设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 602| videoScaleType<sup>9+</sup> | [VideoScaleType](#videoscaletype9) | 否 | 是 | 视频缩放模式,默认VIDEO_SCALE_TYPE_FIT,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 603| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 否 | 是 | 音频焦点模型,默认SHARE_MODE,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>在第一次调用[play()](#play9)之前设置, 以便此后中断模式生效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 604| audioRendererInfo<sup>10+</sup> | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8) | 否 | 是 | 设置音频渲染信息。若媒体源包含视频,则usage默认值为STREAM_USAGE_MOVIE,否则usage默认值为STREAM_USAGE_MUSIC。rendererFlags默认值为0。若默认usage不满足需求,则须主动配置[audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8)。<br/>只允许在**initialized**状态下设置。<br/>在第一次调用[prepare()](#prepare9)之前设置,以便音频渲染器信息在之后生效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 605| audioEffectMode<sup>10+</sup> | [audio.AudioEffectMode](../apis-audio-kit/js-apis-audio.md#audioeffectmode10) | 否 | 是 | 设置音频音效模式,默认值为EFFECT_DEFAULT,动态属性。audioRendererInfo的usage变动时会恢复为默认值,只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 606| state<sup>9+</sup> | [AVPlayerState](#avplayerstate9) | 是 | 否 | 音视频播放的状态,全状态有效,可查询参数。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 607| currentTime<sup>9+</sup> | number | 是 | 否 | 视频的当前播放位置,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 608| duration<sup>9+</sup> | number | 是 | 否 | 视频时长,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 609| width<sup>9+</sup> | number | 是 | 否 | 视频宽,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 610| height<sup>9+</sup> | number | 是 | 否 | 视频高,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 611 612### on('stateChange')<sup>9+</sup> 613 614on(type: 'stateChange', callback: OnAVPlayerStateChangeHandle): void 615 616监听播放状态机AVPlayerState切换的事件。 617 618**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 619 620**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 621 622**参数:** 623 624| 参数名 | 类型 | 必填 | 说明 | 625| -------- | -------- | ---- | ------------------------------------------------------------ | 626| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 627| callback | [OnAVPlayerStateChangeHandle](#onavplayerstatechangehandle12) | 是 | 状态机切换事件回调方法。 | 628 629**示例:** 630 631```ts 632avPlayer.on('stateChange', async (state: string, reason: media.StateChangeReason) => { 633 switch (state) { 634 case 'idle': 635 console.info('state idle called'); 636 break; 637 case 'initialized': 638 console.info('initialized prepared called'); 639 break; 640 case 'prepared': 641 console.info('state prepared called'); 642 break; 643 case 'playing': 644 console.info('state playing called'); 645 break; 646 case 'paused': 647 console.info('state paused called'); 648 break; 649 case 'completed': 650 console.info('state completed called'); 651 break; 652 case 'stopped': 653 console.info('state stopped called'); 654 break; 655 case 'released': 656 console.info('state released called'); 657 break; 658 case 'error': 659 console.info('state error called'); 660 break; 661 default: 662 console.info('unknown state :' + state); 663 break; 664 } 665}) 666``` 667 668### off('stateChange')<sup>9+</sup> 669 670off(type: 'stateChange', callback?: OnAVPlayerStateChangeHandle): void 671 672取消监听播放状态机[AVPlayerState](#avplayerstate9)切换的事件。 673 674**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 675 676**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 677 678**参数:** 679 680| 参数名 | 类型 | 必填 | 说明 | 681| ------ | ------ | ---- | ----------------------------------------------------- | 682| type | string | 是 | 状态机切换事件回调类型,取消注册的事件:'stateChange' | 683| callback | [OnAVPlayerStateChangeHandle](#onavplayerstatechangehandle12) | 否 | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 | 684 685**示例:** 686 687```ts 688avPlayer.off('stateChange') 689``` 690 691### on('error')<sup>9+</sup> 692 693on(type: 'error', callback: ErrorCallback): void 694 695监听[AVPlayer](#avplayer9)的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVPlayerState](#avplayerstate9)也切至error状态,用户需要通过[reset()](#reset9)或者[release()](#release9)退出播放操作。 696 697**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 698 699**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 700 701**参数:** 702 703| 参数名 | 类型 | 必填 | 说明 | 704| -------- | -------- | ---- | ------------------------------------------------------------ | 705| type | string | 是 | 错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。 | 706| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。 | 707 708**错误码:** 709 710以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 711 712| 错误码ID | 错误信息 | 713| -------- | --------------------- | 714| 201 | Permission denied | 715| 401 | The parameter check failed. | 716| 801 | Capability not supported. | 717| 5400101 | No memory. | 718| 5400102 | Operation not allowed.| 719| 5400103 | I/O error | 720| 5400104 | Time out | 721| 5400105 | Service died. | 722| 5400106 | Unsupport format. | 723 724**示例:** 725 726```ts 727import { BusinessError } from '@kit.BasicServicesKit'; 728 729avPlayer.on('error', (error: BusinessError) => { 730 console.info('error happened,and error message is :' + error.message) 731 console.info('error happened,and error code is :' + error.code) 732}) 733``` 734 735### off('error')<sup>9+</sup> 736 737off(type: 'error', callback?: ErrorCallback): void 738 739取消监听播放的错误事件。 740 741**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 742 743**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 744 745**参数:** 746 747| 参数名 | 类型 | 必填 | 说明 | 748| ------ | ------ | ---- | ----------------------------------------- | 749| type | string | 是 | 错误事件回调类型,取消注册的事件:'error' | 750| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。<br/>从API version 12开始支持此参数。 | 751 752**示例:** 753 754```ts 755avPlayer.off('error') 756``` 757 758### setMediaSource<sup>12+</sup> 759 760setMediaSource(src:MediaSource, strategy?: PlaybackStrategy): Promise\<void> 761 762流媒体预下载资源设置,下载url对应的流媒体数据,并暂存在内存中。[视频播放开发指导](../../media/media/video-playback.md)。通过Promise获取返回值。 763 764**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 765 766**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 767 768**参数:** 769 770| 参数名 | 类型 | 必填 | 说明 | 771| -------- | -------- | ---- | -------------------- | 772| src | [MediaSource](#mediasource12) | 是 | 流媒体预下载媒体来源。 | 773| strategy | [PlaybackStrategy](#playbackstrategy12) | 否 | 流媒体预下载播放策略。 | 774 775**返回值:** 776 777| 类型 | 说明 | 778| -------------- | ------------------------------------------ | 779| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 780 781**错误码:** 782 783以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 784 785| 错误码ID | 错误信息 | 786| -------- | ----------------------------------------- | 787| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 788| 5400102 | Operation not allowed. Return by promise. | 789 790**示例:** 791 792```ts 793import { media } from '@kit.MediaKit'; 794 795let player = await media.createAVPlayer(); 796let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"}; 797let mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx", headers); 798let playStrategy : media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 3, preferredHdr: false}; 799player.setMediaSource(mediaSource, playStrategy); 800``` 801 802### setPlaybackStrategy<sup>12+</sup> 803 804setPlaybackStrategy(strategy: PlaybackStrategy): Promise\<void> 805 806设置播放策略,只能在initialized状态下调用。 807 808**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 809 810**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 811 812**参数:** 813 814| 参数名 | 类型 | 必填 | 说明 | 815| -------- | -------- | ---- | -------------------- | 816| strategy | [PlaybackStrategy](#playbackstrategy12) | 是 | 播放策略。 | 817 818**返回值:** 819 820| 类型 | 说明 | 821| -------------- | ------------------------------------ | 822| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 823 824**错误码:** 825 826以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 827 828| 错误码ID | 错误信息 | 829| -------- | ----------------------------------------- | 830| 401 | Parameter error. Possible causes: 1. Incorrect parameter types. 2. Parameter verification failed. | 831| 5400102 | Operation not allowed. Return by promise. | 832 833**示例:** 834 835```ts 836import { media } from '@kit.MediaKit'; 837 838let player = await media.createAVPlayer(); 839let fileDescriptor = await context.resourceManager.getRawFd('xxx.mp4') 840player.fdSrc = fileDescriptor 841let playStrategy : media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 3, 842 preferredHdr: false, mutedMediaType: media.MediaType.MEDIA_TYPE_AUD}; 843player.setPlaybackStrategy(playStrategy); 844``` 845 846### prepare<sup>9+</sup> 847 848prepare(callback: AsyncCallback\<void>): void 849 850准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。使用callback方式异步获取返回值。 851 852**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 853 854**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 855 856**参数:** 857 858| 参数名 | 类型 | 必填 | 说明 | 859| -------- | -------- | ---- | -------------------- | 860| callback | AsyncCallback\<void> | 是 | 准备播放的回调方法。 | 861 862**错误码:** 863 864以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 865 866| 错误码ID | 错误信息 | 867| -------- | ------------------------------------------ | 868| 5400102 | Operation not allowed. Return by callback. | 869| 5400106 | Unsupport format. Return by callback. | 870 871**示例:** 872 873```ts 874import { BusinessError } from '@kit.BasicServicesKit'; 875 876avPlayer.prepare((err: BusinessError) => { 877 if (err) { 878 console.error('Failed to prepare,error message is :' + err.message) 879 } else { 880 console.info('Succeeded in preparing'); 881 } 882}) 883``` 884 885### prepare<sup>9+</sup> 886 887prepare(): Promise\<void> 888 889准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。通过Promise获取返回值。 890 891**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 892 893**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 894 895**返回值:** 896 897| 类型 | 说明 | 898| -------------- | ------------------------- | 899| Promise\<void> | 准备播放的Promise返回值。 | 900 901**错误码:** 902 903以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 904 905| 错误码ID | 错误信息 | 906| -------- | ----------------------------------------- | 907| 5400102 | Operation not allowed. Return by promise. | 908| 5400106 | Unsupport format. Return by promise. | 909 910**示例:** 911 912```ts 913import { BusinessError } from '@kit.BasicServicesKit'; 914 915avPlayer.prepare().then(() => { 916 console.info('Succeeded in preparing'); 917}, (err: BusinessError) => { 918 console.error('Failed to prepare,error message is :' + err.message) 919}) 920``` 921 922### setMediaMuted<sup>12+</sup> 923 924setMediaMuted(mediaType: MediaType, muted: boolean ): Promise\<void> 925 926设置音频静音/取消音频静音。只能在prepared/playing/paused/completed状态下调用。仅支持设置mediaType为音频格式。 927 928**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 929 930**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 931 932**参数:** 933 934| 参数名 | 类型 | 必填 | 说明 | 935| -------- | -------- | ---- | -------------------- | 936| mediaType | [MediaType](#mediatype8) | 是 | 播放策略。 | 937| muted | boolean | 是 | 是否静音播放。 | 938 939**返回值:** 940 941| 类型 | 说明 | 942| -------------- | ------------------------- | 943| Promise\<void> | 准备播放的Promise返回值。 | 944 945**错误码:** 946 947以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 948 949| 错误码ID | 错误信息 | 950| -------- | ----------------------------------------- | 951| 401 | The parameter check failed. Return by promise. | 952| 5400102 | Operation not allowed. Return by promise. | 953 954**示例:** 955 956```ts 957import { BusinessError } from '@kit.BasicServicesKit'; 958 959avPlayer.prepare().then(() => { 960 console.info('Succeeded in preparing'); 961 avPlayer.setMediaMuted(media.MediaType.MEDIA_TYPE_AUD, true) 962}, (err: BusinessError) => { 963 console.error('Failed to prepare,error message is :' + err.message) 964}) 965``` 966 967### play<sup>9+</sup> 968 969play(callback: AsyncCallback\<void>): void 970 971开始播放音视频资源,只能在prepared/paused/completed状态调用。使用callback方式异步获取返回值。 972 973**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 974 975**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 976 977**参数:** 978 979| 参数名 | 类型 | 必填 | 说明 | 980| -------- | -------- | ---- | -------------------- | 981| callback | AsyncCallback\<void> | 是 | 开始播放的回调方法。 | 982 983**错误码:** 984 985以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 986 987| 错误码ID | 错误信息 | 988| -------- | ------------------------------------------ | 989| 5400102 | Operation not allowed. Return by callback. | 990 991**示例:** 992 993```ts 994import { BusinessError } from '@kit.BasicServicesKit'; 995 996avPlayer.play((err: BusinessError) => { 997 if (err) { 998 console.error('Failed to play,error message is :' + err.message) 999 } else { 1000 console.info('Succeeded in playing'); 1001 } 1002}) 1003``` 1004 1005### play<sup>9+</sup> 1006 1007play(): Promise\<void> 1008 1009开始播放音视频资源,只能在prepared/paused/completed状态调用。通过Promise获取返回值。 1010 1011**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1012 1013**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1014 1015**返回值:** 1016 1017| 类型 | 说明 | 1018| -------------- | ------------------------- | 1019| Promise\<void> | 开始播放的Promise返回值。 | 1020 1021**错误码:** 1022 1023以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1024 1025| 错误码ID | 错误信息 | 1026| -------- | ----------------------------------------- | 1027| 5400102 | Operation not allowed. Return by promise. | 1028 1029**示例:** 1030 1031```ts 1032import { BusinessError } from '@kit.BasicServicesKit'; 1033 1034avPlayer.play().then(() => { 1035 console.info('Succeeded in playing'); 1036}, (err: BusinessError) => { 1037 console.error('Failed to play,error message is :' + err.message) 1038}) 1039``` 1040 1041### pause<sup>9+</sup> 1042 1043pause(callback: AsyncCallback\<void>): void 1044 1045暂停播放音视频资源,只能在playing状态调用。使用callback方式异步获取返回值。 1046 1047**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1048 1049**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1050 1051**参数:** 1052 1053| 参数名 | 类型 | 必填 | 说明 | 1054| -------- | -------- | ---- | -------------------- | 1055| callback | AsyncCallback\<void> | 是 | 暂停播放的回调方法。 | 1056 1057**错误码:** 1058 1059以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1060 1061| 错误码ID | 错误信息 | 1062| -------- | ------------------------------------------ | 1063| 5400102 | Operation not allowed. Return by callback. | 1064 1065**示例:** 1066 1067```ts 1068import { BusinessError } from '@kit.BasicServicesKit'; 1069 1070avPlayer.pause((err: BusinessError) => { 1071 if (err) { 1072 console.error('Failed to pause,error message is :' + err.message) 1073 } else { 1074 console.info('Succeeded in pausing'); 1075 } 1076}) 1077``` 1078 1079### pause<sup>9+</sup> 1080 1081pause(): Promise\<void> 1082 1083暂停播放音视频资源,只能在playing状态调用。通过Promise获取返回值。 1084 1085**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1086 1087**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1088 1089**返回值:** 1090 1091| 类型 | 说明 | 1092| -------------- | ------------------------- | 1093| Promise\<void> | 暂停播放的Promise返回值。 | 1094 1095**错误码:** 1096 1097以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1098 1099| 错误码ID | 错误信息 | 1100| -------- | ----------------------------------------- | 1101| 5400102 | Operation not allowed. Return by promise. | 1102 1103**示例:** 1104 1105```ts 1106import { BusinessError } from '@kit.BasicServicesKit'; 1107 1108avPlayer.pause().then(() => { 1109 console.info('Succeeded in pausing'); 1110}, (err: BusinessError) => { 1111 console.error('Failed to pause,error message is :' + err.message) 1112}) 1113``` 1114 1115### stop<sup>9+</sup> 1116 1117stop(callback: AsyncCallback\<void>): void 1118 1119停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。使用callback方式异步获取返回值。 1120 1121**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1122 1123**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1124 1125**参数:** 1126 1127| 参数名 | 类型 | 必填 | 说明 | 1128| -------- | -------- | ---- | -------------------- | 1129| callback | AsyncCallback\<void> | 是 | 停止播放的回调方法。 | 1130 1131**错误码:** 1132 1133以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1134 1135| 错误码ID | 错误信息 | 1136| -------- | ------------------------------------------ | 1137| 5400102 | Operation not allowed. Return by callback. | 1138 1139**示例:** 1140 1141```ts 1142import { BusinessError } from '@kit.BasicServicesKit'; 1143 1144avPlayer.stop((err: BusinessError) => { 1145 if (err) { 1146 console.error('Failed to stop,error message is :' + err.message) 1147 } else { 1148 console.info('Succeeded in stopping'); 1149 } 1150}) 1151``` 1152 1153### stop<sup>9+</sup> 1154 1155stop(): Promise\<void> 1156 1157停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。通过Promise获取返回值。 1158 1159**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1160 1161**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1162 1163**返回值:** 1164 1165| 类型 | 说明 | 1166| -------------- | ------------------------- | 1167| Promise\<void> | 停止播放的Promise返回值。 | 1168 1169**错误码:** 1170 1171以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1172 1173| 错误码ID | 错误信息 | 1174| -------- | ----------------------------------------- | 1175| 5400102 | Operation not allowed. Return by promise. | 1176 1177**示例:** 1178 1179```ts 1180import { BusinessError } from '@kit.BasicServicesKit'; 1181 1182avPlayer.stop().then(() => { 1183 console.info('Succeeded in stopping'); 1184}, (err: BusinessError) => { 1185 console.error('Failed to stop,error message is :' + err.message) 1186}) 1187``` 1188 1189### reset<sup>9+</sup> 1190 1191reset(callback: AsyncCallback\<void>): void 1192 1193重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。使用callback方式异步获取返回值。 1194 1195**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1196 1197**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1198 1199**参数:** 1200 1201| 参数名 | 类型 | 必填 | 说明 | 1202| -------- | -------- | ---- | -------------------- | 1203| callback | AsyncCallback\<void> | 是 | 重置播放的回调方法。 | 1204 1205**错误码:** 1206 1207以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1208 1209| 错误码ID | 错误信息 | 1210| -------- | ------------------------------------------ | 1211| 5400102 | Operation not allowed. Return by callback. | 1212 1213**示例:** 1214 1215```ts 1216import { BusinessError } from '@kit.BasicServicesKit'; 1217 1218avPlayer.reset((err: BusinessError) => { 1219 if (err) { 1220 console.error('Failed to reset,error message is :' + err.message) 1221 } else { 1222 console.info('Succeeded in resetting'); 1223 } 1224}) 1225``` 1226 1227### reset<sup>9+</sup> 1228 1229reset(): Promise\<void> 1230 1231重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。通过Promise获取返回值。 1232 1233**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1234 1235**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1236 1237**返回值:** 1238 1239| 类型 | 说明 | 1240| -------------- | ------------------------- | 1241| Promise\<void> | 重置播放的Promise返回值。 | 1242 1243**错误码:** 1244 1245以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1246 1247| 错误码ID | 错误信息 | 1248| -------- | ----------------------------------------- | 1249| 5400102 | Operation not allowed. Return by promise. | 1250 1251**示例:** 1252 1253```ts 1254import { BusinessError } from '@kit.BasicServicesKit'; 1255 1256avPlayer.reset().then(() => { 1257 console.info('Succeeded in resetting'); 1258}, (err: BusinessError) => { 1259 console.error('Failed to reset,error message is :' + err.message) 1260}) 1261``` 1262 1263### release<sup>9+</sup> 1264 1265release(callback: AsyncCallback\<void>): void 1266 1267销毁播放资源,除released状态外,均可以调用。使用callback方式异步获取返回值。 1268 1269**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1270 1271**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1272 1273**参数:** 1274 1275| 参数名 | 类型 | 必填 | 说明 | 1276| -------- | -------- | ---- | -------------------- | 1277| callback | AsyncCallback\<void> | 是 | 销毁播放的回调方法。 | 1278 1279**错误码:** 1280 1281以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1282 1283| 错误码ID | 错误信息 | 1284| -------- | ------------------------------------------ | 1285| 5400102 | Operation not allowed. Return by callback. | 1286 1287**示例:** 1288 1289```ts 1290import { BusinessError } from '@kit.BasicServicesKit'; 1291 1292avPlayer.release((err: BusinessError) => { 1293 if (err) { 1294 console.error('Failed to release,error message is :' + err.message) 1295 } else { 1296 console.info('Succeeded in releasing'); 1297 } 1298}) 1299``` 1300 1301### release<sup>9+</sup> 1302 1303release(): Promise\<void> 1304 1305销毁播放资源,除released状态,都可以调用。通过Promise获取返回值。 1306 1307**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1308 1309**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1310 1311**返回值:** 1312 1313| 类型 | 说明 | 1314| -------------- | ------------------------- | 1315| Promise\<void> | 销毁播放的Promise返回值。 | 1316 1317**错误码:** 1318 1319以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1320 1321| 错误码ID | 错误信息 | 1322| -------- | ----------------------------------------- | 1323| 5400102 | Operation not allowed. Return by promise. | 1324 1325**示例:** 1326 1327```ts 1328import { BusinessError } from '@kit.BasicServicesKit'; 1329 1330avPlayer.release().then(() => { 1331 console.info('Succeeded in releasing'); 1332}, (err: BusinessError) => { 1333 console.error('Failed to release,error message is :' + err.message) 1334}) 1335``` 1336 1337### getTrackDescription<sup>9+</sup> 1338 1339getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void 1340 1341获取音视频轨道信息,可以在prepared/playing/paused状态调用。获取所有音视轨道信息,应在数据加载回调后调用。使用callback方式异步获取返回值。 1342 1343**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1344 1345**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1346 1347**参数:** 1348 1349| 参数名 | 类型 | 必填 | 说明 | 1350| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- | 1351| callback | AsyncCallback<Array<[MediaDescription](#mediadescription8)>> | 是 | 回调函数,当获取音频轨道信息成功,err为undefined,data为获取到的MediaDescription数组;否则为错误对象。| 1352 1353**错误码:** 1354 1355以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1356 1357| 错误码ID | 错误信息 | 1358| -------- | ------------------------------------------ | 1359| 5400102 | Operation not allowed. Return by callback. | 1360 1361**示例:** 1362 1363```ts 1364import { BusinessError } from '@kit.BasicServicesKit'; 1365 1366avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 1367 if ((arrList) != null) { 1368 console.info('Succeeded in doing getTrackDescription'); 1369 } else { 1370 console.error(`Failed to do getTrackDescription, error:${error}`); 1371 } 1372}); 1373``` 1374 1375### getTrackDescription<sup>9+</sup> 1376 1377getTrackDescription(): Promise\<Array\<MediaDescription>> 1378 1379获取音视频轨道信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。 1380 1381**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1382 1383**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1384 1385**返回值:** 1386 1387| 类型 | 说明 | 1388| ------------------------------------------------------ | ------------------------------------------------- | 1389| Promise<Array<[MediaDescription](#mediadescription8)>> | Promise对象,返回音视频轨道信息MediaDescription数组。 | 1390 1391**错误码:** 1392 1393以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1394 1395| 错误码ID | 错误信息 | 1396| -------- | ----------------------------------------- | 1397| 5400102 | Operation not allowed. Return by promise. | 1398 1399**示例:** 1400 1401```ts 1402import { BusinessError } from '@kit.BasicServicesKit'; 1403 1404avPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => { 1405 console.info('Succeeded in getting TrackDescription'); 1406}).catch((error: BusinessError) => { 1407 console.error(`Failed to get TrackDescription, error:${error}`); 1408}); 1409``` 1410 1411### getSelectedTracks<sup>12+</sup> 1412 1413getSelectedTracks(): Promise\<Array\<number>> 1414 1415获取已选择的音视频轨道索引,可以在prepared/playing/paused状态调用。通过Promise获取返回值。 1416 1417**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1418 1419**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1420 1421**返回值:** 1422 1423| 类型 | 说明 | 1424| ------------------------------------------------------ | ------------------------------------------------- | 1425| Promise<Array<[number]>> | Promise对象,返回已选择音视频轨道索引数组。 | 1426 1427**错误码:** 1428 1429以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1430 1431| 错误码ID | 错误信息 | 1432| -------- | ----------------------------------------- | 1433| 5400102 | Operation not allowed. | 1434 1435**示例:** 1436 1437```ts 1438import { BusinessError } from '@kit.BasicServicesKit'; 1439 1440avPlayer.getSelectedTracks().then((arrList: Array<number>) => { 1441 console.info('Succeeded in getting SelectedTracks'); 1442}).catch((error: BusinessError) => { 1443 console.error(`Failed to get SelectedTracks, error:${error}`); 1444}); 1445``` 1446 1447### getPlaybackInfo<sup>12+</sup> 1448 1449getPlaybackInfo(): Promise\<PlaybackInfo> 1450 1451获取播放过程信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。 1452 1453**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1454 1455**返回值:** 1456 1457| 类型 | 说明 | 1458| ------------------------------------------------------ | ------------------------------------------------- | 1459| Promise<[PlaybackInfo](#playbackinfo12)> | Promise对象,返回播放器信息PlaybackInfo。 | 1460 1461**示例:** 1462 1463```ts 1464import { BusinessError } from '@kit.BasicServicesKit'; 1465import { media } from '@kit.MediaKit'; 1466 1467let avPlayer: media.AVPlayer | undefined = undefined; 1468let playbackInfo: media.PlaybackInfo | undefined = undefined; 1469media.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => { 1470 if (player != null) { 1471 avPlayer = player; 1472 console.info(`Succeeded in creating AVPlayer`); 1473 if (avPlayer) { 1474 try { 1475 playbackInfo = await avPlayer.getPlaybackInfo(); 1476 console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值 1477 } catch (error) { 1478 console.error(`error = ${error}`); 1479 } 1480 } 1481 } else { 1482 console.error(`Failed to create AVPlayer, error message:${err.message}`); 1483 } 1484}); 1485``` 1486 1487### selectTrack<sup>12+</sup> 1488 1489selectTrack(index: number, mode?: SwitchMode): Promise\<void> 1490 1491使用AVPlayer播放多音轨视频时选择指定音轨播放,通过Promise获取返回值。 1492 1493**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1494 1495**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1496 1497**参数:** 1498 1499| 参数名 | 类型 | 必填 | 说明 | 1500| -------- | -------- | ---- | -------------------- | 1501| index | number | 是 | 多音轨轨道索引,来自[MediaDescription](#mediadescription8)。 | 1502| mode | [SwitchMode](#switchmode12) | 否 | 切换视频轨模式,默认为SMOOTH模式,仅支持DASH协议,**仅在视频资源播放时设置**。 | 1503 1504**返回值:** 1505 1506| 类型 | 说明 | 1507| -------------- | ------------------------- | 1508| Promise\<void> | 选择曲目完成的Promise返回值。 | 1509 1510**错误码:** 1511 1512以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 1513 1514| 错误码ID | 错误信息 | 1515| -------- | ----------------------------------------- | 1516| 401 | The parameter check failed. Return by promise. | 1517| 5400102 | Operation not allowed. Return by promise. | 1518 1519**示例:** 1520 1521```ts 1522import { BusinessError } from '@kit.BasicServicesKit'; 1523import { media } from '@kit.MediaKit'; 1524 1525let avPlayer: media.AVPlayer = await media.createAVPlayer(); 1526let audioTrackIndex: Object = 0; 1527avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 1528 if (arrList != null) { 1529 for (let i = 0; i < arrList.length; i++) { 1530 if (i != 0) { 1531 // 获取音频轨道列表 1532 audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX]; 1533 } 1534 } 1535 } else { 1536 console.error(`Failed to get TrackDescription, error:${error}`); 1537 } 1538}); 1539 1540// 选择其中一个音频轨道 1541avPlayer.selectTrack(parseInt(audioTrackIndex.toString())); 1542``` 1543 1544### deselectTrack<sup>12+</sup> 1545 1546deselectTrack(index: number): Promise\<void> 1547 1548使用AVPlayer播放多音轨视频时取消指定音轨播放,通过Promise获取返回值。 1549 1550**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1551 1552**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1553 1554**参数:** 1555 1556| 参数名 | 类型 | 必填 | 说明 | 1557| -------- | -------- | ---- | -------------------- | 1558| index | number | 是 | 多音轨轨道索引,来自[MediaDescription](#mediadescription8)。 | 1559 1560**返回值:** 1561 1562| 类型 | 说明 | 1563| -------------- | ------------------------- | 1564| Promise\<void> | 取消选择曲目完成的Promise返回值。 | 1565 1566**错误码:** 1567 1568以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 1569 1570| 错误码ID | 错误信息 | 1571| -------- | ----------------------------------------- | 1572| 401 | The parameter check failed. Return by promise. | 1573| 5400102 | Operation not allowed. Return by promise. | 1574 1575**示例:** 1576 1577```ts 1578import { BusinessError } from '@kit.BasicServicesKit'; 1579import { media } from '@kit.MediaKit'; 1580 1581let avPlayer: media.AVPlayer = await media.createAVPlayer(); 1582let audioTrackIndex: Object = 0; 1583avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 1584 if (arrList != null) { 1585 for (let i = 0; i < arrList.length; i++) { 1586 if (i != 0) { 1587 // 获取音频轨道列表 1588 audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX]; 1589 } 1590 } 1591 } else { 1592 console.error(`Failed to get TrackDescription, error:${error}`); 1593 } 1594}); 1595 1596// 选择其中一个音频轨道 1597avPlayer.selectTrack(parseInt(audioTrackIndex.toString())); 1598// 取消选择上次选中的音频轨道,并恢复到默认音频轨道。 1599avPlayer.deselectTrack(parseInt(audioTrackIndex.toString())); 1600``` 1601 1602### setDecryptionConfig<sup>11+</sup> 1603 1604setDecryptionConfig(mediaKeySession: drm.MediaKeySession, secureVideoPath: boolean): void 1605 1606设置解密配置。当收到[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)时,需根据事件上报的信息创建相关配置并设置解密配置,否则无法播放。 1607 1608**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1609 1610**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1611 1612**参数:** 1613 1614| 参数名 | 类型 | 必填 | 说明 | 1615| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- | 1616| mediaKeySession | [drm.MediaKeySession](../apis-drm-kit/js-apis-drm.md#mediakeysession) | 是 | 解密会话 | 1617| secureVideoPath | boolean | 是 | 安全视频通路,true表示选择安全视频通路,false表示选择非安全视频通路 | 1618 1619**错误码:** 1620 1621以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1622 1623| 错误码ID | 错误信息 | 1624| -------- | ----------------------------------------- | 1625| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 1626 1627**示例:** 1628 1629关于drm模块的示例具体可见[js-apis-drm.md](../apis-drm-kit/js-apis-drm.md)。 1630```ts 1631import { drm } from '@kit.DrmKit'; 1632 1633// 创建MediaKeySystem系统 1634let keySystem:drm.MediaKeySystem = drm.createMediaKeySystem('com.clearplay.drm'); 1635// 创建MediaKeySession解密会话 1636let keySession:drm.MediaKeySession = keySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO); 1637// 生成许可证请求、设置许可证响应等 1638// 安全视频通路标志 1639let secureVideoPath:boolean = false; 1640// 设置解密配置 1641avPlayer.setDecryptionConfig(keySession, secureVideoPath); 1642``` 1643 1644### getMediaKeySystemInfos<sup>11+</sup> 1645 1646getMediaKeySystemInfos(): Array\<drm.MediaKeySystemInfo> 1647 1648获取当前播放的媒体资源的MediaKeySystemInfo。需要在[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)触发成功后才能调用。 1649 1650**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1651 1652**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1653 1654**返回值:** 1655 1656| 类型 | 说明 | 1657| ------------------------------------------------------ | ------------------------------------------------- | 1658| Array<[drm.MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)> | MediaKeySystemInfo数组,MediaKeySystemInfo具有uuid和pssh两个属性。 | 1659 1660**示例:** 1661 1662```ts 1663import { drm } from '@kit.DrmKit'; 1664 1665const infos = avPlayer.getMediaKeySystemInfos(); 1666console.info('GetMediaKeySystemInfos count: ' + infos.length); 1667for (let i = 0; i < infos.length; i++) { 1668 console.info('GetMediaKeySystemInfos uuid: ' + infos[i]["uuid"]); 1669 console.info('GetMediaKeySystemInfos pssh: ' + infos[i]["pssh"]); 1670} 1671``` 1672 1673### seek<sup>9+</sup> 1674 1675seek(timeMs: number, mode?:SeekMode): void 1676 1677跳转到指定播放位置,只能在prepared/playing/paused/completed状态调用,可以通过[seekDone事件](#onseekdone9)确认是否生效。 1678注:直播场景不支持seek。 1679 1680**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1681 1682**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1683 1684**参数:** 1685 1686| 参数名 | 类型 | 必填 | 说明 | 1687| ------ | ---------------------- | ---- | ------------------------------------------------------------ | 1688| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, [duration](#属性)]。 | 1689| mode | [SeekMode](#seekmode8) | 否 | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式,**仅在视频资源播放时设置**。 | 1690 1691**示例:** 1692 1693```ts 1694let seekTime: number = 1000 1695avPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC) 1696``` 1697 1698### on('seekDone')<sup>9+</sup> 1699 1700on(type: 'seekDone', callback: Callback\<number>): void 1701 1702监听seek生效的事件。 1703 1704**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1705 1706**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1707 1708**参数:** 1709 1710| 参数名 | 类型 | 必填 | 说明 | 1711| -------- | -------- | ---- | ------------------------------------------------------------ | 1712| type | string | 是 | seek生效的事件回调类型,支持的事件:'seekDone',每次调用seek后都会回调此事件。 | 1713| callback | Callback\<number> | 是 | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。 | 1714 1715**示例:** 1716 1717```ts 1718avPlayer.on('seekDone', (seekDoneTime:number) => { 1719 console.info('seekDone called,and seek time is:' + seekDoneTime) 1720}) 1721``` 1722 1723### off('seekDone')<sup>9+</sup> 1724 1725off(type: 'seekDone', callback?: Callback\<number>): void 1726 1727取消监听seek生效的事件。 1728 1729**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1730 1731**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1732 1733**参数:** 1734 1735| 参数名 | 类型 | 必填 | 说明 | 1736| ------ | ------ | ---- | ---------------------------------------------------- | 1737| type | string | 是 | seek生效的事件回调类型,取消注册的事件:'seekDone'。 | 1738| callback | Callback\<number> | 否 | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。<br/>从API version 12开始支持此参数。 | 1739 1740**示例:** 1741 1742```ts 1743avPlayer.off('seekDone') 1744``` 1745 1746### setSpeed<sup>9+</sup> 1747 1748setSpeed(speed: PlaybackSpeed): void 1749 1750设置倍速模式,只能在prepared/playing/paused/completed状态调用,可以通过[speedDone事件](#onspeeddone9)确认是否生效。 1751注:直播场景不支持setSpeed。 1752 1753**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1754 1755**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1756 1757**参数:** 1758 1759| 参数名 | 类型 | 必填 | 说明 | 1760| ------ | -------------------------------- | ---- | ------------------ | 1761| speed | [PlaybackSpeed](#playbackspeed8) | 是 | 指定播放倍速模式。 | 1762 1763**示例:** 1764 1765```ts 1766avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X) 1767``` 1768 1769### on('speedDone')<sup>9+</sup> 1770 1771on(type: 'speedDone', callback: Callback\<number>): void 1772 1773监听setSpeed生效的事件 1774 1775**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1776 1777**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1778 1779**参数:** 1780 1781| 参数名 | 类型 | 必填 | 说明 | 1782| -------- | -------- | ---- | ------------------------------------------------------------ | 1783| type | string | 是 | setSpeed生效的事件回调类型,支持的事件:'speedDone',每次调用setSpeed后都会回调此事件。 | 1784| callback | Callback\<number> | 是 | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。 | 1785 1786**示例:** 1787 1788```ts 1789avPlayer.on('speedDone', (speed:number) => { 1790 console.info('speedDone called,and speed value is:' + speed) 1791}) 1792``` 1793 1794### off('speedDone')<sup>9+</sup> 1795 1796off(type: 'speedDone', callback?: Callback\<number>): void 1797 1798取消监听setSpeed生效的事件。 1799 1800**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1801 1802**参数:** 1803 1804| 参数名 | 类型 | 必填 | 说明 | 1805| ------ | ------ | ---- | --------------------------------------------------------- | 1806| type | string | 是 | setSpeed生效的事件回调类型,取消注册的事件:'speedDone'。 | 1807| callback | Callback\<number> | 否 | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。<br/>从API version 12开始支持此参数。 | 1808 1809**示例:** 1810 1811```ts 1812avPlayer.off('speedDone') 1813``` 1814 1815### setBitrate<sup>9+</sup> 1816 1817setBitrate(bitrate: number): void 1818 1819选择要播放的指定比特率,仅对**HLS协议网络流**有效,默认情况下,播放器会根据网络连接速度选择合适的比特率,只能在prepared/playing/paused/completed状态调用,可以通过[bitrateDone](#onbitratedone9)事件确认是否生效。 1820 1821**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1822 1823**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1824 1825**参数:** 1826 1827| 参数名 | 类型 | 必填 | 说明 | 1828| ------- | ------ | ---- | ------------------------------------------------------------ | 1829| bitrate | number | 是 | 指定比特率,可以通过[availableBitrates](#onavailablebitrates9)事件获得当前HLS协议流可用的比特率,如果用户指定的比特率不在此列表中,则播放器将从可用比特率列表中选择最小和最接近的比特率。如果通过availableBitrates事件获得的比特率列表长度为0,则不支持指定比特率,也不会产生bitrateDone回调。 | 1830 1831**示例:** 1832 1833```ts 1834let bitrate: number = 96000 1835avPlayer.setBitrate(bitrate) 1836``` 1837 1838### on('bitrateDone')<sup>9+</sup> 1839 1840on(type: 'bitrateDone', callback: Callback\<number>): void 1841 1842监听setBitrate生效的事件。 1843 1844**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1845 1846**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1847 1848**参数:** 1849 1850| 参数名 | 类型 | 必填 | 说明 | 1851| -------- | -------- | ---- | ------------------------------------------------------------ | 1852| type | string | 是 | setBitrate生效的事件回调类型,支持的事件:'bitrateDone',每次调用setBitrate后都会回调此事件。 | 1853| callback | Callback\<number> | 是 | setBitrate生效的事件回调方法,上报生效的比特率。 | 1854 1855**示例:** 1856 1857```ts 1858avPlayer.on('bitrateDone', (bitrate:number) => { 1859 console.info('bitrateDone called,and bitrate value is:' + bitrate) 1860}) 1861``` 1862 1863### off('bitrateDone')<sup>9+</sup> 1864 1865off(type: 'bitrateDone', callback?: Callback\<number>): void 1866 1867取消监听setBitrate生效的事件。 1868 1869**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1870 1871**参数:** 1872 1873| 参数名 | 类型 | 必填 | 说明 | 1874| ------ | ------ | ---- | ------------------------------------------------------------ | 1875| type | string | 是 | setBitrate生效的事件回调类型,取消注册的事件:'bitrateDone'。 | 1876| callback | Callback\<number> | 否 | setBitrate生效的事件回调方法,上报生效的比特率。<br/>从API version 12开始支持此参数。 | 1877 1878**示例:** 1879 1880```ts 1881avPlayer.off('bitrateDone') 1882``` 1883 1884### on('availableBitrates')<sup>9+</sup> 1885 1886on(type: 'availableBitrates', callback: Callback\<Array\<number>>): void 1887 1888监听HLS协议流可用的比特率列表,只会在切换prepared状态后上报。 1889 1890**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1891 1892**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1893 1894**参数:** 1895 1896| 参数名 | 类型 | 必填 | 说明 | 1897| -------- | -------- | ---- | ------------------------------------------------------------ | 1898| type | string | 是 | HLS协议可用比特率上报事件回调类型,支持的事件:'availableBitrates',只会在prepared之后上报一次。 | 1899| callback | Callback\<Array\<number>> | 是 | HLS协议可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。 | 1900 1901**示例:** 1902 1903```ts 1904avPlayer.on('availableBitrates', (bitrates: Array<number>) => { 1905 console.info('availableBitrates called,and availableBitrates length is:' + bitrates.length) 1906}) 1907``` 1908 1909### off('availableBitrates')<sup>9+</sup> 1910 1911off(type: 'availableBitrates', callback?: Callback\<Array\<number>>): void 1912 1913取消监听HLS协议流可用的比特率列表,调用[prepare](#prepare9)后,上报此事件。 1914 1915**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1916 1917**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1918 1919**参数:** 1920 1921| 参数名 | 类型 | 必填 | 说明 | 1922| ------ | ------ | ---- | ------------------------------------------------------------ | 1923| type | string | 是 | HLS协议可用比特率上报事件回调类型,取消注册的事件:'availableBitrates'。 | 1924| callback | Callback\<Array\<number>> | 否 | HLS协议可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。<br/>从API version 12开始支持此参数。 | 1925 1926**示例:** 1927 1928```ts 1929avPlayer.off('availableBitrates') 1930``` 1931 1932 1933### on('mediaKeySystemInfoUpdate')<sup>11+</sup> 1934 1935on(type: 'mediaKeySystemInfoUpdate', callback: Callback\<Array\<drm.MediaKeySystemInfo>>): void 1936 1937监听mediaKeySystemInfoUpdate事件。 1938 1939**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1940 1941**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1942 1943**参数:** 1944 1945| 参数名 | 类型 | 必填 | 说明 | 1946| -------- | -------- | ---- | ------------------------------------------------------------ | 1947| type | string | 是 | 版权保护信息更新上报事件回调类型,支持的事件:'mediaKeySystemInfoUpdate',当播放内容的版权保护信息更新时上报事件。 | 1948| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)>> | 是 | 版权保护信息更新上报事件回调方法,上报MediaKeySystemInfo数组。 | 1949 1950**示例:** 1951 1952```ts 1953import { drm } from '@kit.DrmKit'; 1954 1955avPlayer.on('mediaKeySystemInfoUpdate', (mediaKeySystemInfo: Array<drm.MediaKeySystemInfo>) => { 1956 for (let i = 0; i < mediaKeySystemInfo.length; i++) { 1957 console.info('mediaKeySystemInfoUpdate happened uuid: ' + mediaKeySystemInfo[i]["uuid"]); 1958 console.info('mediaKeySystemInfoUpdate happened pssh: ' + mediaKeySystemInfo[i]["pssh"]); 1959 } 1960}) 1961``` 1962 1963### off('mediaKeySystemInfoUpdate')<sup>11+</sup> 1964 1965off(type: 'mediaKeySystemInfoUpdate', callback?: Callback\<Array\<drm.MediaKeySystemInfo>>): void; 1966 1967取消监听mediaKeySystemInfoUpdate事件。 1968 1969**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1970 1971**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1972 1973**参数:** 1974 1975| 参数名 | 类型 | 必填 | 说明 | 1976| ------ | ------ | ---- | ------------------------------------------------------------ | 1977| type | string | 是 | 版权保护信息更新上报事件回调类型,取消注册的事件:'mediaKeySystemInfoUpdate'。 | 1978| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)>> | 否 | 版权保护信息更新上报事件回调方法,上报版权保护信息数组。如填写该参数,则仅取消注册此回调方法,否则取消注册mediaKeySystemInfoUpdate事件的所有回调方法。 | 1979 1980**示例:** 1981 1982```ts 1983avPlayer.off('mediaKeySystemInfoUpdate') 1984``` 1985 1986### setVolume<sup>9+</sup> 1987 1988setVolume(volume: number): void 1989 1990设置媒体播放音量,只能在prepared/playing/paused/completed状态调用,可以通过[volumeChange事件](#onvolumechange9)确认是否生效。 1991 1992**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1993 1994**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1995 1996**参数:** 1997 1998| 参数名 | 类型 | 必填 | 说明 | 1999| ------ | ------ | ---- | ------------------------------------------------------------ | 2000| volume | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 2001 2002**示例:** 2003 2004```ts 2005let volume: number = 1.0 2006avPlayer.setVolume(volume) 2007``` 2008 2009### on('volumeChange')<sup>9+</sup> 2010 2011on(type: 'volumeChange', callback: Callback\<number>): void 2012 2013监听setVolume生效的事件。 2014 2015**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2016 2017**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2018 2019**参数:** 2020 2021| 参数名 | 类型 | 必填 | 说明 | 2022| -------- | -------- | ---- | ------------------------------------------------------------ | 2023| type | string | 是 | setVolume生效的事件回调类型,支持的事件:'volumeChange',每次调用setVolume后都会回调此事件。 | 2024| callback | Callback\<number> | 是 | setVolume生效的事件回调方法,上报生效的媒体音量。 | 2025 2026**示例:** 2027 2028```ts 2029avPlayer.on('volumeChange', (vol: number) => { 2030 console.info('volumeChange called,and new volume is :' + vol) 2031}) 2032``` 2033 2034### off('volumeChange')<sup>9+</sup> 2035 2036off(type: 'volumeChange', callback?: Callback\<number>): void 2037 2038取消监听setVolume生效的事件。 2039 2040**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2041 2042**参数:** 2043 2044| 参数名 | 类型 | 必填 | 说明 | 2045| ------ | ------ | ---- | ------------------------------------------------------------ | 2046| type | string | 是 | setVolume生效的事件回调类型,取消注册的事件:'volumeChange'。 | 2047| callback | Callback\<number> | 否 | setVolume生效的事件回调方法,上报生效的媒体音量。<br/>从API version 12开始支持此参数。 | 2048 2049**示例:** 2050 2051```ts 2052avPlayer.off('volumeChange') 2053``` 2054 2055### on('endOfStream')<sup>9+</sup> 2056 2057on(type: 'endOfStream', callback: Callback\<void>): void 2058 2059监听资源播放至结尾的事件;如果用户设置[loop](#属性)=true,播放会跳转至开头重播;如果用户没有设置loop,会通过[stateChange](#onstatechange9)上报completed状态。 2060 2061**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2062 2063**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2064 2065**参数:** 2066 2067| 参数名 | 类型 | 必填 | 说明 | 2068| -------- | -------- | ---- | ------------------------------------------------------------ | 2069| type | string | 是 | 资源播放至结尾的事件回调类型,支持的事件:'endOfStream',当播放至结尾时会上报此事件。 | 2070| callback | Callback\<void> | 是 | 资源播放至结尾的事件回调方法。 | 2071 2072**示例:** 2073 2074```ts 2075avPlayer.on('endOfStream', () => { 2076 console.info('endOfStream called') 2077}) 2078``` 2079 2080### off('endOfStream')<sup>9+</sup> 2081 2082off(type: 'endOfStream', callback?: Callback\<void>): void 2083 2084取消监听资源播放至结尾的事件。 2085 2086**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2087 2088**参数:** 2089 2090| 参数名 | 类型 | 必填 | 说明 | 2091| ------ | ------ | ---- | ------------------------------------------------------------ | 2092| type | string | 是 | 资源播放至结尾的事件回调类型,取消注册的事件:'endOfStream'。 | 2093| callback | Callback\<void> | 否 | 资源播放至结尾的事件回调方法。<br/>从API version 12开始支持此参数。 | 2094 2095**示例:** 2096 2097```ts 2098avPlayer.off('endOfStream') 2099``` 2100 2101### on('timeUpdate')<sup>9+</sup> 2102 2103on(type: 'timeUpdate', callback: Callback\<number>): void 2104 2105监听资源播放当前时间,单位为毫秒(ms),用于刷新进度条当前位置,默认间隔100ms时间上报,因用户操作(seek)产生的时间变化会立刻上报。 2106 2107注:直播场景不支持timeUpdate上报。 2108 2109**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2110 2111**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2112 2113**参数:** 2114 2115| 参数名 | 类型 | 必填 | 说明 | 2116| -------- | -------- | ---- | ---------------------------------------------- | 2117| type | string | 是 | 时间更新的回调类型,支持的事件:'timeUpdate'。 | 2118| callback | Callback\<number> | 是 | 回调函数。返回当前时间。 | 2119 2120**示例:** 2121 2122```ts 2123avPlayer.on('timeUpdate', (time:number) => { 2124 console.info('timeUpdate called,and new time is :' + time) 2125}) 2126``` 2127 2128### off('timeUpdate')<sup>9+</sup> 2129 2130off(type: 'timeUpdate', callback?: Callback\<number>): void 2131 2132取消监听资源播放当前时间。 2133 2134**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2135 2136**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2137 2138**参数:** 2139 2140| 参数名 | 类型 | 必填 | 说明 | 2141| ------ | ------ | ---- | -------------------------------------------------- | 2142| type | string | 是 | 时间更新的回调类型,取消注册的事件:'timeUpdate'。 | 2143| callback | Callback\<number> | 否 | 回调函数。返回当前时间。<br/>从API version 12开始支持此参数。 | 2144 2145**示例:** 2146 2147```ts 2148avPlayer.off('timeUpdate') 2149``` 2150 2151### on('durationUpdate')<sup>9+</sup> 2152 2153 2154on(type: 'durationUpdate', callback: Callback\<number>): void 2155 2156监听资源播放资源的时长,单位为毫秒(ms),用于刷新进度条长度,默认只在prepared上报一次,同时允许一些特殊码流刷新多次时长。 2157注:直播场景不支持durationUpdate上报。 2158 2159**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2160 2161**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2162 2163**参数:** 2164 2165| 参数名 | 类型 | 必填 | 说明 | 2166| -------- | -------- | ---- | -------------------------------------------------- | 2167| type | string | 是 | 时长更新的回调类型,支持的事件:'durationUpdate'。 | 2168| callback | Callback\<number> | 是 | 回调函数。返回资源时长。 | 2169 2170**示例:** 2171 2172```ts 2173avPlayer.on('durationUpdate', (duration: number) => { 2174 console.info('durationUpdate called,new duration is :' + duration) 2175}) 2176``` 2177 2178### off('durationUpdate')<sup>9+</sup> 2179 2180off(type: 'durationUpdate', callback?: Callback\<number>): void 2181 2182取消监听资源播放资源的时长。 2183 2184**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2185 2186**参数:** 2187 2188| 参数名 | 类型 | 必填 | 说明 | 2189| ------ | ------ | ---- | ------------------------------------------------------ | 2190| type | string | 是 | 时长更新的回调类型,取消注册的事件:'durationUpdate'。 | 2191| callback | Callback\<number> | 否 | 回调函数。返回资源时长。<br/>从API version 12开始支持此参数。 | 2192 2193**示例:** 2194 2195```ts 2196avPlayer.off('durationUpdate') 2197``` 2198 2199### on('bufferingUpdate')<sup>9+</sup> 2200 2201on(type: 'bufferingUpdate', callback: OnBufferingUpdateHandler): void 2202 2203订阅音视频缓存更新事件,仅网络播放支持该订阅事件。 2204 2205**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2206 2207**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2208 2209**参数:** 2210 2211| 参数名 | 类型 | 必填 | 说明 | 2212| -------- | -------- | ---- | ------------------------------------------------------------ | 2213| type | string | 是 | 播放缓存事件回调类型,支持的事件:'bufferingUpdate'。 | 2214| callback | [OnBufferingUpdateHandler](#onbufferingupdatehandler12) | 是 | 播放缓存事件回调方法。 | 2215 2216**示例:** 2217 2218```ts 2219avPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => { 2220 console.info('bufferingUpdate called,and infoType value is:' + infoType + ', value is :' + value) 2221}) 2222``` 2223 2224### off('bufferingUpdate')<sup>9+</sup> 2225 2226off(type: 'bufferingUpdate', callback?: OnBufferingUpdateHandler): void 2227 2228取消监听音视频缓存更新事件。 2229 2230**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2231 2232**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2233 2234**参数:** 2235 2236| 参数名 | 类型 | 必填 | 说明 | 2237| ------ | ------ | ---- | --------------------------------------------------------- | 2238| type | string | 是 | 播放缓存事件回调类型,取消注册的事件:'bufferingUpdate'。 | 2239| callback | [OnBufferingUpdateHandler](#onbufferingupdatehandler12) | 否 | 播放缓存事件回调方法。 | 2240 2241**示例:** 2242 2243```ts 2244avPlayer.off('bufferingUpdate') 2245``` 2246 2247### on('startRenderFrame')<sup>9+</sup> 2248 2249on(type: 'startRenderFrame', callback: Callback\<void>): void 2250 2251订阅视频播放开始首帧渲染的更新事件,仅视频播放支持该订阅事件,该事件仅代表播放服务将第一帧画面送显示模块,实际效果依赖显示服务渲染性能。 2252 2253**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2254 2255**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2256 2257**参数:** 2258 2259| 参数名 | 类型 | 必填 | 说明 | 2260| -------- | -------- | ---- | ------------------------------------------------------------ | 2261| type | string | 是 | 视频播放开始首帧渲染事件回调类型,支持的事件:'startRenderFrame'。 | 2262| callback | Callback\<void> | 是 | 视频播放开始首帧渲染事件回调方法。 | 2263 2264**示例:** 2265 2266```ts 2267avPlayer.on('startRenderFrame', () => { 2268 console.info('startRenderFrame called') 2269}) 2270``` 2271 2272### off('startRenderFrame')<sup>9+</sup> 2273 2274off(type: 'startRenderFrame', callback?: Callback\<void>): void 2275 2276取消监听视频播放开始首帧渲染的更新事件。 2277 2278**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2279 2280**参数:** 2281 2282| 参数名 | 类型 | 必填 | 说明 | 2283| ------ | ------ | ---- | ------------------------------------------------------------ | 2284| type | string | 是 | 视频播放开始首帧渲染事件回调类型,取消注册的事件:'startRenderFrame'。 | 2285| callback | Callback\<void> | 否 | 视频播放开始首帧渲染事件回调方法。<br/>从API version 12开始支持此参数。 | 2286 2287**示例:** 2288 2289```ts 2290avPlayer.off('startRenderFrame') 2291``` 2292 2293### on('videoSizeChange')<sup>9+</sup> 2294 2295on(type: 'videoSizeChange', callback: OnVideoSizeChangeHandler): void 2296 2297监听视频播放宽高变化事件,仅视频播放支持该订阅事件,默认只在prepared状态上报一次,但HLS协议码流会在切换分辨率时上报。 2298 2299**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2300 2301**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2302 2303**参数:** 2304 2305| 参数名 | 类型 | 必填 | 说明 | 2306| -------- | -------- | ---- | ------------------------------------------------------------ | 2307| type | string | 是 | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChange'。 | 2308| callback | [OnVideoSizeChangeHandler](#onvideosizechangehandler12) | 是 | 视频播放宽高变化事件回调方法。 | 2309 2310**示例:** 2311 2312```ts 2313avPlayer.on('videoSizeChange', (width: number, height: number) => { 2314 console.info('videoSizeChange called,and width is:' + width + ', height is :' + height) 2315}) 2316``` 2317 2318### off('videoSizeChange')<sup>9+</sup> 2319 2320off(type: 'videoSizeChange', callback?: OnVideoSizeChangeHandler): void 2321 2322取消监听视频播放宽高变化事件。 2323 2324**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2325 2326**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2327 2328**参数:** 2329 2330| 参数名 | 类型 | 必填 | 说明 | 2331| ------ | ------ | ---- | ------------------------------------------------------------ | 2332| type | string | 是 | 视频播放宽高变化事件回调类型,取消注册的事件:'videoSizeChange'。 | 2333| callback | [OnVideoSizeChangeHandler](#onvideosizechangehandler12) | 否 | 视频播放宽高变化事件回调方法。<br/>从API version 12开始支持此参数。 | 2334 2335**示例:** 2336 2337```ts 2338avPlayer.off('videoSizeChange') 2339``` 2340 2341### on('audioInterrupt')<sup>9+</sup> 2342 2343on(type: 'audioInterrupt', callback: Callback\<audio.InterruptEvent>): void 2344 2345监听音频焦点变化事件,多个音视频资源同时播放时,会根据音频焦点模型[audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9)触发此事件。应用需根据不同焦点变化事件作相应处理。具体可参考[处理音频焦点事件](../../media/audio/audio-playback-concurrency.md)。 2346 2347**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2348 2349**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2350 2351**参数:** 2352 2353| 参数名 | 类型 | 必填 | 说明 | 2354| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | 2355| type | string | 是 | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 | 2356| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)> | 是 | 音频焦点变化事件回调方法。 | 2357 2358**示例:** 2359 2360```ts 2361import { audio } from '@kit.AudioKit'; 2362 2363avPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => { 2364 console.info('audioInterrupt called,and InterruptEvent info is:' + info) 2365}) 2366``` 2367 2368### off('audioInterrupt')<sup>9+</sup> 2369 2370off(type: 'audioInterrupt', callback?: Callback<audio.InterruptEvent>): void 2371 2372取消监听音频焦点变化事件。 2373 2374**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2375 2376**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2377 2378**参数:** 2379 2380| 参数名 | 类型 | 必填 | 说明 | 2381| ------ | ------ | ---- | ------------------------------------------------------------ | 2382| type | string | 是 | 音频焦点变化事件回调类型,取消注册的事件:'audioInterrupt'。 | 2383| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)> | 否 | 音频焦点变化事件回调方法。<br/>从API version 12开始支持此参数。 | 2384 2385**示例:** 2386 2387```ts 2388avPlayer.off('audioInterrupt') 2389``` 2390 2391### on('audioOutputDeviceChangeWithInfo')<sup>11+</sup> 2392 2393on(type: 'audioOutputDeviceChangeWithInfo', callback: Callback\<audio.AudioStreamDeviceChangeInfo>): void 2394 2395订阅监听音频流输出设备变化及原因,使用callback方式返回结果。 2396 2397在订阅此监听时,建议参考[响应音频流输出设备变更](../../media/audio/audio-output-device-change.md)自行实现设备连接或者断开时的播放器行为。 2398 2399**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2400 2401**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2402 2403**参数:** 2404 2405| 参数名 | 类型 | 必填 | 说明 | 2406| :------- | :------------------------- | :--- | :------------------------------------------ | 2407| type | string | 是 | 事件回调类型,支持的事件为:'outputDeviceChangeWithInfo'。 | 2408| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 是 | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 | 2409 2410**错误码:** 2411 2412| 错误码ID | 错误信息 | 2413| -------- | ------------------------------------------ | 2414| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 2415 2416**示例:** 2417 2418```ts 2419import { audio } from '@kit.AudioKit'; 2420 2421avPlayer.on('audioOutputDeviceChangeWithInfo', (data: audio.AudioStreamDeviceChangeInfo) => { 2422 console.info(`${JSON.stringify(data)}`); 2423}); 2424``` 2425 2426### off('audioOutputDeviceChangeWithInfo')<sup>11+</sup> 2427 2428off(type: 'audioOutputDeviceChangeWithInfo', callback?: Callback\<audio.AudioStreamDeviceChangeInfo>): void 2429 2430取消订阅监听音频流输出设备变化及原因,使用callback方式返回结果。 2431 2432**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2433 2434**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2435 2436**参数:** 2437 2438| 参数名 | 类型 | 必填 | 说明 | 2439| :------- | :------------------------- | :--- | :------------------------------------------ | 2440| type | string | 是 | 事件回调类型,支持的事件为:'outputDeviceChange'。 | 2441| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 否 | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 | 2442 2443**错误码:** 2444 2445| 错误码ID | 错误信息 | 2446| -------- | ------------------------------------------ | 2447| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 2448 2449**示例:** 2450 2451```ts 2452avPlayer.off('audioOutputDeviceChangeWithInfo'); 2453``` 2454 2455### addSubtitleFromFd<sup>12+</sup> 2456 2457addSubtitleFromFd(fd: number, offset?: number, length?: number): Promise\<void> 2458 2459依据fd为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。 2460 2461**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2462 2463**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2464 2465**参数:** 2466 2467| 参数名 | 类型 | 必填 | 说明 | 2468| ------ | ---------------------- | ---- | ------------------------------------------------------------ | 2469| fd | number | 是 | 资源句柄,通过[resourceManager.getRawFd](../apis-localization-kit/js-apis-resource-manager.md#getrawfd9)获取。 | 2470| offset | number | 否 | 资源偏移量,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误。 | 2471| length | number | 否 | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误。 | 2472 2473**返回值:** 2474 2475| 类型 | 说明 | 2476| -------------- | ------------------------------------------ | 2477| Promise\<void> | 添加外挂字幕addSubtitleFromFd方法的Promise返回值。 | 2478 2479**错误码:** 2480 2481| 错误码ID | 错误信息 | 2482| -------- | ------------------------------------------ | 2483| 401 | The parameter check failed. Return by promise. | 2484| 5400102 | Operation not allowed. Return by promise. | 2485 2486**示例:** 2487 2488```ts 2489import { media } from '@kit.MediaKit' 2490 2491let context = getContext(this) as common.UIAbilityContext 2492let fileDescriptor = await context.resourceManager.getRawFd('xxx.srt') 2493 2494avPlayer.addSubtitleFromFd(fileDescriptor.fd, fileDescriptor.offset, fileDescriptor.length) 2495``` 2496 2497### addSubtitleFromUrl<sup>12+</sup> 2498 2499addSubtitleFromUrl(url: string): Promise\<void> 2500 2501依据url为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。 2502 2503**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2504 2505**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2506 2507**参数:** 2508 2509| 参数名 | 类型 | 必填 | 说明 | 2510| ------ | ------ | ---- | ------------------------------------------------------------ | 2511| url | string | 是 | 外挂字幕文件地址。 | 2512 2513**返回值:** 2514 2515| 类型 | 说明 | 2516| -------------- | ------------------------------------------ | 2517| Promise\<void> | 添加外挂字幕addSubtitleFromUrl方法的Promise返回值。 | 2518 2519**错误码:** 2520 2521| 错误码ID | 错误信息 | 2522| -------- | ------------------------------------------ | 2523| 401 | The parameter check failed. Return by promise. | 2524| 5400102 | Operation not allowed. Return by promise. | 2525 2526**示例:** 2527 2528```ts 2529import { media } from '@kit.MediaKit' 2530 2531let fdUrl:string = 'http://xxx.xxx.xxx/xx/index.srt' 2532 2533let avPlayer: media.AVPlayer = await media.createAVPlayer() 2534avPlayer.addSubtitleFromUrl(fdUrl) 2535``` 2536 2537### on('subtitleUpdate')<sup>12+</sup> 2538 2539on(type: 'subtitleUpdate', callback: Callback\<SubtitleInfo>): void 2540 2541订阅获取外挂字幕的事件,当有外挂字幕时,会通过订阅的回调方法通知用户。用户只能订阅一个外挂字幕事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2542 2543**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2544 2545**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2546 2547**参数:** 2548 2549| 参数名 | 类型 | 必填 | 说明 | 2550| -------- | -------- | ---- | ------------------------------------------------------------ | 2551| type | string | 是 | 事件回调类型,支持的事件为:'subtitleUpdate'。 | 2552| callback | function | 是 | 外挂字幕事件回调方法。 | 2553 2554**示例:** 2555 2556```ts 2557avPlayer.on('subtitleUpdate', async (info: media.SubtitleInfo) => { 2558 if (info) { 2559 let text = (!info.text) ? '' : info.text 2560 let startTime = (!info.startTime) ? 0 : info.startTime 2561 let duration = (!info.duration) ? 0 : info.duration 2562 console.info('subtitleUpdate info: text=' + text + ' startTime=' + startTime +' duration=' + duration) 2563 } else { 2564 console.info('subtitleUpdate info is null') 2565 } 2566}) 2567``` 2568 2569### off('subtitleUpdate')<sup>12+</sup> 2570 2571off(type: 'subtitleUpdate', callback?: Callback\<SubtitleInfo>): void 2572 2573取消订阅获取外挂字幕的事件。 2574 2575**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2576 2577**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2578 2579**参数:** 2580 2581| 参数名 | 类型 | 必填 | 说明 | 2582| -------- | -------- | ---- | ------------------------------------------------------------ | 2583| type | string | 是 | 事件回调类型,支持的事件为:'subtitleUpdate'。 | 2584| callback | function | 否 | 取消外挂字幕事件的回调方法。 | 2585 2586**示例:** 2587 2588```ts 2589avPlayer.off('subtitleUpdate') 2590``` 2591 2592### on('trackChange')<sup>12+</sup> 2593 2594on(type: 'trackChange', callback: OnTrackChangeHandler): void 2595 2596订阅获取轨道变更的事件,当播放的轨道变更时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2597 2598**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2599 2600**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2601 2602**参数:** 2603 2604| 参数名 | 类型 | 必填 | 说明 | 2605| -------- | -------- | ---- | ------------------------------------------------------------ | 2606| type | string | 是 | 事件回调类型,支持的事件为:'trackChange'。 | 2607| callback | [OnTrackChangeHandler](#ontrackchangehandler12) | 是 | 轨道变更事件回调方法。 | 2608 2609**示例:** 2610 2611```ts 2612avPlayer.on('trackChange', (index: number, isSelect: boolean) => { 2613 console.info('trackChange info: index=' + index + ' isSelect=' + isSelect) 2614}) 2615``` 2616 2617### off('trackChange')<sup>12+</sup> 2618 2619off(type: 'trackChange', callback?: OnTrackChangeHandler): void 2620 2621取消订阅获取轨道变更的事件。 2622 2623**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2624 2625**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2626 2627**参数:** 2628 2629| 参数名 | 类型 | 必填 | 说明 | 2630| -------- | -------- | ---- | ------------------------------------------------------------ | 2631| type | string | 是 | 事件回调类型,支持的事件为:'trackChange'。 | 2632| callback | [OnTrackChangeHandler](#ontrackchangehandler12) | 否 | 取消轨道变更事件的回调方法。 | 2633 2634**示例:** 2635 2636```ts 2637avPlayer.off('trackChange') 2638``` 2639 2640### on('trackInfoUpdate')<sup>12+</sup> 2641 2642on(type: 'trackInfoUpdate', callback: Callback\<Array\<MediaDescription>>): void 2643 2644订阅获取轨道信息更新的事件,当播放的轨道有更新时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2645 2646**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2647 2648**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2649 2650**参数:** 2651 2652| 参数名 | 类型 | 必填 | 说明 | 2653| -------- | -------- | ---- | ------------------------------------------------------------ | 2654| type | string | 是 | 事件回调类型,支持的事件为:'trackInfoUpdate'。 | 2655| callback | Callback\<Array\<[MediaDescription](#mediadescription8)>> | 是 | 轨道信息更新事件回调方法。 | 2656 2657**示例:** 2658 2659```ts 2660avPlayer.on('trackInfoUpdate', (info: Array<media.MediaDescription>) => { 2661 if (info) { 2662 for (let i = 0; i < info.length; i++) { 2663 let propertyIndex: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX]; 2664 let propertyType: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_TYPE]; 2665 console.info('track info: index=' + propertyIndex + ' tracktype=' + propertyType) 2666 } 2667 } else { 2668 console.info('track info is null') 2669 } 2670}) 2671``` 2672 2673### off('trackInfoUpdate')<sup>12+</sup> 2674 2675off(type: 'trackInfoUpdate', callback?: Callback\<Array\<MediaDescription>>): void 2676 2677取消订阅获取轨道变更的事件。 2678 2679**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2680 2681**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2682 2683**参数:** 2684 2685| 参数名 | 类型 | 必填 | 说明 | 2686| -------- | -------- | ---- | ------------------------------------------------------------ | 2687| type | string | 是 | 事件回调类型,支持的事件为:'trackInfoUpdate'。 | 2688| callback | Callback\<Array\<[MediaDescription](#mediadescription8)>> | 否 | 取消轨道信息更新事件的回调方法。 | 2689 2690**示例:** 2691 2692```ts 2693avPlayer.off('trackInfoUpdate') 2694``` 2695 2696### on('amplitudeUpdate')<sup>13+</sup> 2697 2698on(type: 'amplitudeUpdate', callback: Callback\<Array\<number>>): void 2699 2700订阅音频最大电平值,音频资源播放时定时上报。 2701 2702**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 2703 2704**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2705 2706**参数:** 2707 2708| 参数名 | 类型 | 必填 | 说明 | 2709| -------- | -------- | ---- | ------------------------------------------------------------ | 2710| type | string | 是 | 事件回调类型,支持的事件为:'amplitudeUpdate'。 | 2711| callback | Callback\<Array\<number>> | 是 | 音频最大电平值更新事件回调方法。 | 2712 2713**示例:** 2714 2715```ts 2716avPlayer.on('amplitudeUpdate', (value: Array<number>) => { 2717 console.info('amplitudeUpdate called,and amplitudeUpdate = ${value}') 2718}) 2719``` 2720 2721### off('amplitudeUpdate')<sup>13+</sup> 2722 2723off(type: 'amplitudeUpdate', callback?: Callback\<Array\<number>>): void 2724 2725取消订阅获取音频最大电平值事件。 2726 2727**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 2728 2729**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2730 2731**参数:** 2732 2733| 参数名 | 类型 | 必填 | 说明 | 2734| ------ | ------ | ---- | ------------------------------------------------------------ | 2735| type | string | 是 | 事件回调类型,支持的事件为:'amplitudeUpdate'。 | 2736| callback | Callback\<Array\<number>> | 否 | 取消音频最大电平值更新事件回调方法。 | 2737 2738**示例:** 2739 2740```ts 2741avPlayer.off('amplitudeUpdate') 2742``` 2743 2744## AVPlayerState<sup>9+</sup> 2745 2746type AVPlayerState = 'idle' | 'initialized' | 'prepared' | 'playing' | 'paused' | 'completed' | 'stopped' | 'released' | 'error' 2747 2748[AVPlayer](#avplayer9)的状态机,可通过state属性主动获取当前状态,也可通过监听[stateChange](#onstatechange9)事件上报当前状态,状态机之间的切换规则,可参考[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)。 2749 2750**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2751 2752**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2753 2754| 类型 | 说明 | 2755| :-----------------------------: | :----------------------------------------------------------- | 2756| 'idle' | 闲置状态,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属性会被重置,其他用户设置的属性将被保留。 | 2757| 'initialized' | 资源初始化,在Idle 状态设置 url<sup>9+</sup> 或 fdSrc<sup>9+</sup>属性,AVPlayer会进入initialized状态,此时可以配置窗口、音频等静态属性。 | 2758| 'prepared' | 已准备状态,在initialized状态调用[prepare()](#prepare9)方法,AVPlayer会进入prepared状态,此时播放引擎的资源已准备就绪。 | 2759| 'playing' | 正在播放状态,在prepared/paused/completed状态调用[play()](#play9)方法,AVPlayer会进入playing状态。 | 2760| 'paused' | 暂停状态,在playing状态调用pause方法,AVPlayer会进入paused状态。 | 2761| 'completed' | 播放至结尾状态,当媒体资源播放至结尾时,如果用户未设置循环播放(loop = true),AVPlayer会进入completed状态,此时调用[play()](#play9)会进入playing状态和重播,调用[stop()](#stop9)会进入stopped状态。 | 2762| 'stopped' | 停止状态,在prepared/playing/paused/completed状态调用[stop()](#stop9)方法,AVPlayer会进入stopped状态,此时播放引擎只会保留属性,但会释放内存资源,可以调用[prepare()](#prepare9)重新准备,也可以调用[reset()](#reset9)重置,或者调用[release()](#release9)彻底销毁。 | 2763| 'released' | 销毁状态,销毁与当前AVPlayer关联的播放引擎,无法再进行状态转换,调用[release()](#release9)方法后,会进入released状态,结束流程。 | 2764| 'error' | 错误状态,当**播放引擎**发生**不可逆的错误**(详见[媒体错误码](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:播放过程发现码流问题,导致容器、解码短暂异常,不影响连续播放和播控操作的,不需要客户端设计容错机制。 | 2765 2766## OnTrackChangeHandler<sup>12+</sup> 2767 2768type OnTrackChangeHandler = (index: number, isSelected: boolean) => void 2769 2770track变更事件回调方法。 2771 2772**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2773 2774**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2775 2776| 参数名 | 类型 | 必填 | 说明 | 2777| ------ | ------ | ------ | ---------------------------------------------------------- | 2778| index | number | 是 | 当前选中的track索引。 | 2779| isSelected | boolean | 是 | 当前索引的选中状态。 | 2780 2781## OnAVPlayerStateChangeHandle<sup>12+</sup> 2782 2783type OnAVPlayerStateChangeHandle = (state: AVPlayerState, reason: StateChangeReason) => void 2784 2785状态机切换事件回调方法。 2786 2787**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2788 2789**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2790 2791| 参数名 | 类型 | 必填 | 说明 | 2792| ------ | ------ | ------ | ---------------------------------------------------------- | 2793| state | [AVPlayerState](#avplayerstate9) | 是 | 当前播放状态。 | 2794| reason | [StateChangeReason](#statechangereason9) | 是 | 当前播放状态的切换原因。 | 2795 2796## OnBufferingUpdateHandler<sup>12+</sup> 2797 2798type OnBufferingUpdateHandler = (infoType: BufferingInfoType, value: number) => void 2799 2800播放缓存事件回调方法。 2801 2802**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2803 2804**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2805 2806| 参数名 | 类型 | 必填 | 说明 | 2807| ------ | ------ | ------ | ------------------------------------------------------------ | 2808| infoType | [BufferingInfoType](#bufferinginfotype8) | 是 | 缓存时间类型。 | 2809| value | number | 是 | value值固定为0。 | 2810 2811## OnVideoSizeChangeHandler<sup>12+</sup> 2812 2813type OnVideoSizeChangeHandler = (width: number, height: number) => void 2814 2815视频播放宽高变化事件回调方法。 2816 2817**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2818 2819**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2820 2821| 参数名 | 类型 | 必填 | 说明 | 2822| ------ | ------ | ------ | ------------------------------------------------------------ | 2823| width | number | 是 | 视频宽度。 | 2824| height | number | 是 | 视频高度。 | 2825 2826## AVFileDescriptor<sup>9+</sup> 2827 2828音视频文件资源描述,一种特殊资源的播放方式,使用场景:应用中的音频资源被连续存储在同一个文件中,需要根据偏移量和长度进行播放。 2829 2830**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2831 2832**系统能力:** SystemCapability.Multimedia.Media.Core 2833 2834| 名称 | 类型 | 必填 | 说明 | 2835| ------ | ------ | ---- | ------------------------------------------------------------ | 2836| fd | number | 是 | 资源句柄,通过[resourceManager.getRawFd](../apis-localization-kit/js-apis-resource-manager.md#getrawfd9)获取,也可以通过[fs.open](../apis-core-file-kit/js-apis-file-fs.md#fsopen)获取。 | 2837| offset | number | 否 | 资源偏移量,默认值为0,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 | 2838| length | number | 否 | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 | 2839 2840## AVDataSrcDescriptor<sup>10+</sup> 2841 2842音视频文件资源描述,用于DataSource播放方式,使用场景:应用在未获取完整音视频资源时,允许用户创建播放实例并开始播放,达到提前播放的目的。 2843 2844**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2845 2846**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2847 2848| 名称 | 类型 | 必填 | 说明 | 2849| ------ | ------ | ---- | ------------------------------------------------------------ | 2850| fileSize | number | 是 | 待播放文件大小(字节),-1代表大小未知。如果fileSize设置为-1, 播放模式类似于直播,不能进行seek及setSpeed操作,不能设置loop属性,因此不能重新播放。 | 2851| callback | (buffer: ArrayBuffer, length: number, pos?: number) => number | 是 | 用户设置的回调函数,用于填写数据。<br>- 函数列式:callback: (buffer: ArrayBuffer, length: number, pos?:number) => number;<br>- buffer,ArrayBuffer类型,表示被填写的内存,必选。<br>- length,number类型,表示被填写内存的最大长度,必选。<br>- pos,number类型,表示填写的数据在资源文件中的位置,可选,当fileSize设置为-1时,该参数禁止被使用。 <br>- 返回值,number类型,返回要填充数据的长度。 | 2852 2853## SubtitleInfo<sup>12+</sup> 2854 2855外挂字幕信息,使用场景:订阅外挂字幕事件,回调返回外挂字幕详细信息。 2856 2857**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2858 2859**系统能力:** SystemCapability.Multimedia.Media.Core 2860 2861| 名称 | 类型 | 必填 | 说明 | 2862| ------ | ------ | ---- | ------------------------------------------------------------ | 2863| text | string | 否 | 字幕文本信息。 | 2864| startTime | number | 否 | 显示当前字幕文本的开始时间(单位:毫秒)。 | 2865| duration | number | 否 | 显示当前字幕文本的持续时间(单位:毫秒)。 | 2866 2867## SeekMode<sup>8+</sup> 2868 2869视频播放的Seek模式枚举,可通过seek方法作为参数传递下去。 2870 2871**系统能力:** SystemCapability.Multimedia.Media.Core 2872 2873| 名称 | 值 | 说明 | 2874| -------------- | ---- | ------------------------------------------------------------ | 2875| SEEK_NEXT_SYNC | 0 | 表示跳转到指定时间点的下一个关键帧,建议向后快进的时候用这个枚举值。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 2876| SEEK_PREV_SYNC | 1 | 表示跳转到指定时间点的上一个关键帧,建议向前快进的时候用这个枚举值。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 2877| SEEK_CLOSEST<sup>12+</sup> | 2 | 表示跳转到距离指定时间点最近的帧,建议精准跳转进度的时候用这个枚举值。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2878 2879## SwitchMode<sup>12+</sup> 2880 2881视频播放的selectTrack模式枚举,可通过selectTrack方法作为参数传递下去,当前仅DASH协议视频轨支持该扩展参数。 2882 2883**系统能力:** SystemCapability.Multimedia.Media.Core 2884 2885| 名称 | 值 | 说明 | 2886| -------------- | ---- | ------------------------------------------------------------ | 2887| SMOOTH | 0 | 表示切换后视频平滑播放,该模式切换存在延迟,不会立即生效。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2888| SEGMENT | 1 | 表示切换后从当前分片开始位置播放,该模式立即切换,会有重复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2889| CLOSEST | 2 | 表示从距离当前播放时间点最近的帧开始播放,该模式立即切换,切换后会卡住3到5s,然后恢复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2890 2891## PlaybackSpeed<sup>8+</sup> 2892 2893视频播放的倍速枚举,可通过setSpeed方法作为参数传递下去。 2894 2895**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2896 2897**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 2898 2899| 名称 | 值 | 说明 | 2900| -------------------- | ---- | ------------------------------ | 2901| SPEED_FORWARD_0_75_X | 0 | 表示视频播放正常播速的0.75倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2902| SPEED_FORWARD_1_00_X | 1 | 表示视频播放正常播速。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2903| SPEED_FORWARD_1_25_X | 2 | 表示视频播放正常播速的1.25倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2904| SPEED_FORWARD_1_75_X | 3 | 表示视频播放正常播速的1.75倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2905| SPEED_FORWARD_2_00_X | 4 | 表示视频播放正常播速的2.00倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2906| SPEED_FORWARD_0_50_X<sup>12+</sup> | 5 | 表示视频播放正常播速的0.50倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2907| SPEED_FORWARD_1_50_X<sup>12+</sup> | 6 | 表示视频播放正常播速的1.50倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2908| SPEED_FORWARD_0_25_X<sup>12+</sup> | 8 | 表示视频播放正常播速的0.25倍。 | 2909| SPEED_FORWARD_0_125_X<sup>12+</sup> | 9 | 表示视频播放正常播速的0.125倍。 | 2910 2911## VideoScaleType<sup>9+</sup> 2912 2913枚举,视频缩放模式。 2914 2915**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2916 2917**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 2918 2919| 名称 | 值 | 说明 | 2920| ------------------------- | ---- | ------------------------------------------------ | 2921| VIDEO_SCALE_TYPE_FIT | 0 | 默认比例类型,视频拉伸至与窗口等大。 | 2922| VIDEO_SCALE_TYPE_FIT_CROP | 1 | 保持视频宽高比拉伸至填满窗口,内容可能会有裁剪。 | 2923 2924## MediaDescription<sup>8+</sup> 2925 2926通过key-value方式获取媒体信息。 2927 2928**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2929 2930**系统能力:** SystemCapability.Multimedia.Media.Core 2931 2932| 名称 | 类型 | 必填 | 说明 | 2933| ------------- | ------ | ---- | ------------------------------------------------------------ | 2934| [key: string] | Object | 是 | 该键值对支持的key取值范围,请参考[MediaDescriptionKey](#mediadescriptionkey8);每个key值的Object类型和范围,请参考[MediaDescriptionKey](#mediadescriptionkey8)对应Key值的说明 | 2935 2936**示例:** 2937 2938```ts 2939import { BusinessError } from '@kit.BasicServicesKit'; 2940import { media } from '@kit.MediaKit'; 2941 2942function printfItemDescription(obj: media.MediaDescription, key: string) { 2943 let property: Object = obj[key]; 2944 console.info('audio key is ' + key); // 通过key值获取对应的value。key值具体可见[MediaDescriptionKey] 2945 console.info('audio value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[MediaDescriptionKey] 2946} 2947 2948let avPlayer: media.AVPlayer | undefined = undefined; 2949media.createAVPlayer((err: BusinessError, player: media.AVPlayer) => { 2950 if(player != null) { 2951 avPlayer = player; 2952 console.info(`Succeeded in creating AVPlayer`); 2953 avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 2954 if (arrList != null) { 2955 for (let i = 0; i < arrList.length; i++) { 2956 printfItemDescription(arrList[i], media.MediaDescriptionKey.MD_KEY_TRACK_TYPE); //打印出每条轨道MD_KEY_TRACK_TYPE的值 2957 } 2958 } else { 2959 console.error(`Failed to get TrackDescription, error:${error}`); 2960 } 2961 }); 2962 } else { 2963 console.error(`Failed to create AVPlayer, error message:${err.message}`); 2964 } 2965}); 2966``` 2967 2968## PlaybackInfo<sup>12+</sup> 2969 2970通过key-value方式获取播放信息。 2971 2972**系统能力:** SystemCapability.Multimedia.Media.Core 2973 2974| 名称 | 类型 | 必填 | 说明 | 2975| ------------- | ------ | ---- | ------------------------------------------------------------ | 2976| [key: string] | Object | 是 | 该键值对支持的key取值范围,请参考[PlaybackInfoKey](#playbackinfokey12);每个key值的Object类型和范围,请参考[PlaybackInfoKey](#playbackinfokey12)对应Key值的说明。 | 2977 2978**示例:** 2979 2980```ts 2981import { BusinessError } from '@kit.BasicServicesKit'; 2982import { media } from '@kit.MediaKit'; 2983 2984function printfPlaybackInfo(obj: media.PlaybackInfo, key: string) { 2985 let property: Object = obj[key]; 2986 console.info('key is ' + key); // 通过key值获取对应的value。key值具体可见[PlaybackInfoKey] 2987 console.info('value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[PlaybackInfoKey] 2988} 2989 2990let avPlayer: media.AVPlayer | undefined = undefined; 2991let playbackInfo: media.PlaybackInfo | undefined = undefined; 2992media.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => { 2993 if (player != null) { 2994 avPlayer = player; 2995 console.info(`Succeeded in creating AVPlayer`); 2996 if (avPlayer) { 2997 try { 2998 playbackInfo = await avPlayer.getPlaybackInfo(); 2999 console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值 3000 printfPlaybackInfo(playbackInfo, media.PlaybackInfoKey.SERVER_IP_ADDRESS); // 打印ip的值 3001 } catch (error) { 3002 console.error(`error = ${error}`); 3003 } 3004 } 3005 } else { 3006 console.error(`Failed to create AVPlayer, error message:${err.message}`); 3007 } 3008}); 3009``` 3010 3011## AVRecorder<sup>9+</sup> 3012 3013音视频录制管理类,用于音视频媒体录制。在调用AVRecorder的方法前,需要先通过[createAVRecorder()](#mediacreateavrecorder9)构建一个AVRecorder实例。 3014 3015音视频录制demo可参考:[音频录制开发指导](../../media/media/using-avrecorder-for-recording.md)、[视频录制开发指导](../../media/media/video-recording.md)。 3016 3017> **说明:** 3018> 3019> 使用相机进行视频录制时,需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。 3020 3021### 属性 3022 3023**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3024 3025| 名称 | 类型 | 只读 | 可选 | 说明 | 3026| ------- | ------------------------------------ | ---- | ---- | ------------------ | 3027| state9+ | [AVRecorderState](#avrecorderstate9) | 是 | 否 | 音视频录制的状态。<br>**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 3028 3029### prepare<sup>9+</sup> 3030 3031prepare(config: AVRecorderConfig, callback: AsyncCallback\<void>): void 3032 3033异步方式进行音视频录制的参数设置。通过注册回调函数获取返回值。 3034 3035**需要权限:** ohos.permission.MICROPHONE 3036 3037不涉及音频录制时,可以不需要获取ohos.permission.MICROPHONE权限。 3038 3039使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。 3040 3041**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3042 3043**参数:** 3044 3045| 参数名 | 类型 | 必填 | 说明 | 3046| -------- | -------------------------------------- | ---- | ------------------------------------- | 3047| config | [AVRecorderConfig](#avrecorderconfig9) | 是 | 配置音视频录制的相关参数。 | 3048| callback | AsyncCallback\<void> | 是 | 回调函数。当prepare方法成功,err为undefined,否则为错误对象。 | 3049 3050**错误码:** 3051 3052以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3053 3054| 错误码ID | 错误信息 | 3055| -------- | --------------------------------------- | 3056| 201 | Permission denied. Return by callback. | 3057| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 3058| 5400102 | Operate not permit. Return by callback. | 3059| 5400105 | Service died. Return by callback. | 3060 3061**示例:** 3062 3063```ts 3064import { BusinessError } from '@kit.BasicServicesKit'; 3065 3066// 配置参数以实际硬件设备支持的范围为准 3067let avRecorderProfile: media.AVRecorderProfile = { 3068 audioBitrate : 48000, 3069 audioChannels : 2, 3070 audioCodec : media.CodecMimeType.AUDIO_AAC, 3071 audioSampleRate : 48000, 3072 fileFormat : media.ContainerFormatType.CFT_MPEG_4, 3073 videoBitrate : 2000000, 3074 videoCodec : media.CodecMimeType.VIDEO_AVC, 3075 videoFrameWidth : 640, 3076 videoFrameHeight : 480, 3077 videoFrameRate : 30 3078} 3079let avRecorderConfig: media.AVRecorderConfig = { 3080 audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 3081 videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 3082 profile : avRecorderProfile, 3083 url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45 3084 rotation : 0, // 合理值0、90、180、270,非合理值prepare接口将报错 3085 location : { latitude : 30, longitude : 130 } 3086} 3087 3088avRecorder.prepare(avRecorderConfig, (err: BusinessError) => { 3089 if (err) { 3090 console.error('Failed to prepare and error is ' + err.message); 3091 } else { 3092 console.info('Succeeded in preparing'); 3093 } 3094}) 3095``` 3096 3097### prepare<sup>9+</sup> 3098 3099prepare(config: AVRecorderConfig): Promise\<void> 3100 3101异步方式进行音视频录制的参数设置。通过Promise获取返回值。 3102 3103**需要权限:** ohos.permission.MICROPHONE 3104 3105不涉及音频录制时,可以不需要获ohos.permission.MICROPHONE权限。 3106 3107使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。 3108 3109**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3110 3111**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3112 3113**参数:** 3114 3115| 参数名 | 类型 | 必填 | 说明 | 3116| ------ | -------------------------------------- | ---- | -------------------------- | 3117| config | [AVRecorderConfig](#avrecorderconfig9) | 是 | 配置音视频录制的相关参数。 | 3118 3119**返回值:** 3120 3121| 类型 | 说明 | 3122| -------------- | ------------------------------------------ | 3123| Promise\<void> | 异步音视频录制prepare方法的Promise返回值。 | 3124 3125**错误码:** 3126 3127以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3128 3129| 错误码ID | 错误信息 | 3130| -------- | -------------------------------------- | 3131| 201 | Permission denied. Return by promise. | 3132| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 3133| 5400102 | Operate not permit. Return by promise. | 3134| 5400105 | Service died. Return by promise. | 3135 3136**示例:** 3137 3138```ts 3139import { BusinessError } from '@kit.BasicServicesKit'; 3140 3141// 配置参数以实际硬件设备支持的范围为准 3142let avRecorderProfile: media.AVRecorderProfile = { 3143 audioBitrate : 48000, 3144 audioChannels : 2, 3145 audioCodec : media.CodecMimeType.AUDIO_AAC, 3146 audioSampleRate : 48000, 3147 fileFormat : media.ContainerFormatType.CFT_MPEG_4, 3148 videoBitrate : 2000000, 3149 videoCodec : media.CodecMimeType.VIDEO_AVC, 3150 videoFrameWidth : 640, 3151 videoFrameHeight : 480, 3152 videoFrameRate : 30 3153} 3154let avRecorderConfig: media.AVRecorderConfig = { 3155 audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 3156 videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 3157 profile : avRecorderProfile, 3158 url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45 3159 rotation : 0, // 合理值0、90、180、270,非合理值prepare接口报错 3160 location : { latitude : 30, longitude : 130 } 3161} 3162 3163avRecorder.prepare(avRecorderConfig).then(() => { 3164 console.info('Succeeded in preparing'); 3165}).catch((err: BusinessError) => { 3166 console.error('Failed to prepare and catch error is ' + err.message); 3167}); 3168``` 3169 3170### getInputSurface<sup>9+</sup> 3171 3172getInputSurface(callback: AsyncCallback\<string>): void 3173 3174异步方式获得录制需要的surface。通过注册回调函数获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。 3175 3176应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。 3177 3178需在[prepare()](#prepare9-2)事件成功触发后,才能调用getInputSurface()方法。 3179 3180**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3181 3182**参数:** 3183 3184| 参数名 | 类型 | 必填 | 说明 | 3185| -------- | ---------------------- | ---- | --------------------------- | 3186| callback | AsyncCallback\<string> | 是 | 回调函数。当获取surface成功,err为undefined,data为获取到的surfaceId,否则为错误对象。 | 3187 3188**错误码:** 3189 3190以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 3191 3192| 错误码ID | 错误信息 | 3193| -------- | --------------------------------------- | 3194| 5400102 | Operate not permit. Return by callback. | 3195| 5400103 | IO error. Return by callback. | 3196| 5400105 | Service died. Return by callback. | 3197 3198**示例:** 3199 3200```ts 3201import { BusinessError } from '@kit.BasicServicesKit'; 3202let surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput 3203 3204avRecorder.getInputSurface((err: BusinessError, surfaceId: string) => { 3205 if (err) { 3206 console.error('Failed to do getInputSurface and error is ' + err.message); 3207 } else { 3208 console.info('Succeeded in doing getInputSurface'); 3209 surfaceID = surfaceId; 3210 } 3211}); 3212 3213``` 3214 3215### getInputSurface<sup>9+</sup> 3216 3217getInputSurface(): Promise\<string> 3218 3219异步方式获得录制需要的surface。通过Promise获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。 3220 3221应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。 3222 3223需在[prepare()](#prepare9-3)事件成功触发后,才能调用getInputSurface方法。 3224 3225**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3226 3227**返回值:** 3228 3229| 类型 | 说明 | 3230| ---------------- | -------------------------------- | 3231| Promise\<string> | 异步获得surface的Promise返回值。 | 3232 3233**错误码:** 3234 3235以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 3236 3237| 错误码ID | 错误信息 | 3238| -------- | -------------------------------------- | 3239| 5400102 | Operate not permit. Return by promise. | 3240| 5400103 | IO error. Return by promise. | 3241| 5400105 | Service died. Return by promise. | 3242 3243**示例:** 3244 3245```ts 3246import { BusinessError } from '@kit.BasicServicesKit'; 3247let surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput 3248 3249avRecorder.getInputSurface().then((surfaceId: string) => { 3250 console.info('Succeeded in getting InputSurface'); 3251 surfaceID = surfaceId; 3252}).catch((err: BusinessError) => { 3253 console.error('Failed to get InputSurface and catch error is ' + err.message); 3254}); 3255``` 3256 3257### updateRotation<sup>12+</sup> 3258 3259updateRotation(rotation: number): Promise\<void> 3260 3261更新视频旋转角度。通过Promise获取返回值。 3262 3263当且仅当[prepare()](#prepare9-3)事件成功触发后,且在[start()](#start9)之前,才能调用updateRotation方法。 3264 3265**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3266 3267**参数:** 3268 3269| 参数名 | 类型 | 必填 | 说明 | 3270| -------- | -------------------- | ---- | --------------------------- | 3271| rotation | number | 是 | 旋转角度,取值仅支持0、90、180、270度。 | 3272 3273**返回值:** 3274 3275| 类型 | 说明 | 3276| ---------------- | -------------------------------- | 3277| Promise\<void> | 异步返回函数执行结果。 | 3278 3279**错误码:** 3280 3281以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 3282 3283| 错误码ID | 错误信息 | 3284| -------- | -------------------------------------- | 3285| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 3286| 5400102 | Operation not allowed. Return by promise. | 3287| 5400103 | IO error. Return by promise. | 3288| 5400105 | Service died. Return by promise. | 3289 3290**示例:** 3291 3292```ts 3293import { BusinessError } from '@kit.BasicServicesKit'; 3294 3295let rotation = 90 3296 3297avRecorder.updateRotation(rotation).then(() => { 3298 console.info('Succeeded in updateRotation'); 3299}).catch((err: BusinessError) => { 3300 console.error('Failed to updateRotation and catch error is ' + err.message); 3301}); 3302``` 3303 3304### start<sup>9+</sup> 3305 3306start(callback: AsyncCallback\<void>): void 3307 3308异步方式开始视频录制。通过注册回调函数获取返回值。 3309 3310纯音频录制需在[prepare()](#prepare9-2)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9)事件成功触发后,才能调用start方法。 3311 3312**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3313 3314**参数:** 3315 3316| 参数名 | 类型 | 必填 | 说明 | 3317| -------- | -------------------- | ---- | ---------------------------- | 3318| callback | AsyncCallback\<void> | 是 |回调函数。当开始录制视频成功,err为undefined,否则为错误对象。 | 3319 3320**错误码:** 3321 3322以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3323 3324| 错误码ID | 错误信息 | 3325| -------- | --------------------------------------- | 3326| 5400102 | Operate not permit. Return by callback. | 3327| 5400103 | IO error. Return by callback. | 3328| 5400105 | Service died. Return by callback. | 3329 3330**示例:** 3331 3332```ts 3333import { BusinessError } from '@kit.BasicServicesKit'; 3334 3335avRecorder.start((err: BusinessError) => { 3336 if (err) { 3337 console.error('Failed to start AVRecorder and error is ' + err.message); 3338 } else { 3339 console.info('Succeeded in starting AVRecorder'); 3340 } 3341}); 3342``` 3343 3344### start<sup>9+</sup> 3345 3346start(): Promise\<void> 3347 3348异步方式开始视频录制。通过Promise获取返回值。 3349 3350纯音频录制需在[prepare()](#prepare9-3)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9-1)事件成功触发后,才能调用start方法。 3351 3352**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3353 3354**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3355 3356**返回值:** 3357 3358| 类型 | 说明 | 3359| -------------- | ------------------------------------- | 3360| Promise\<void> | 异步开始视频录制方法的Promise返回值。 | 3361 3362**错误码:** 3363 3364以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3365 3366| 错误码ID | 错误信息 | 3367| -------- | -------------------------------------- | 3368| 5400102 | Operate not permit. Return by promise. | 3369| 5400103 | IO error. Return by promise. | 3370| 5400105 | Service died. Return by promise. | 3371 3372**示例:** 3373 3374```ts 3375import { BusinessError } from '@kit.BasicServicesKit'; 3376 3377avRecorder.start().then(() => { 3378 console.info('Succeeded in starting AVRecorder'); 3379}).catch((err: BusinessError) => { 3380 console.error('Failed to start AVRecorder and catch error is ' + err.message); 3381}); 3382``` 3383 3384### pause<sup>9+</sup> 3385 3386pause(callback: AsyncCallback\<void>): void 3387 3388异步方式暂停视频录制。通过注册回调函数获取返回值。 3389 3390需要[start()](#start9)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9)接口来恢复录制。 3391 3392**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3393 3394**参数:** 3395 3396| 参数名 | 类型 | 必填 | 说明 | 3397| -------- | -------------------- | ---- | --------------------------- | 3398| callback | AsyncCallback\<void> | 是 | 回调函数。当暂停视频录制成功,err为undefined,否则为错误对象。 | 3399 3400**错误码:** 3401 3402以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3403 3404| 错误码ID | 错误信息 | 3405| -------- | --------------------------------------- | 3406| 5400102 | Operate not permit. Return by callback. | 3407| 5400103 | IO error. Return by callback. | 3408| 5400105 | Service died. Return by callback. | 3409 3410**示例:** 3411 3412```ts 3413import { BusinessError } from '@kit.BasicServicesKit'; 3414 3415avRecorder.pause((err: BusinessError) => { 3416 if (err) { 3417 console.error('Failed to pause AVRecorder and error is ' + err.message); 3418 } else { 3419 console.info('Succeeded in pausing'); 3420 } 3421}); 3422``` 3423 3424### pause<sup>9+</sup> 3425 3426pause(): Promise\<void> 3427 3428异步方式暂停视频录制。通过Promise获取返回值。 3429 3430需要[start()](#start9-1)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9-1)接口来恢复录制。 3431 3432**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3433 3434**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3435 3436**返回值:** 3437 3438| 类型 | 说明 | 3439| -------------- | ------------------------------------- | 3440| Promise\<void> | 异步暂停视频录制方法的Promise返回值。 | 3441 3442**错误码:** 3443 3444以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3445 3446| 错误码ID | 错误信息 | 3447| -------- | -------------------------------------- | 3448| 5400102 | Operate not permit. Return by promise. | 3449| 5400103 | IO error. Return by promise. | 3450| 5400105 | Service died. Return by promise. | 3451 3452**示例:** 3453 3454```ts 3455import { BusinessError } from '@kit.BasicServicesKit'; 3456 3457avRecorder.pause().then(() => { 3458 console.info('Succeeded in pausing'); 3459}).catch((err: BusinessError) => { 3460 console.error('Failed to pause AVRecorder and catch error is ' + err.message); 3461}); 3462``` 3463 3464### resume<sup>9+</sup> 3465 3466resume(callback: AsyncCallback\<void>): void 3467 3468异步方式恢复视频录制。通过注册回调函数获取返回值。 3469 3470需要在[pause()](#pause9-2)事件成功触发后,才能调用resume方法。 3471 3472**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3473 3474**参数:** 3475 3476| 参数名 | 类型 | 必填 | 说明 | 3477| -------- | -------------------- | ---- | ---------------------------- | 3478| callback | AsyncCallback\<void> | 是 | 回调函数。当恢复视频录制成功,err为undefined,否则为错误对象。 | 3479 3480**错误码:** 3481 3482以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3483 3484| 错误码ID | 错误信息 | 3485| -------- | --------------------------------------- | 3486| 5400102 | Operate not permit. Return by callback. | 3487| 5400103 | IO error. Return by callback. | 3488| 5400105 | Service died. Return by callback. | 3489 3490**示例:** 3491 3492```ts 3493import { BusinessError } from '@kit.BasicServicesKit'; 3494 3495avRecorder.resume((err: BusinessError) => { 3496 if (err) { 3497 console.error('Failed to resume AVRecorder and error is ' + err.message); 3498 } else { 3499 console.info('Succeeded in resuming AVRecorder'); 3500 } 3501}); 3502``` 3503 3504### resume<sup>9+</sup> 3505 3506resume(): Promise\<void> 3507 3508异步方式恢复视频录制。通过Promise获取返回值。 3509 3510需要在[pause()](#pause9-3)事件成功触发后,才能调用resume方法。 3511 3512**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3513 3514**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3515 3516**返回值:** 3517 3518| 类型 | 说明 | 3519| -------------- | ------------------------------------- | 3520| Promise\<void> | 异步恢复视频录制方法的Promise返回值。 | 3521 3522**错误码:** 3523 3524以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3525 3526| 错误码ID | 错误信息 | 3527| -------- | -------------------------------------- | 3528| 5400102 | Operate not permit. Return by promise. | 3529| 5400103 | IO error. Return by promise. | 3530| 5400105 | Service died. Return by promise. | 3531 3532**示例:** 3533 3534```ts 3535import { BusinessError } from '@kit.BasicServicesKit'; 3536 3537avRecorder.resume().then(() => { 3538 console.info('Succeeded in resuming AVRecorder'); 3539}).catch((err: BusinessError) => { 3540 console.error('Failed to resume AVRecorder failed and catch error is ' + err.message); 3541}); 3542``` 3543 3544### stop<sup>9+</sup> 3545 3546stop(callback: AsyncCallback\<void>): void 3547 3548异步方式停止视频录制。通过注册回调函数获取返回值。 3549 3550需要在[start()](#start9)或[pause()](#pause9-2)事件成功触发后,才能调用stop方法。 3551 3552纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。 3553 3554**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3555 3556**参数:** 3557 3558| 参数名 | 类型 | 必填 | 说明 | 3559| -------- | -------------------- | ---- | ---------------------------- | 3560| callback | AsyncCallback\<void> | 是 | 回调函数。当停止视频录制成功,err为undefined,否则为错误对象。 | 3561 3562**错误码:** 3563 3564以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3565 3566| 错误码ID | 错误信息 | 3567| -------- | --------------------------------------- | 3568| 5400102 | Operate not permit. Return by callback. | 3569| 5400103 | IO error. Return by callback. | 3570| 5400105 | Service died. Return by callback. | 3571 3572**示例:** 3573 3574```ts 3575import { BusinessError } from '@kit.BasicServicesKit'; 3576 3577avRecorder.stop((err: BusinessError) => { 3578 if (err) { 3579 console.error('Failed to stop AVRecorder and error is ' + err.message); 3580 } else { 3581 console.info('Succeeded in stopping AVRecorder'); 3582 } 3583}); 3584``` 3585 3586### stop<sup>9+</sup> 3587 3588stop(): Promise\<void> 3589 3590异步方式停止视频录制。通过Promise获取返回值。 3591 3592需要在[start()](#start9-1)或[pause()](#pause9-3)事件成功触发后,才能调用stop方法。 3593 3594纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。 3595 3596**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3597 3598**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3599 3600**返回值:** 3601 3602| 类型 | 说明 | 3603| -------------- | ------------------------------------- | 3604| Promise\<void> | 异步停止视频录制方法的Promise返回值。 | 3605 3606**错误码:** 3607 3608以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3609 3610| 错误码ID | 错误信息 | 3611| -------- | -------------------------------------- | 3612| 5400102 | Operate not permit. Return by promise. | 3613| 5400103 | IO error. Return by promise. | 3614| 5400105 | Service died. Return by promise. | 3615 3616**示例:** 3617 3618```ts 3619import { BusinessError } from '@kit.BasicServicesKit'; 3620 3621avRecorder.stop().then(() => { 3622 console.info('Succeeded in stopping AVRecorder'); 3623}).catch((err: BusinessError) => { 3624 console.error('Failed to stop AVRecorder and catch error is ' + err.message); 3625}); 3626``` 3627 3628### reset<sup>9+</sup> 3629 3630reset(callback: AsyncCallback\<void>): void 3631 3632异步方式重置音视频录制。通过注册回调函数获取返回值。 3633 3634纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。 3635 3636**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3637 3638**参数:** 3639 3640| 参数名 | 类型 | 必填 | 说明 | 3641| -------- | -------------------- | ---- | ------------------------------ | 3642| callback | AsyncCallback\<void> | 是 | 回调函数。当重置音视频录制成功,err为undefined,否则为错误对象。 | 3643 3644**错误码:** 3645 3646以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3647 3648| 错误码ID | 错误信息 | 3649| -------- | --------------------------------- | 3650| 5400103 | IO error. Return by callback. | 3651| 5400105 | Service died. Return by callback. | 3652 3653**示例:** 3654 3655```ts 3656import { BusinessError } from '@kit.BasicServicesKit'; 3657 3658avRecorder.reset((err: BusinessError) => { 3659 if (err) { 3660 console.error('Failed to reset AVRecorder and error is ' + err.message); 3661 } else { 3662 console.info('Succeeded in resetting AVRecorder'); 3663 } 3664}); 3665``` 3666 3667### reset<sup>9+</sup> 3668 3669reset(): Promise\<void> 3670 3671异步方式重置音视频录制。通过Promise获取返回值。 3672 3673纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。 3674 3675**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3676 3677**返回值:** 3678 3679| 类型 | 说明 | 3680| -------------- | --------------------------------------- | 3681| Promise\<void> | 异步重置音视频录制方法的Promise返回值。 | 3682 3683**错误码:** 3684 3685以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3686 3687| 错误码ID | 错误信息 | 3688| -------- | -------------------------------- | 3689| 5400103 | IO error. Return by promise. | 3690| 5400105 | Service died. Return by promise. | 3691 3692**示例:** 3693 3694```ts 3695import { BusinessError } from '@kit.BasicServicesKit'; 3696 3697avRecorder.reset().then(() => { 3698 console.info('Succeeded in resetting AVRecorder'); 3699}).catch((err: BusinessError) => { 3700 console.error('Failed to reset and catch error is ' + err.message); 3701}); 3702``` 3703 3704### release<sup>9+</sup> 3705 3706release(callback: AsyncCallback\<void>): void 3707 3708异步方式释放音视频录制资源。通过注册回调函数获取返回值。 3709 3710释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。 3711 3712**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3713 3714**参数:** 3715 3716| 参数名 | 类型 | 必填 | 说明 | 3717| -------- | -------------------- | ---- | ---------------------------------- | 3718| callback | AsyncCallback\<void> | 是 | 回调函数。当释放音视频录制资源成功,err为undefined,否则为错误对象。 | 3719 3720**错误码:** 3721 3722以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3723 3724| 错误码ID | 错误信息 | 3725| -------- | --------------------------------- | 3726| 5400105 | Service died. Return by callback. | 3727 3728**示例:** 3729 3730```ts 3731import { BusinessError } from '@kit.BasicServicesKit'; 3732 3733avRecorder.release((err: BusinessError) => { 3734 if (err) { 3735 console.error('Failed to release AVRecorder and error is ' + err.message); 3736 } else { 3737 console.info('Succeeded in releasing AVRecorder'); 3738 } 3739}); 3740``` 3741 3742### release<sup>9+</sup> 3743 3744release(): Promise\<void> 3745 3746异步方式释放音视频录制资源。通过Promise获取返回值。 3747 3748释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。 3749 3750**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3751 3752**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3753 3754**返回值:** 3755 3756| 类型 | 说明 | 3757| -------------- | ------------------------------------------- | 3758| Promise\<void> | 异步释放音视频录制资源方法的Promise返回值。 | 3759 3760**错误码:** 3761 3762以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3763 3764| 错误码ID | 错误信息 | 3765| -------- | --------------------------------- | 3766| 5400105 | Service died. Return by callback. | 3767 3768**示例:** 3769 3770```ts 3771import { BusinessError } from '@kit.BasicServicesKit'; 3772 3773avRecorder.release().then(() => { 3774 console.info('Succeeded in releasing AVRecorder'); 3775}).catch((err: BusinessError) => { 3776 console.error('Failed to release AVRecorder and catch error is ' + err.message); 3777}); 3778``` 3779 3780### getCurrentAudioCapturerInfo<sup>11+</sup> 3781 3782getCurrentAudioCapturerInfo(callback: AsyncCallback\<audio.AudioCapturerChangeInfo>): void 3783 3784异步方式获取当前音频采集参数。通过注册回调函数获取返回值。 3785 3786在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3787 3788**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3789 3790**参数**: 3791 3792| 参数名 | 类型 | 必填 | 说明 | 3793| -------- | ------------------------------------------------------------ | ---- | ------------------------------------ | 3794| callback | AsyncCallback\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是 | 回调函数。当获取音频采集参数成功时,err为undefined,data为获取到的audio.AudioCapturerChangeInfo,否则为错误对象。 | 3795 3796**错误码**: 3797 3798以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3799 3800| 错误码ID | 错误信息 | 3801| -------- | ------------------------------------------ | 3802| 5400102 | Operation not allowed. | 3803| 5400103 | I/O error. | 3804| 5400105 | Service died. Return by callback. | 3805 3806**示例**: 3807 3808```ts 3809import { audio } from '@kit.AudioKit'; 3810 3811let currentCapturerInfo: audio.AudioCapturerChangeInfo; 3812 3813avRecorder.getCurrentAudioCapturerInfo((err: BusinessError, capturerInfo: audio.AudioCapturerChangeInfo) => { 3814 if (err) { 3815 console.error('Failed to get CurrentAudioCapturerInfo and error is ' + err.message); 3816 } else { 3817 console.info('Succeeded in getting CurrentAudioCapturerInfo'); 3818 currentCapturerInfo = capturerInfo; 3819 } 3820}); 3821``` 3822 3823### getCurrentAudioCapturerInfo<sup>11+</sup> 3824 3825getCurrentAudioCapturerInfo(): Promise\<audio.AudioCapturerChangeInfo> 3826 3827异步方式获取当前音频采集参数。通过Promise获取返回值。 3828 3829在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3830 3831**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3832 3833**返回值**: 3834 3835| 类型 | 说明 | 3836| ------------------------------------------------------------ | ------------------------------------------------- | 3837| Promise\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | Promise对象,返回获取的当前音频采集参数。 | 3838 3839**错误码**: 3840 3841以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3842 3843| 错误码ID | 错误信息 | 3844| -------- | -------------------------------- | 3845| 5400102 | Operation not allowed. | 3846| 5400103 | I/O error. | 3847| 5400105 | Service died. Return by promise. | 3848 3849**示例**: 3850 3851```ts 3852import { audio } from '@kit.AudioKit'; 3853 3854let currentCapturerInfo: audio.AudioCapturerChangeInfo; 3855 3856avRecorder.getCurrentAudioCapturerInfo().then((capturerInfo: audio.AudioCapturerChangeInfo) => { 3857 console.info('Succeeded in getting CurrentAudioCapturerInfo'); 3858 currentCapturerInfo = capturerInfo; 3859}).catch((err: BusinessError) => { 3860 console.error('Failed to get CurrentAudioCapturerInfo and catch error is ' + err.message); 3861}); 3862``` 3863 3864### getAudioCapturerMaxAmplitude<sup>11+</sup> 3865 3866getAudioCapturerMaxAmplitude(callback: AsyncCallback\<number>): void 3867 3868异步方式获取当前音频最大振幅。通过注册回调函数获取返回值。 3869 3870在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3871 3872调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。 3873 3874**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3875 3876**参数**: 3877 3878| 参数名 | 类型 | 必填 | 说明 | 3879| -------- | ---------------------- | ---- | ------------------------------------ | 3880| callback | AsyncCallback\<number> | 是 | 回调函数。获取当前音频最大振幅成功时,err为undefined,data为获取到的最大振幅,否则为错误对象。 | 3881 3882**错误码**: 3883 3884以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3885 3886| 错误码ID | 错误信息 | 3887| -------- | ------------------------------------------ | 3888| 5400102 | Operation not allowed. | 3889| 5400105 | Service died. Return by callback. | 3890 3891**示例**: 3892 3893```ts 3894let maxAmplitude: number; 3895 3896avRecorder.getAudioCapturerMaxAmplitude((err: BusinessError, amplitude: number) => { 3897 if (err) { 3898 console.error('Failed to get AudioCapturerMaxAmplitude and error is ' + err.message); 3899 } else { 3900 console.info('Succeeded in getting AudioCapturerMaxAmplitude'); 3901 maxAmplitude = amplitude; 3902 } 3903}); 3904``` 3905 3906### getAudioCapturerMaxAmplitude<sup>11+</sup> 3907 3908getAudioCapturerMaxAmplitude(): Promise\<number> 3909 3910异步方式获取当前音频最大振幅参数。通过Promise获取返回值。 3911 3912在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3913 3914调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。 3915 3916**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3917 3918**返回值**: 3919 3920| 类型 | 说明 | 3921| ---------------- | ------------------------------------------------- | 3922| Promise\<number> | Promise对象,返回获取的当前音频最大振幅。 | 3923 3924**错误码**: 3925 3926以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3927 3928| 错误码ID | 错误信息 | 3929| -------- | -------------------------------- | 3930| 5400102 | Operation not allowed. | 3931| 5400105 | Service died. Return by promise. | 3932 3933**示例**: 3934 3935```ts 3936let maxAmplitude: number; 3937 3938avRecorder.getAudioCapturerMaxAmplitude().then((amplitude: number) => { 3939 console.info('Succeeded in getting AudioCapturerMaxAmplitude'); 3940 maxAmplitude = amplitude; 3941}).catch((err: BusinessError) => { 3942 console.error('Failed to get AudioCapturerMaxAmplitude and catch error is ' + err.message); 3943}); 3944``` 3945 3946### getAvailableEncoder<sup>11+</sup> 3947 3948getAvailableEncoder(callback: AsyncCallback\<Array\<EncoderInfo>>): void 3949 3950异步方式获取可用的编码器参数。通过注册回调函数获取返回值。 3951 3952**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3953 3954**参数**: 3955 3956| 参数名 | 类型 | 必填 | 说明 | 3957| -------- | ----------------------------------------------------- | ---- | ------------------------------------ | 3958| callback | AsyncCallback\<Array\<[EncoderInfo](#encoderinfo11)>> | 是 | 回调函数。获取可用的编码器参数成功时,err为undefined,data为获取到的编码器参数,否则为错误对象。 | 3959 3960**错误码**: 3961 3962以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3963 3964| 错误码ID | 错误信息 | 3965| -------- | ------------------------------------------ | 3966| 5400102 | Operation not allowed. | 3967| 5400105 | Service died. Return by callback. | 3968 3969**示例**: 3970 3971```ts 3972let encoderInfo: media.EncoderInfo; 3973 3974avRecorder.getAvailableEncoder((err: BusinessError, info: media.EncoderInfo[]) => { 3975 if (err) { 3976 console.error('Failed to get AvailableEncoder and error is ' + err.message); 3977 } else { 3978 console.info('Succeeded in getting AvailableEncoder'); 3979 encoderInfo = info[0]; 3980 } 3981}); 3982``` 3983 3984### getAvailableEncoder<sup>11+</sup> 3985 3986getAvailableEncoder(): Promise\<Array\<EncoderInfo>> 3987 3988异步方式获取可用的编码器参数。通过注册回调函数获取返回值。 3989 3990**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3991 3992**返回值**: 3993 3994| 类型 | 说明 | 3995| ----------------------------------------------- | ----------------------------------------------- | 3996| Promise\<Array\<[EncoderInfo](#encoderinfo11)>> | Promise对象,返回获取的可用的编码器参数。 | 3997 3998**错误码**: 3999 4000以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4001 4002| 错误码ID | 错误信息 | 4003| -------- | -------------------------------- | 4004| 5400102 | Operation not allowed. | 4005| 5400105 | Service died. Return by promise. | 4006 4007**示例**: 4008 4009```ts 4010let encoderInfo: media.EncoderInfo; 4011 4012avRecorder.getAvailableEncoder().then((info: media.EncoderInfo[]) => { 4013 console.info('Succeeded in getting AvailableEncoder'); 4014 encoderInfo = info[0]; 4015}).catch((err: BusinessError) => { 4016 console.error('Failed to get AvailableEncoder and catch error is ' + err.message); 4017}); 4018``` 4019 4020### getAVRecorderConfig<sup>11+</sup> 4021 4022getAVRecorderConfig(callback: AsyncCallback\<AVRecorderConfig>): void 4023 4024异步方式获取实时的配置参数。通过注册回调函数获取返回值。 4025 4026只能在[prepare()](#prepare9-2)接口调用后调用。 4027 4028**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4029 4030**参数:** 4031 4032| 参数名 | 类型 | 必填 | 说明 | 4033| -------- | ---------------------- | ---- | --------------------------- | 4034| callback | AsyncCallback\<[AVRecorderConfig](#avrecorderconfig9)> | 是 | 回调函数。获取实时配置的参数成功时,err为undefined,data为获取到的配置参数,否则为错误对象。 | 4035 4036**错误码:** 4037 4038以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 4039 4040| 错误码ID | 错误信息 | 4041| -------- | ------------------------------------------ | 4042| 5400102 | Operate not permit. Return by callback. | 4043| 5400103 | IO error. Return by callback. | 4044| 5400105 | Service died. Return by callback. | 4045 4046**示例:** 4047 4048```ts 4049import { BusinessError } from '@kit.BasicServicesKit'; 4050 4051let avConfig: media.AVRecorderConfig; 4052 4053avRecorder.getAVRecorderConfig((err: BusinessError, config: media.AVRecorderConfig) => { 4054 if (err) { 4055 console.error('Failed to get avConfig and error is ' + err.message); 4056 } else { 4057 console.info('Succeeded in getting AVRecorderConfig'); 4058 avConfig = config; 4059 } 4060}); 4061``` 4062 4063### getAVRecorderConfig<sup>11+</sup> 4064 4065getAVRecorderConfig(): Promise\<AVRecorderConfig>; 4066 4067异步方式获取实时的配置参数。通过Promise获取返回值。 4068 4069只能在[prepare()](#prepare9-3)接口调用后调用。 4070 4071**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4072 4073**返回值:** 4074 4075| 类型 | 说明 | 4076| ---------------- | -------------------------------- | 4077| Promise\<[AVRecorderConfig](#avrecorderconfig9)> | 异步获得实时配置参数的回调方法。 | 4078 4079**错误码:** 4080 4081以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 4082 4083| 错误码ID | 错误信息 | 4084| -------- | ----------------------------------------- | 4085| 5400102 | Operate not permit. Return by promise. | 4086| 5400103 | IO error. Return by promise. | 4087| 5400105 | Service died. Return by promise. | 4088 4089**示例:** 4090 4091```ts 4092import { BusinessError } from '@kit.BasicServicesKit'; 4093 4094let avConfig: media.AVRecorderConfig; 4095 4096avRecorder.getAVRecorderConfig().then((config: media.AVRecorderConfig) => { 4097 console.info('Succeeded in getting AVRecorderConfig'); 4098 avConfig = config; 4099}).catch((err: BusinessError) => { 4100 console.error('Failed to get AVRecorderConfig and catch error is ' + err.message); 4101}); 4102``` 4103 4104### on('stateChange')<sup>9+</sup> 4105 4106on(type: 'stateChange', callback: OnAVRecorderStateChangeHandler): void 4107 4108订阅录制状态机AVRecorderState切换的事件,当 AVRecorderState状态机发生变化时,会通过订阅的回调方法通知用户。用户只能订阅一个状态机切换事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 4109 4110**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4111 4112**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4113 4114**参数:** 4115 4116| 参数名 | 类型 | 必填 | 说明 | 4117| -------- | -------- | ---- | ------------------------------------------------------------ | 4118| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 4119| callback | [OnAVRecorderStateChangeHandler](#onavrecorderstatechangehandler12) | 是 | 状态机切换事件回调方法。 | 4120 4121**错误码:** 4122 4123以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4124 4125| 错误码ID | 错误信息 | 4126| -------- | --------------------------------- | 4127| 5400103 | IO error. Return by callback. | 4128| 5400105 | Service died. Return by callback. | 4129 4130**示例:** 4131 4132```ts 4133avRecorder.on('stateChange', async (state: media.AVRecorderState, reason: media.StateChangeReason) => { 4134 console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason); 4135}); 4136``` 4137 4138### off('stateChange')<sup>9+</sup> 4139 4140off(type: 'stateChange', callback?: OnAVRecorderStateChangeHandler): void 4141 4142取消订阅播放状态机[AVRecorderState](#avrecorderstate9)切换的事件。 4143 4144**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4145 4146**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4147 4148**参数:** 4149 4150| 参数名 | 类型 | 必填 | 说明 | 4151| ------ | ------ | ---- | ------------------------------------------------------------ | 4152| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 4153| callback | [OnAVRecorderStateChangeHandler](#onavrecorderstatechangehandler12) | 否 | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 | 4154 4155**示例:** 4156 4157```ts 4158avRecorder.off('stateChange'); 4159``` 4160 4161### on('error')<sup>9+</sup> 4162 4163on(type: 'error', callback: ErrorCallback): void 4164 4165订阅AVRecorder的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVRecorderState](#avrecorderstate9)也切至error状态,用户需要通过[reset()](#reset9-2)或者[release()](#release9-2)退出录制操作。 4166 4167用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 4168 4169**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4170 4171**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4172 4173**参数:** 4174 4175| 参数名 | 类型 | 必填 | 说明 | 4176| -------- | ------------- | ---- | ------------------------------------------------------------ | 4177| type | string | 是 | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 4178| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录制错误事件回调方法。 | 4179 4180**错误码:** 4181 4182以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4183 4184| 错误码ID | 错误信息 | 4185| -------- | ------------------------------------------ | 4186| 201 | Permission denied. | 4187| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 4188| 801 | Capability not supported. | 4189| 5400101 | No memory. | 4190| 5400102 | Operation not allowed. | 4191| 5400103 | I/O error. | 4192| 5400104 | Time out. | 4193| 5400105 | Service died. | 4194| 5400106 | Unsupport format. | 4195| 5400107 | Audio interrupted. | 4196 4197**示例:** 4198 4199```ts 4200import { BusinessError } from '@kit.BasicServicesKit'; 4201 4202avRecorder.on('error', (err: BusinessError) => { 4203 console.info('case avRecorder.on(error) called, errMessage is ' + err.message); 4204}); 4205``` 4206 4207### off('error')<sup>9+</sup> 4208 4209off(type: 'error', callback?: ErrorCallback): void 4210 4211取消订阅录制错误事件,取消后不再接收到AVRecorder的错误事件。 4212 4213**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4214 4215**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4216 4217**参数:** 4218 4219| 参数名 | 类型 | 必填 | 说明 | 4220| ------ | ------ | ---- | ------------------------------------------------------------ | 4221| type | string | 是 | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 4222| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 录制错误事件回调方法。<br/>从API version 12开始支持此参数。 | 4223 4224**示例:** 4225 4226```ts 4227avRecorder.off('error'); 4228``` 4229 4230### on('audioCapturerChange')<sup>11+</sup> 4231 4232on(type: 'audioCapturerChange', callback: Callback<audio.AudioCapturerChangeInfo>): void 4233 4234订阅录音配置变化的回调,任意录音配置的变化会触发变化后的录音配置全量信息回调。 4235 4236当用户重复订阅时,以最后一次订阅的回调接口为准。 4237 4238**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4239 4240**参数:** 4241 4242| 参数名 | 类型 | 必填 | 说明 | 4243| -------- | -------- | ---- | ------------------------------------------------------------ | 4244| type | string | 是 |录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 | 4245| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是 | 变化后的录音配置全量信息。| 4246 4247**错误码:** 4248 4249| 错误码ID | 错误信息 | 4250| -------- | ------------------------------------------ | 4251| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 4252 4253**示例:** 4254 4255```ts 4256let capturerChangeInfo: audio.AudioCapturerChangeInfo; 4257 4258avRecorder.on('audioCapturerChange', (audioCapturerChangeInfo: audio.AudioCapturerChangeInfo) => { 4259 console.info('audioCapturerChange called'); 4260 capturerChangeInfo = audioCapturerChangeInfo; 4261}); 4262``` 4263 4264### off('audioCapturerChange')<sup>11+</sup> 4265 4266off(type: 'audioCapturerChange', callback?: Callback<audio.AudioCapturerChangeInfo>): void 4267 4268取消订阅录音变化的回调事件。 4269 4270**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4271 4272**参数:** 4273 4274| 参数名 | 类型 | 必填 | 说明 | 4275| ------ | ------ | ---- | ------------------------------------------------------------ | 4276| type | string | 是 | 录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 | 4277| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 否 | 变化后的录音配置全量信息。<br/>从API version 12开始支持此参数。| 4278 4279**示例:** 4280 4281```ts 4282avRecorder.off('audioCapturerChange'); 4283``` 4284 4285### on('photoAssetAvailable')<sup>12+</sup> 4286 4287on(type: 'photoAssetAvailable', callback: Callback\<photoAccessHelper.PhotoAsset>): void 4288 4289订阅媒体资源回调事件,当[FileGenerationMode](#filegenerationmode12)枚举设置为系统创建媒体文件时,会在[stop](#stop9-2)操作结束后把[PhotoAsset](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoasset)对象回调给应用。 4290 4291当用户重复订阅时,以最后一次订阅的回调接口为准。 4292 4293**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4294 4295**参数:** 4296 4297| 参数名 | 类型 | 必填 | 说明 | 4298| -------- | -------- | ---- | ------------------------------------------------------------ | 4299| type | string | 是 |录像资源的回调类型,支持的事件:'photoAssetAvailable'。 | 4300| callback | Callback<[photoAccessHelper.PhotoAsset](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoasset)> | 是 | 系统创建的资源文件对应的PhotoAsset对象| 4301 4302**错误码:** 4303 4304| 错误码ID | 错误信息 | 4305| -------- | ------------------------------------------ | 4306| 5400103 | IO error. Return by callback. | 4307| 5400105 | Service died. Return by callback. | 4308 4309**示例:** 4310 4311```ts 4312import { photoAccessHelper } from '@kit.MediaLibraryKit'; 4313let photoAsset: photoAccessHelper.PhotoAsset; 4314 4315// 例:处理photoAsset回调,保存video 4316async saveVideo(asset: photoAccessHelper.PhotoAsset) { 4317 console.info("saveVideo called"); 4318 try { 4319 let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(getContext(this)); 4320 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 4321 assetChangeRequest.saveCameraPhoto(); 4322 await phAccessHelper.applyChanges(assetChangeRequest); 4323 console.info('apply saveVideo successfully'); 4324 } catch (err) { 4325 console.error(`apply saveVideo failed with error: ${err.code}, ${err.message}`); 4326 } 4327} 4328// 注册photoAsset监听 4329avRecorder.on('photoAssetAvailable', (asset: photoAccessHelper.PhotoAsset) => { 4330 console.info('photoAssetAvailable called'); 4331 if (asset != undefined) { 4332 photoAsset = asset; 4333 // 处理photoAsset回调 4334 // 例: this.saveVideo(asset); 4335 } else { 4336 console.error('photoAsset is undefined'); 4337 } 4338}); 4339``` 4340 4341### off('photoAssetAvailable')<sup>12+</sup> 4342 4343off(type: 'photoAssetAvailable', callback?: Callback<photoAccessHelper.PhotoAsset>): void 4344 4345取消订阅媒体资源的回调类型。 4346 4347**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4348 4349**参数:** 4350 4351| 参数名 | 类型 | 必填 | 说明 | 4352| ------ | ------ | ---- | ------------------------------------------------------------ | 4353| type | string | 是 | 录音配置变化的回调类型,支持的事件:'photoAssetAvailable'。 | 4354 4355**示例:** 4356 4357```ts 4358avRecorder.off('photoAssetAvailable'); 4359``` 4360 4361## AVRecorderState<sup>9+</sup> 4362 4363type AVRecorderState = 'idle' | 'prepared' | 'started' | 'paused' | 'stopped' | 'released' | 'error' 4364 4365音视频录制的状态机。可通过state属性获取当前状态。 4366 4367**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 4368 4369**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4370 4371| 类型 | 说明 | 4372| -------- | ------------------------------------------------------------ | 4373| 'idle' | 闲置状态。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,进入prepared状态。AVRecorder刚被创建,或者在任何非released状态下调用[AVRecorder.reset()](#reset9-2)方法,均进入idle状态。 | 4374| 'prepared' | 参数设置完成。此时可以调用[AVRecorder.start()](#start9)方法开始录制,进入started状态。 | 4375| 'started' | 正在录制。此时可以调用[AVRecorder.pause()](#pause9-2)方法暂停录制,进入paused状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 | 4376| 'paused' | 录制暂停。此时可以调用[AVRecorder.resume()](#resume9)方法继续录制,进入started状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 | 4377| 'stopped' | 录制停止。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,重新进入prepared状态。 | 4378| 'released' | 录制资源释放。此时不能再进行任何操作。在任何其他状态下,均可以通过调用[AVRecorder.release()](#release9-2)方法进入released状态。 | 4379| 'error' | 错误状态。当AVRecorder实例发生不可逆错误,会转换至当前状态。切换至error状态时会伴随[AVRecorder.on('error')事件](#onerror9-1),该事件会上报详细错误原因。在error状态时,用户需要调用[AVRecorder.reset()](#reset9-2)方法重置AVRecorder实例,或者调用[AVRecorder.release()](#release9-2)方法释放资源。 | 4380 4381## OnAVRecorderStateChangeHandler<sup>12+</sup> 4382 4383type OnAVRecorderStateChangeHandler = (state: AVRecorderState, reason: StateChangeReason) => void 4384 4385状态机切换事件回调方法。 4386 4387**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4388 4389**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 4390 4391| 参数名 | 类型 | 必填 | 说明 | 4392| ------ | ------ | ------ | ------------------------------------------------------------ | 4393| state | [AVRecorderState](#avrecorderstate9) | 必填 | 当前播放状态。 | 4394| reason | [StateChangeReason](#statechangereason9) | 必填 | 当前播放状态的切换原因。 | 4395 4396## AVRecorderConfig<sup>9+</sup> 4397 4398表示音视频录制的参数设置。 4399 4400通过audioSourceType和videoSourceType区分纯音频录制、纯视频录制或音视频录制。纯音频录制时,仅需要设置audioSourceType;纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。 4401 4402**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4403 4404| 名称 | 类型 | 必填 | 说明 | 4405| --------------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | 4406| audioSourceType | [AudioSourceType](#audiosourcetype9) | 否 | 选择录制的音频源类型。选择音频录制时必填。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。| 4407| videoSourceType | [VideoSourceType](#videosourcetype9) | 否 | 选择录制的视频源类型。选择视频录制时必填。 | 4408| profile | [AVRecorderProfile](#avrecorderprofile9) | 是 | 录制的profile,必要参数。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。| 4409| url | string | 是 | 录制输出URL:fd://xx (fd number) ,必要参数。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4410|fileGenerationMode<sup>12+</sup> | [FileGenerationMode](#filegenerationmode12) | 否 | 创建媒体文件的模式,配合[on('photoAssetAvailable')](#onphotoassetavailable12)监听使用。| 4411| rotation<sup>(deprecated)</sup> | number | 否 | 录制的视频旋转角度,mp4格式支持0,90,180,270,默认值为0。<br>从API version 6开始支持,从API version 12开始废弃。建议使用[AVMetadata](#avmetadata11).videoOrientation替代。如果同时设置两个值,将会采用[AVMetadata](#avmetadata11).videoOrientation。 | 4412| location<sup>(deprecated)</sup> | [Location](#location) | 否 | 录制的地理位置,默认不记录地理位置信息。<br>从API version 6开始支持,从API version 12开始废弃。建议使用 [AVMetadata](#avmetadata11).location。如果同时设置两个值,将会采用[AVMetadata](#avmetadata11).location。 | 4413| metadata<sup>12+</sup> | [AVMetadata](#avmetadata11) | 否 | 设置元数据信息。详情见 [AVMetadata](#avmetadata11)。 | 4414 4415## AVRecorderProfile<sup>9+</sup> 4416 4417音视频录制的配置文件。 4418 4419**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4420 4421| 名称 | 类型 | 必填 | 说明 | 4422| ---------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | 4423| audioBitrate | number | 否 | 音频编码比特率,选择音频录制时必填。<br>支持范围:<br>- AAC编码格式支持比特率范围[32000 - 500000]。<br>- G711-mulaw编码格式支持比特率范围[64000 - 64000]。<br>- MP3编码格式支持范围[8000, 16000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000]。<br>当使用MP3编码格式时,采样率和比特率的映射关系: <br>- 采样率使用16K以下时,对应比特率范围为[8kbps - 64kbps]。<br>- 采样率使用16K~32K时对应的比特率范围为[8kbps - 160kbps]。<br>- 采样率使用32K以上时对应的比特率范围为[32kbps - 320kbps]。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4424| audioChannels | number | 否 | 音频采集声道数,选择音频录制时必填。<br>- AAC编码格式支持范围[1 - 8]。<br>- G711-mulaw编码格式支持范围[1 - 1]。<br>- MP3编码格式支持范围[1 - 2]。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4425| audioCodec | [CodecMimeType](#codecmimetype8) | 否 | 音频编码格式,选择音频录制时必填。当前支持AUDIO_AAC,AUDIO_MP3,AUDIO_G711MU。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4426| audioSampleRate | number | 否 | 音频采样率,选择音频录制时必填。<br>支持范围:<br>- AAC编码支持采样率范围[8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000]。<br>- G711-mulaw编码支持采样率范围[8000 - 8000]。<br>- MP3编码支持采样率范围[8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000]。<br>可变比特率模式,码率仅作参考。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4427| fileFormat | [ContainerFormatType](#containerformattype8) | 是 | 文件的容器格式,必要参数。当前支持MP4、M4A、MP3、WAV封装格式,不支持在MP4封装格式下使用AUDIO_MP3编码格式。<br>**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。| 4428| videoBitrate | number | 否 | 视频编码比特率,选择视频录制时必填,支持范围[10000 - 100000000]。 | 4429| videoCodec | [CodecMimeType](#codecmimetype8) | 否 | 视频编码格式,选择视频录制时必填。当前支持VIDEO_AVC。| 4430| videoFrameWidth | number | 否 | 视频帧的宽,选择视频录制时必填,支持范围[176 - 4096]。 | 4431| videoFrameHeight | number | 否 | 视频帧的高,选择视频录制时必填,支持范围[144 - 4096]。 | 4432| videoFrameRate | number | 否 | 视频帧率,选择视频录制时必填,支持范围[1 - 60]。 | 4433| isHdr<sup>11+</sup> | boolean | 否 | HDR编码,选择视频录制时选填,isHdr默认为false,对应编码格式没有要求,isHdr为true时,对应的编码格式必须为video/hevc。| 4434| enableTemporalScale<sup>12+</sup> | boolean | 否 | 视频录制是否支持时域分层编码功能,选择视频录制时选填,enableTemporalScale默认为false。设置为true时,编码输出的码流中部分帧可以支持跳过不编码。| 4435 4436## AudioSourceType<sup>9+</sup> 4437 4438表示视频录制中音频源类型的枚举。 4439 4440**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4441 4442| 名称 | 值 | 说明 | 4443| ------------------------- | ---- | ---------------------- | 4444| AUDIO_SOURCE_TYPE_DEFAULT | 0 | 默认的音频输入源类型。 | 4445| AUDIO_SOURCE_TYPE_MIC | 1 | 表示MIC的音频输入源。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4446| AUDIO_SOURCE_TYPE_VOICE_RECOGNITION<sup>12+</sup> | 2 | 表示语音识别场景的音频源。 | 4447| AUDIO_SOURCE_TYPE_VOICE_COMMUNICATION<sup>12+</sup> | 7 | 表示语音通话场景的音频源。 | 4448| AUDIO_SOURCE_TYPE_VOICE_MESSAGE<sup>12+</sup> | 10 | 表示短语音消息的音频源。 | 4449| AUDIO_SOURCE_TYPE_CAMCORDER<sup>12+</sup> | 13 | 表示相机录像的音频源。 | 4450 4451## VideoSourceType<sup>9+</sup> 4452 4453表示视频录制中视频源类型的枚举。 4454 4455**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4456 4457| 名称 | 值 | 说明 | 4458| ----------------------------- | ---- | ------------------------------- | 4459| VIDEO_SOURCE_TYPE_SURFACE_YUV | 0 | 输入surface中携带的是raw data。 | 4460| VIDEO_SOURCE_TYPE_SURFACE_ES | 1 | 输入surface中携带的是ES data。 | 4461 4462## ContainerFormatType<sup>8+</sup> 4463 4464表示容器格式类型的枚举,缩写为CFT。 4465 4466**系统能力:** SystemCapability.Multimedia.Media.Core 4467 4468| 名称 | 值 | 说明 | 4469| ----------- | ----- | --------------------- | 4470| CFT_MPEG_4 | 'mp4' | 视频的容器格式,MP4。 | 4471| CFT_MPEG_4A | 'm4a' | 音频的容器格式,M4A。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4472| CFT_MP3<sup>12+</sup> | 'mp3' | 音频的容器格式,MP3。 | 4473| CFT_WAV<sup>12+</sup> | 'wav' | 音频的容器格式,WAV。 | 4474 4475## Location 4476 4477视频录制的地理位置。 4478 4479**系统能力:** SystemCapability.Multimedia.Media.Core 4480 4481| 名称 | 类型 | 必填 | 说明 | 4482| --------- | ------ | ---- | ---------------- | 4483| latitude | number | 是 | 地理位置的纬度。 | 4484| longitude | number | 是 | 地理位置的经度。 | 4485 4486## EncoderInfo<sup>11+</sup> 4487 4488编码器和规格参数 4489 4490系统能力:SystemCapability.Multimedia.Media.AVRecorder 4491 4492| 名称 | 类型 | 可读 | 可写 | 说明 | 4493| ---------- | -------------------------------- | ---- | ---- | ------------------------------------------------------------ | 4494| mimeType | [CodecMimeType](#codecmimetype8) | 是 | 否 | 编码器MIME类型名称 | 4495| type | string | 是 | 否 | 编码器类型,audio表示音频编码器,video表示视频编码器 | 4496| bitRate | [Range](#range11) | 是 | 否 | 比特率,包含该编码器的最大和最小值 | 4497| frameRate | [Range](#range11) | 是 | 否 | 视频帧率,包含帧率的最大和最小值,仅视频编码器拥有 | 4498| width | [Range](#range11) | 是 | 否 | 视频帧的宽度,包含宽度的最大和最小值,仅视频编码器拥有 | 4499| height | [Range](#range11) | 是 | 否 | 视频帧的高度,包含高度的最大和最小值,仅视频编码器拥有 | 4500| channels | [Range](#range11) | 是 | 否 | 音频采集声道数,包含声道数的最大和最小值,仅音频编码器拥有 | 4501| sampleRate | Array\<number> | 是 | 否 | 音频采样率,包含所有可以使用的音频采样率值,仅音频编码器拥有 | 4502 4503## Range<sup>11+</sup> 4504 4505表示一个类型的范围 4506 4507系统能力:SystemCapability.Multimedia.Media.AVRecorder 4508 4509| 名称 | 类型 | 可读 | 可写 | 说明 | 4510| ---- | ------ | ---- | ---- | ------------ | 4511| min | number | 是 | 否 | 范围的最小值 | 4512| max | number | 是 | 否 | 范围的最大值 | 4513 4514## FileGenerationMode<sup>12+</sup> 4515 4516表示创建媒体文件模式的枚举。 4517 4518**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4519 4520| 名称 | 值 | 说明 | 4521| ----------------------------- | ---- | ------------------------------- | 4522| APP_CREATE | 0 | 由应用自行在沙箱创建媒体文件。 | 4523| AUTO_CREATE_CAMERA_SCENE | 1 | 由系统创建媒体文件,当前仅在相机录制场景下生效,会忽略应用设置的url。 | 4524 4525## AVTranscoder<sup>12+</sup> 4526 4527视频转码管理类,用于视频转码。在调用AVTranscoder的方法前,需要先通过createAVTranscoder()构建一个AVTranscoder实例。 4528 4529视频转码demo可参考:[视频转码开发指导](../../media/media/using-avtranscoder-for-transcodering.md) 4530 4531### 属性 4532 4533**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4534 4535| 名称 | 类型 | 只读 | 可选 | 说明 | 4536| ------- | ------------------------------------ | ---- | ---- | ------------------ | 4537| fdSrc<sup>12+</sup> | [AVFileDescriptor](#avfiledescriptor9) | 否 | 否 | 源媒体文件描述,通过该属性设置数据源。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。 | 4538| fdDst<sup>12+</sup> | number | 否 | 否 | 目标媒体文件描述,通过该属性设置数据输出。在创建AVTranscoder实例后,必须设置fdSrc和fdDst属性。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。 | 4539 4540### prepare<sup>12+</sup> 4541 4542prepare(config: AVTranscoderConfig): Promise\<void> 4543 4544异步方式进行视频转码的参数设置。通过Promise获取返回值。 4545 4546**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4547 4548**参数:** 4549 4550| 参数名 | 类型 | 必填 | 说明 | 4551| ------ | -------------------------------------- | ---- | -------------------------- | 4552| config | [AVTranscoderConfig](#avtranscoderconfig12) | 是 | 配置视频转码的相关参数。 | 4553 4554**返回值:** 4555 4556| 类型 | 说明 | 4557| -------------- | ------------------------------------------ | 4558| Promise\<void> | 异步视频转码prepare方法的Promise返回值。 | 4559 4560**错误码:** 4561 4562以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4563 4564| 错误码ID | 错误信息 | 4565| -------- | -------------------------------------- | 4566| 401 | The parameter check failed. Return by promise. | 4567| 5400102 | Operation not allowed. Return by promise. | 4568| 5400105 | Service died. Return by promise. | 4569| 5400106 | Unsupported format. Returned by promise. | 4570 4571**示例:** 4572 4573```ts 4574import { BusinessError } from '@kit.BasicServicesKit'; 4575 4576// 配置参数以实际硬件设备支持的范围为准 4577let avTranscoderConfig: media.AVTranscoderConfig = { 4578 audioBitrate : 200000, 4579 audioCodec : media.CodecMimeType.AUDIO_AAC, 4580 fileFormat : media.ContainerFormatType.CFT_MPEG_4, 4581 videoBitrate : 3000000, 4582 videoCodec : media.CodecMimeType.VIDEO_AVC, 4583 videoFrameWidth : 1280, 4584 videoFrameHeight : 720, 4585} 4586 4587avTranscoder.prepare(avTranscoderConfig).then(() => { 4588 console.info('prepare success'); 4589}).catch((err: BusinessError) => { 4590 console.error('prepare failed and catch error is ' + err.message); 4591}); 4592``` 4593 4594### start<sup>12+</sup> 4595 4596start(): Promise\<void> 4597 4598异步方式开始视频转码。通过Promise获取返回值。 4599 4600需要[prepare()](#prepare12)事件成功触发后,才能调用start方法。 4601 4602**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4603 4604**返回值:** 4605 4606| 类型 | 说明 | 4607| -------------- | ------------------------------------- | 4608| Promise\<void> | 异步开始视频转码方法的Promise返回值。 | 4609 4610**错误码:** 4611 4612以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4613 4614| 错误码ID | 错误信息 | 4615| -------- | -------------------------------------- | 4616| 5400102 | Operation not allowed. Return by promise. | 4617| 5400103 | IO error. Return by promise. | 4618| 5400105 | Service died. Return by promise. | 4619 4620**示例:** 4621 4622```ts 4623import { BusinessError } from '@kit.BasicServicesKit'; 4624 4625avTranscoder.start().then(() => { 4626 console.info('start AVTranscoder success'); 4627}).catch((err: BusinessError) => { 4628 console.error('start AVTranscoder failed and catch error is ' + err.message); 4629}); 4630``` 4631 4632### pause<sup>12+</sup> 4633 4634pause(): Promise\<void> 4635 4636异步方式暂停视频转码。通过Promise获取返回值。 4637 4638需要[start()](#start12)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume12)接口来恢复转码。 4639 4640**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4641 4642**返回值:** 4643 4644| 类型 | 说明 | 4645| -------------- | ------------------------------------- | 4646| Promise\<void> | 异步暂停视频转码方法的Promise返回值。 | 4647 4648**错误码:** 4649 4650以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4651 4652| 错误码ID | 错误信息 | 4653| -------- | -------------------------------------- | 4654| 5400102 | Operation not allowed. Return by promise. | 4655| 5400103 | IO error. Return by promise. | 4656| 5400105 | Service died. Return by promise. | 4657 4658**示例:** 4659 4660```ts 4661import { BusinessError } from '@kit.BasicServicesKit'; 4662 4663avTranscoder.pause().then(() => { 4664 console.info('pause AVTranscoder success'); 4665}).catch((err: BusinessError) => { 4666 console.error('pause AVTranscoder failed and catch error is ' + err.message); 4667}); 4668``` 4669 4670### resume<sup>12+</sup> 4671 4672resume(): Promise\<void> 4673 4674异步方式恢复视频转码。通过Promise获取返回值。 4675 4676需要在[pause()](#pause12)事件成功触发后,才能调用resume方法。 4677 4678**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4679 4680**返回值:** 4681 4682| 类型 | 说明 | 4683| -------------- | ------------------------------------- | 4684| Promise\<void> | 异步恢复视频转码方法的Promise返回值。 | 4685 4686**错误码:** 4687 4688以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4689 4690| 错误码ID | 错误信息 | 4691| -------- | -------------------------------------- | 4692| 5400102 | Operation not allowed. Return by promise. | 4693| 5400103 | IO error. Return by promise. | 4694| 5400105 | Service died. Return by promise. | 4695 4696**示例:** 4697 4698```ts 4699import { BusinessError } from '@kit.BasicServicesKit'; 4700 4701avTranscoder.resume().then(() => { 4702 console.info('resume AVTranscoder success'); 4703}).catch((err: BusinessError) => { 4704 console.error('resume AVTranscoder failed and catch error is ' + err.message); 4705}); 4706``` 4707 4708### cancel<sup>12+</sup> 4709 4710cancel(): Promise\<void> 4711 4712异步方式取消视频转码。通过Promise获取返回值。 4713 4714需要在[prepare()](#prepare12)、[start()](#start12)、[pause()](#pause12)或[resume()](#resume12)事件成功触发后,才能调用cancel方法。 4715 4716**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4717 4718**返回值:** 4719 4720| 类型 | 说明 | 4721| -------------- | ------------------------------------- | 4722| Promise\<void> | 异步取消视频转码方法的Promise返回值。 | 4723 4724**错误码:** 4725 4726以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4727 4728| 错误码ID | 错误信息 | 4729| -------- | -------------------------------------- | 4730| 5400102 | Operation not allowed. Return by promise. | 4731| 5400103 | IO error. Return by promise. | 4732| 5400105 | Service died. Return by promise. | 4733 4734**示例:** 4735 4736```ts 4737import { BusinessError } from '@kit.BasicServicesKit'; 4738 4739avTranscoder.cancel().then(() => { 4740 console.info('cancel AVTranscoder success'); 4741}).catch((err: BusinessError) => { 4742 console.error('cancel AVTranscoder failed and catch error is ' + err.message); 4743}); 4744``` 4745 4746### release<sup>12+</sup> 4747 4748release(): Promise\<void> 4749 4750异步方式释放视频转码资源。通过Promise获取返回值。 4751 4752释放视频转码资源之后,该AVTranscoder实例不能再进行任何操作。 4753 4754**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4755 4756**返回值:** 4757 4758| 类型 | 说明 | 4759| -------------- | ------------------------------------------- | 4760| Promise\<void> | 异步释放视频转码资源方法的Promise返回值。 | 4761 4762**错误码:** 4763 4764以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4765 4766| 错误码ID | 错误信息 | 4767| -------- | --------------------------------- | 4768| 5400102 | Operation not allowed. Return by promise. | 4769| 5400105 | Service died. Return by promise. | 4770 4771**示例:** 4772 4773```ts 4774import { BusinessError } from '@kit.BasicServicesKit'; 4775 4776avTranscoder.release().then(() => { 4777 console.info('release AVTranscoder success'); 4778}).catch((err: BusinessError) => { 4779 console.error('release AVTranscoder failed and catch error is ' + err.message); 4780}); 4781``` 4782 4783### on('progressUpdate')<sup>12+</sup> 4784 4785on(type: 'progressUpdate', callback: Callback\<number>): void 4786 4787注册转码进度更新事件,并通过注册的回调方法通知用户。用户只能注册一个进度更新事件的回调方法,当用户重复注册时,以最后一次注册的回调接口为准。 4788 4789**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4790 4791**参数:** 4792 4793| 参数名 | 类型 | 必填 | 说明 | 4794| -------- | -------- | ---- | ------------------------------------------------------------ | 4795| type | string | 是 | 进度更新事件回调类型,支持的事件:'progressUpdate',在转码过程中系统会自动触发此事件。 | 4796| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 是 | 进度更新事件回调方法,progress: number,表示当前转码进度 | 4797 4798**示例:** 4799 4800```ts 4801avTranscoder.on('progressUpdate', (progress: number) => { 4802 console.info('avTranscoder progressUpdate = ' + progress); 4803}); 4804``` 4805 4806### off('progressUpdate')<sup>12+</sup> 4807 4808off(type:'progressUpdate', callback?: Callback\<number>): void 4809 4810取消注册转码进度更新事件。 4811 4812**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4813 4814**参数:** 4815 4816| 参数名 | 类型 | 必填 | 说明 | 4817| ------ | ------ | ---- | ------------------------------------------------------------ | 4818| type | string | 是 | 进度更新事件回调类型,支持的事件:'progressUpdate',用户操作和系统都会触发此事件。 | 4819| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 否 | 已注册的进度更新事件回调。由于当前回调注册时,仅会保留最后一次注册的回调,建议此参数缺省。 | 4820 4821**示例:** 4822 4823```ts 4824avTranscoder.off('progressUpdate'); 4825``` 4826 4827### on('error')<sup>12+</sup> 4828 4829on(type: 'error', callback: ErrorCallback): void 4830 4831注册AVtranscoder的错误事件,该事件仅用于错误提示。如果AVTranscoder上报error事件,用户需要通过[release()](#release12)退出转码操作。 4832 4833用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 4834 4835**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4836 4837**参数:** 4838 4839| 参数名 | 类型 | 必填 | 说明 | 4840| -------- | ------------- | ---- | ------------------------------------------------------------ | 4841| type | string | 是 | 转码错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 4842| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 转码错误事件回调方法。 | 4843 4844**错误码:** 4845 4846以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4847 4848| 错误码ID | 错误信息 | 4849| -------- | ------------------------------------------ | 4850| 401 | The parameter check failed. | 4851| 801 | Capability not supported. | 4852| 5400101 | No memory. | 4853| 5400102 | Operation not allowed. | 4854| 5400103 | I/O error. | 4855| 5400104 | Time out. | 4856| 5400105 | Service died. | 4857| 5400106 | Unsupport format. | 4858 4859**示例:** 4860 4861```ts 4862import { BusinessError } from '@kit.BasicServicesKit'; 4863 4864avTranscoder.on('error', (err: BusinessError) => { 4865 console.info('case avTranscoder.on(error) called, errMessage is ' + err.message); 4866}); 4867``` 4868 4869### off('error')<sup>12+</sup> 4870 4871off(type:'error', callback?: ErrorCallback): void 4872 4873取消注册转码错误事件,取消后不再接收到AVTranscoder的错误事件。 4874 4875**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4876 4877**参数:** 4878 4879| 参数名 | 类型 | 必填 | 说明 | 4880| ------ | ------ | ---- | ------------------------------------------------------------ | 4881| type | string | 是 | 转码错误事件回调类型'error'。 <br>- 'error':转码过程中发生错误,触发该事件。 | 4882| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 错误事件回调方法 | 4883 4884**示例:** 4885 4886```ts 4887avTranscoder.off('error'); 4888``` 4889 4890### on('complete')<sup>12+</sup> 4891 4892on(type: 'complete', callback: Callback\<void>): void 4893 4894注册转码完成事件,并通过注册的回调方法通知用户。用户只能注册一个进度更新事件的回调方法,当用户重复注册时,以最后一次注册的回调接口为准。 4895 4896当AVTranscoder上报complete事件时,当前转码操作已完成,用户可通过[release()](#release12)退出转码操作。 4897 4898**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4899 4900**参数:** 4901 4902| 参数名 | 类型 | 必填 | 说明 | 4903| -------- | -------- | ---- | ------------------------------------------------------------ | 4904| type | string | 是 | 完成事件回调类型,支持的事件:'complete',在转码过程中系统会自动触发此事件。 | 4905| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 是 | 完成事件回调方法 | 4906 4907**示例:** 4908 4909```ts 4910avTranscoder.on('complete', () => { 4911 console.info('avTranscoder complete'); 4912}); 4913``` 4914 4915### off('complete')<sup>12+</sup> 4916 4917off(type:'complete', callback?: Callback\<void>): void 4918 4919取消注册转码完成事件。 4920 4921**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4922 4923**参数:** 4924 4925| 参数名 | 类型 | 必填 | 说明 | 4926| ------ | ------ | ---- | ------------------------------------------------------------ | 4927| type | string | 是 | 转码完成事件回调类型,支持的事件:'complete',用户操作和系统都会触发此事件。 | 4928| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 否 | 完成事件回调方法 | 4929 4930**示例:** 4931 4932```ts 4933avTranscoder.off('complete'); 4934``` 4935 4936## AVTranscoderConfig<sup>12+</sup> 4937 4938表示视频转码的参数设置。 4939 4940**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4941 4942| 名称 | 类型 | 只读 | 可选 | 说明 | 4943| --------------- | ---------------------------------------- |---- | ---- | ------------------------------------------------------------ | 4944| audioBitrate | number | 否 | 是 | 输出音频的码率,单位为比特率(bps)。用户不设置,则默认设置为48Kbps| 4945| audioCodec | [CodecMimeType](#codecmimetype8) | 否 | 是 | 输出音频的编码格式,当前仅支持AAC。 | 4946| fileFormat | [ContainerFormatType](#containerformattype8) | 否 | 否 | 输出视频文件的封装格式,当前视频文件仅支持MP4。| 4947| videoBitrate | number | 否 | 是 | 输出视频的码率,单位为比特率(bps)。用户不设置,则默认码率按输出视频的分辨率设置,[240p,480P]默认码率值为1Mbps,(480P,720P]默认码率值为2Mbps,(720P,1080P]默认码率值为4Mbps,1080P及以上默认值为8Mbps。| 4948| videoCodec | [CodecMimeType](#codecmimetype8) | 否 | 是 | 输出视频的编码格式,当前仅支持AVC和HEVC。| 4949| videoFrameWidth | number | 否 | 是 | 输出视频帧的宽,单位为像素(px)。用户不设置,则默认设置为源视频帧的宽| 4950| videoFrameHeight | number | 否 | 是 | 输出视频帧的高,单位为像素(px)。用户不设置,则默认设置为源视频帧的高| 4951 4952 4953 4954## AVMetadataExtractor<sup>11+</sup> 4955 4956元数据获取类,用于从媒体资源中获取元数据。在调用AVMetadataExtractor的方法前,需要先通过[createAVMetadataExtractor()](#mediacreateavmetadataextractor11)构建一个AVMetadataExtractor实例。 4957 4958获取音频或视频元数据的demo可参考:[获取音视频元数据开发指导](../../media/media/avmetadataextractor.md)。 4959 4960### 属性 4961 4962**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 4963 4964| 名称 | 类型 | 可读 | 可写 | 说明 | 4965| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 4966| fdSrc<sup>11+</sup> | [AVFileDescriptor](#avfiledescriptor9) | 是 | 是 | 媒体文件描述,通过该属性设置数据源。在获取元数据之前,必须设置数据源属性,只能设置fdSrc和dataSrc的其中一个。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVMetadataExtractor 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致音视频元数据获取异常。 | 4967| dataSrc<sup>11+</sup> | [AVDataSrcDescriptor](#avdatasrcdescriptor10) | 是 | 是 | 流式媒体资源描述,通过该属性设置数据源。在获取元数据之前,必须设置数据源属性,只能设置fdSrc和dataSrc的其中一个。<br/> 当应用从远端获取音视频媒体文件,在应用未下载完整音视频资源时,可以设置dataSrc提前获取该资源的元数据。| 4968 4969### fetchMetadata<sup>11+</sup> 4970 4971fetchMetadata(callback: AsyncCallback\<AVMetadata>): void 4972 4973异步方式获取媒体元数据。通过注册回调函数获取返回值。 4974 4975**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 4976 4977**参数:** 4978 4979| 参数名 | 类型 | 必填 | 说明 | 4980| -------- | -------------------------------------------- | ---- | ----------------------------------- | 4981| callback | AsyncCallback\<[AVMetadata](#avmetadata11)> | 是 | 回调函数。异步返回音视频元数据对象(AVMetadata)。| 4982 4983**错误码:** 4984 4985以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 4986 4987| 错误码ID | 错误信息 | 4988| -------- | ------------------------------------------ | 4989| 5400102 | Operation not allowed. Returned by callback. | 4990| 5400106 | Unsupported format. Returned by callback. | 4991 4992**示例:** 4993 4994```ts 4995import { BusinessError } from '@kit.BasicServicesKit'; 4996 4997avMetadataExtractor.fetchMetadata((error: BusinessError, metadata: media.AVMetadata) => { 4998 if (error) { 4999 console.error(`Failed to fetch Metadata, err = ${JSON.stringify(error)}`); 5000 return; 5001 } 5002 console.info(`Succeeded in fetching Metadata, genre: ${metadata.genre}`); 5003}); 5004``` 5005 5006### fetchMetadata<sup>11+</sup> 5007 5008fetchMetadata(): Promise\<AVMetadata> 5009 5010异步方式获取媒体元数据。通过Promise获取返回值。 5011 5012**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5013 5014**返回值:** 5015 5016| 类型 | 说明 | 5017| -------------- | ---------------------------------------- | 5018| Promise\<[AVMetadata](#avmetadata11)> | Promise对象。异步返回音视频元数据对象(AVMetadata)。 | 5019 5020**错误码:** 5021 5022以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5023 5024| 错误码ID | 错误信息 | 5025| -------- | ----------------------------------------- | 5026| 5400102 | Operation not allowed. Returned by promise. | 5027| 5400106 | Unsupported format. Returned by promise. | 5028 5029**示例:** 5030 5031```ts 5032import { BusinessError } from '@kit.BasicServicesKit'; 5033 5034avMetadataExtractor.fetchMetadata().then((metadata: media.AVMetadata) => { 5035 console.info(`Succeeded in fetching Metadata, genre: ${metadata.genre}`) 5036}).catch((error: BusinessError) => { 5037 console.error(`Failed to fetch Metadata, error message:${error.message}`); 5038}); 5039``` 5040 5041### fetchAlbumCover<sup>11+</sup> 5042 5043fetchAlbumCover(callback: AsyncCallback\<image.PixelMap>): void 5044 5045异步方式获取音频专辑封面。通过注册回调函数获取返回值。 5046 5047**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5048 5049**参数:** 5050 5051| 参数名 | 类型 | 必填 | 说明 | 5052| -------- | -------------------------------------------- | ---- | ----------------------------------- | 5053| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | 是 | 回调函数。异步返回专辑封面。 | 5054 5055**错误码:** 5056 5057以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5058 5059| 错误码ID | 错误信息 | 5060| -------- | ------------------------------------------ | 5061| 5400102 | Operation not allowed. Return by callback. | 5062| 5400106 | Unsupported format. Returned by callback. | 5063 5064**示例:** 5065 5066```ts 5067import { BusinessError } from '@kit.BasicServicesKit'; 5068import { image } from '@kit.ImageKit'; 5069 5070let pixel_map : image.PixelMap | undefined = undefined; 5071 5072avMetadataExtractor.fetchAlbumCover((error: BusinessError, pixelMap: image.PixelMap) => { 5073 if (error) { 5074 console.error(`Failed to fetch AlbumCover, error = ${JSON.stringify(error)}`); 5075 return; 5076 } 5077 pixel_map = pixelMap; 5078}); 5079``` 5080 5081### fetchAlbumCover<sup>11+</sup> 5082 5083fetchAlbumCover(): Promise\<image.PixelMap> 5084 5085异步方式获取专辑封面。通过Promise获取返回值。 5086 5087**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5088 5089**返回值:** 5090 5091| 类型 | 说明 | 5092| -------------- | ---------------------------------------- | 5093| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise对象。异步返回专辑封面。 | 5094 5095**错误码:** 5096 5097以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5098 5099| 错误码ID | 错误信息 | 5100| -------- | ----------------------------------------- | 5101| 5400102 | Operation not allowed. Returned by promise. | 5102| 5400106 | Unsupported format. Returned by promise. | 5103 5104**示例:** 5105 5106```ts 5107import { BusinessError } from '@kit.BasicServicesKit'; 5108import { image } from '@kit.ImageKit'; 5109 5110let pixel_map : image.PixelMap | undefined = undefined; 5111 5112avMetadataExtractor.fetchAlbumCover().then((pixelMap: image.PixelMap) => { 5113 pixel_map = pixelMap; 5114}).catch((error: BusinessError) => { 5115 console.error(`Failed to fetch AlbumCover, error message:${error.message}`); 5116}); 5117``` 5118 5119### release<sup>11+</sup> 5120 5121release(callback: AsyncCallback\<void>): void 5122 5123异步方式释放资源。通过注册回调函数获取返回值。 5124 5125**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5126 5127**参数:** 5128 5129| 参数名 | 类型 | 必填 | 说明 | 5130| -------- | -------------------------------------------- | ---- | ----------------------------------- | 5131| callback | AsyncCallback\<void> | 是 |回调函数。当释放资源成功,err为undefined,否则为错误对象。 | 5132 5133**错误码:** 5134 5135以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5136 5137| 错误码ID | 错误信息 | 5138| -------- | ------------------------------------------ | 5139| 5400102 | Operation not allowed. Returned by callback. | 5140 5141**示例:** 5142 5143```ts 5144import { BusinessError } from '@kit.BasicServicesKit'; 5145 5146avMetadataExtractor.release((error: BusinessError) => { 5147 if (error) { 5148 console.error(`Failed to release, err = ${JSON.stringify(error)}`); 5149 return; 5150 } 5151 console.info(`Succeeded in releasing.`); 5152}); 5153``` 5154 5155### release<sup>11+</sup> 5156 5157release(): Promise\<void> 5158 5159异步方式释放资源。通过Promise获取返回值。 5160 5161**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5162 5163**返回值:** 5164 5165| 类型 | 说明 | 5166| -------------- | ---------------------------------------- | 5167| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 | 5168 5169**错误码:** 5170 5171以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5172 5173| 错误码ID | 错误信息 | 5174| -------- | ----------------------------------------- | 5175| 5400102 | Operation not allowed. Returned by promise. | 5176 5177**示例:** 5178 5179```ts 5180import { BusinessError } from '@kit.BasicServicesKit'; 5181 5182avMetadataExtractor.release().then(() => { 5183 console.info(`Succeeded in releasing.`); 5184}).catch((error: BusinessError) => { 5185 console.error(`Failed to release, error message:${error.message}`); 5186}); 5187``` 5188 5189## AVMetadata<sup>11+</sup> 5190 5191音视频元数据,包含各个元数据字段。在[AVRecorderConfig](#avrecorderconfig9)中使用时未声明为当前版本只读的参数可以作为使用[AVRecorder](#avrecorder9)录制时的入参。 5192 5193**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5194 5195| 名称 | 类型 | 必填 | 说明 | 5196| ------ | ------ | ---- | ------------------------------------------------------------ | 5197| album | string | 否 | 专辑的标题。当前版本为只读参数。 | 5198| albumArtist | string | 否 | 专辑的艺术家。当前版本为只读参数。 | 5199| artist | string | 否 | 媒体资源的艺术家。当前版本为只读参数。 | 5200| author | string | 否 | 媒体资源的作者。当前版本为只读参数。 | 5201| dateTime | string | 否 | 媒体资源的创建时间。当前版本为只读参数。 | 5202| dateTimeFormat | string | 否 | 媒体资源的创建时间,按YYYY-MM-DD HH:mm:ss格式输出。当前版本为只读参数。 | 5203| composer | string | 否 | 媒体资源的作曲家。当前版本为只读参数。 | 5204| duration | string | 否 | 媒体资源的时长。当前版本为只读参数。 | 5205| genre | string | 否 | 媒体资源的类型或体裁。| 5206| hasAudio | string | 否 | 媒体资源是否包含音频。当前版本为只读参数。 | 5207| hasVideo | string | 否 | 媒体资源是否包含视频。当前版本为只读参数。 | 5208| mimeType | string | 否 | 媒体资源的mime类型。当前版本为只读参数。 | 5209| trackCount | string | 否 | 媒体资源的轨道数量。当前版本为只读参数。 | 5210| sampleRate | string | 否 | 音频的采样率,单位为赫兹(Hz)。当前版本为只读参数。 | 5211| title | string | 否 | 媒体资源的标题。当前版本为只读参数。当前版本为只读参数。 | 5212| videoHeight | string | 否 | 视频的高度,单位为像素。当前版本为只读参数。 | 5213| videoWidth | string | 否 | 视频的宽度,单位为像素。当前版本为只读参数。 | 5214| videoOrientation | string | 否 | 视频的旋转方向,单位为度(°)。| 5215| hdrType<sup>12+</sup> | [HdrType](#hdrtype12) | 否 | 媒体资源的HDR类型。当前版本为只读参数。 | 5216| location<sup>12+</sup> | [Location](#location) | 否 | 视频的地理位置信息。 | 5217| customInfo<sup>12+</sup> | Record<string, string> | 否 | 从moov.meta.list 获取的自定义参数键值映射。| 5218 5219## HdrType<sup>12+</sup> 5220 5221表示视频HDR类型的枚举。 5222 5223**系统能力:** SystemCapability.Multimedia.Media.Core 5224 5225| 名称 | 值 | 说明 | 5226| ------------------------- | ---- | ---------------------- | 5227| AV_HDR_TYPE_NONE | 0 | 表示无HDR类型。 | 5228| AV_HDR_TYPE_VIVID | 1 | 表示为HDR VIVID类型。 | 5229 5230## media.createAudioPlayer<sup>(deprecated)</sup> 5231 5232createAudioPlayer(): AudioPlayer 5233 5234同步方式创建音频播放实例。 5235 5236> **说明:** 5237> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。 5238 5239**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5240 5241**返回值:** 5242 5243| 类型 | 说明 | 5244| --------------------------- | ------------------------------------------------------------ | 5245| [AudioPlayer](#audioplayerdeprecated) | 返回AudioPlayer类实例,失败时返回null。可用于音频播放、暂停、停止等操作。 | 5246 5247**示例:** 5248 5249```ts 5250let audioPlayer: media.AudioPlayer = media.createAudioPlayer(); 5251``` 5252 5253## media.createVideoPlayer<sup>(deprecated)</sup> 5254 5255createVideoPlayer(callback: AsyncCallback\<VideoPlayer>): void 5256 5257异步方式创建视频播放实例,通过注册回调函数获取返回值。 5258 5259> **说明:** 5260> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。 5261 5262**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5263 5264**参数:** 5265 5266| 参数名 | 类型 | 必填 | 说明 | 5267| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ | 5268| callback | AsyncCallback<[VideoPlayer](#videoplayerdeprecated)> | 是 | 回调函数。创建VideoPlayer实例成功时,err为undefined,data为获取到的VideoPlayer实例,否则为错误对象。 | 5269 5270**示例:** 5271 5272```ts 5273import { BusinessError } from '@kit.BasicServicesKit'; 5274 5275let videoPlayer: media.VideoPlayer; 5276media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 5277 if (video != null) { 5278 videoPlayer = video; 5279 console.info('Succeeded in creating VideoPlayer'); 5280 } else { 5281 console.error(`Failed to create VideoPlayer, error:${error}`); 5282 } 5283}); 5284``` 5285 5286## media.createVideoPlayer<sup>(deprecated)</sup> 5287 5288createVideoPlayer(): Promise\<VideoPlayer> 5289 5290异步方式创建视频播放实例,通过Promise获取返回值。 5291 5292> **说明:** 5293> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9-1)替代。 5294 5295**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5296 5297**返回值:** 5298 5299| 类型 | 说明 | 5300| ------------------------------------ | ------------------------------------------------------------ | 5301| Promise<[VideoPlayer](#videoplayerdeprecated)> | Promise对象。异步返回VideoPlayer实例,失败时返回null。可用于管理和播放视频媒体。 | 5302 5303**示例:** 5304 5305```ts 5306import { BusinessError } from '@kit.BasicServicesKit'; 5307 5308let videoPlayer: media.VideoPlayer; 5309media.createVideoPlayer().then((video: media.VideoPlayer) => { 5310 if (video != null) { 5311 videoPlayer = video; 5312 console.info('Succeeded in creating VideoPlayer'); 5313 } else { 5314 console.error('Failed to create VideoPlayer'); 5315 } 5316}).catch((error: BusinessError) => { 5317 console.error(`Failed to create VideoPlayer, error:${error}`); 5318}); 5319``` 5320 5321## media.createAudioRecorder<sup>(deprecated)</sup> 5322 5323createAudioRecorder(): AudioRecorder 5324 5325创建音频录制的实例来控制音频的录制。 5326一台设备只允许创建一个录制实例。 5327 5328> **说明:** 5329> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVRecorder](#mediacreateavrecorder9)替代。 5330 5331**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 5332 5333**返回值:** 5334 5335| 类型 | 说明 | 5336| ------------------------------- | ------------------------------------------------------------ | 5337| [AudioRecorder](#audiorecorderdeprecated) | 返回AudioRecorder类实例,失败时返回null。可用于录制音频媒体。 | 5338 5339**示例:** 5340 5341```ts 5342let audioRecorder: media.AudioRecorder = media.createAudioRecorder(); 5343``` 5344 5345## MediaErrorCode<sup>(deprecated)</sup> 5346 5347媒体服务错误类型枚举。 5348 5349> **说明:** 5350> 从API version 8开始支持,从API version 11开始废弃,建议使用[媒体错误码](#averrorcode9)替代。 5351 5352**系统能力:** SystemCapability.Multimedia.Media.Core 5353 5354| 名称 | 值 | 说明 | 5355| -------------------------- | ---- | -------------------------------------- | 5356| MSERR_OK | 0 | 表示操作成功。 | 5357| MSERR_NO_MEMORY | 1 | 表示申请内存失败,系统可能无可用内存。 | 5358| MSERR_OPERATION_NOT_PERMIT | 2 | 表示无权限执行此操作。 | 5359| MSERR_INVALID_VAL | 3 | 表示传入入参无效。 | 5360| MSERR_IO | 4 | 表示发生IO错误。 | 5361| MSERR_TIMEOUT | 5 | 表示操作超时。 | 5362| MSERR_UNKNOWN | 6 | 表示未知错误。 | 5363| MSERR_SERVICE_DIED | 7 | 表示服务端失效。 | 5364| MSERR_INVALID_STATE | 8 | 表示在当前状态下,不允许执行此操作。 | 5365| MSERR_UNSUPPORTED | 9 | 表示在当前版本下,不支持此操作。 | 5366 5367## AudioPlayer<sup>(deprecated)</sup> 5368 5369> **说明:** 5370> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。 5371 5372音频播放管理类,用于管理和播放音频媒体。在调用AudioPlayer的方法前,需要先通过[createAudioPlayer()](#mediacreateaudioplayerdeprecated)构建一个AudioPlayer实例。 5373 5374### 属性<sup>(deprecated)</sup> 5375 5376**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5377 5378| 名称 | 类型 | 只读 | 可选 | 说明 | 5379| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 5380| src | string | 否 | 否 | 音频媒体URI,支持当前主流的音频格式(m4a、aac、mp3、ogg、wav、amr)。<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。 | 5381| 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/> | 5382| loop | boolean | 否 | 否 | 音频循环播放属性,设置为'true'表示循环播放。 | 5383| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 是 | 是 | 音频焦点模型。 | 5384| currentTime | number | 是 | 否 | 音频的当前播放位置,单位为毫秒(ms)。 | 5385| duration | number | 是 | 否 | 音频时长,单位为毫秒(ms)。 | 5386| state | [AudioState](#audiostatedeprecated) | 是 | 否 | 可以查询音频播放的状态,该状态不可作为调用play/pause/stop等状态切换的触发条件。 | 5387 5388### play<sup>(deprecated)</sup> 5389 5390play(): void 5391 5392开始播放音频资源,需在'dataLoad'事件成功触发后,才能调用。 5393 5394> **说明:** 5395> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。 5396 5397**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5398 5399**示例:** 5400 5401```ts 5402audioPlayer.on('play', () => { //设置'play'事件回调 5403 console.info('audio play called'); 5404}); 5405audioPlayer.play(); 5406``` 5407 5408### pause<sup>(deprecated)</sup> 5409 5410pause(): void 5411 5412暂停播放音频资源。 5413 5414> **说明:** 5415> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。 5416 5417**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5418 5419**示例:** 5420 5421```ts 5422audioPlayer.on('pause', () => { //设置'pause'事件回调 5423 console.info('audio pause called'); 5424}); 5425audioPlayer.pause(); 5426``` 5427 5428### stop<sup>(deprecated)</sup> 5429 5430stop(): void 5431 5432停止播放音频资源。 5433 5434> **说明:** 5435> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。 5436 5437**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5438 5439**示例:** 5440 5441```ts 5442audioPlayer.on('stop', () => { //设置'stop'事件回调 5443 console.info('audio stop called'); 5444}); 5445audioPlayer.stop(); 5446``` 5447 5448### reset<sup>(deprecated)</sup> 5449 5450reset(): void 5451 5452重置播放音频资源。 5453 5454> **说明:** 5455> 从API version 7开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。 5456 5457**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5458 5459**示例:** 5460 5461```ts 5462audioPlayer.on('reset', () => { //设置'reset'事件回调 5463 console.info('audio reset called'); 5464}); 5465audioPlayer.reset(); 5466``` 5467 5468### seek<sup>(deprecated)</sup> 5469 5470seek(timeMs: number): void 5471 5472跳转到指定播放位置。 5473 5474> **说明:** 5475> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 5476 5477**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5478 5479**参数:** 5480 5481| 参数名 | 类型 | 必填 | 说明 | 5482| ------ | ------ | ---- | ----------------------------------------------------------- | 5483| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围[0, duration]。 | 5484 5485**示例:** 5486 5487```ts 5488audioPlayer.on('timeUpdate', (seekDoneTime: number) => { //设置'timeUpdate'事件回调 5489 if (seekDoneTime == null) { 5490 console.error('Failed to seek'); 5491 return; 5492 } 5493 console.info('Succeeded in seek. seekDoneTime: ' + seekDoneTime); 5494}); 5495audioPlayer.seek(30000); //seek到30000ms的位置 5496``` 5497 5498### setVolume<sup>(deprecated)</sup> 5499 5500setVolume(vol: number): void 5501 5502设置音量。 5503 5504> **说明:** 5505> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。 5506 5507**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5508 5509**参数:** 5510 5511| 参数名 | 类型 | 必填 | 说明 | 5512| ------ | ------ | ---- | ------------------------------------------------------------ | 5513| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 5514 5515**示例:** 5516 5517```ts 5518audioPlayer.on('volumeChange', () => { //设置'volumeChange'事件回调 5519 console.info('audio volumeChange called'); 5520}); 5521audioPlayer.setVolume(1); //设置音量到100% 5522``` 5523 5524### release<sup>(deprecated)</sup> 5525 5526release(): void 5527 5528释放音频资源。 5529 5530> **说明:** 5531> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。 5532 5533**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5534 5535**示例:** 5536 5537```ts 5538audioPlayer.release(); 5539audioPlayer = undefined; 5540``` 5541 5542### getTrackDescription<sup>(deprecated)</sup> 5543 5544getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void 5545 5546获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。通过回调函数获取返回值。 5547 5548> **说明:** 5549> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。 5550 5551**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5552 5553**参数:** 5554 5555| 参数名 | 类型 | 必填 | 说明 | 5556| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ | 5557| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是 | 回调函数。获取音频轨道信息成功时,err为undefined,data为获取到的MediaDescription数组,否则为错误对象。 | 5558 5559**示例:** 5560 5561```ts 5562import { BusinessError } from '@kit.BasicServicesKit'; 5563 5564audioPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 5565 if (arrList != null) { 5566 console.info('Succeeded in getting TrackDescription'); 5567 } else { 5568 console.error(`Failed to get TrackDescription, error:${error}`); 5569 } 5570}); 5571``` 5572 5573### getTrackDescription<sup>(deprecated)</sup> 5574 5575getTrackDescription(): Promise\<Array\<MediaDescription>> 5576 5577获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。通过Promise获取返回值。 5578 5579> **说明:** 5580> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。 5581 5582**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5583 5584**返回值:** 5585 5586| 类型 | 说明 | 5587| ------------------------------------------------------ | ----------------------------------------------- | 5588| Promise<Array<[MediaDescription](#mediadescription8)>> | 音频轨道信息MediaDescription数组Promise返回值。 | 5589 5590**示例:** 5591 5592```ts 5593import { BusinessError } from '@kit.BasicServicesKit'; 5594 5595audioPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => { 5596 console.info('Succeeded in getting TrackDescription'); 5597}).catch((error: BusinessError) => { 5598 console.error(`Failed to get TrackDescription, error:${error}`); 5599}); 5600``` 5601 5602### on('bufferingUpdate')<sup>(deprecated)</sup> 5603 5604on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void 5605 5606开始订阅音频缓存更新事件。仅网络播放支持该订阅事件。 5607 5608> **说明:** 5609> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。 5610 5611**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5612 5613**参数:** 5614 5615| 参数名 | 类型 | 必填 | 说明 | 5616| -------- | -------- | ---- | ------------------------------------------------------------ | 5617| type | string | 是 | 音频缓存事件回调类型,支持的事件:'bufferingUpdate'。 | 5618| callback | function | 是 | 音频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)value值固定为0。 | 5619 5620**示例:** 5621 5622```ts 5623audioPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => { 5624 console.info('audio bufferingInfo type: ' + infoType); 5625 console.info('audio bufferingInfo value: ' + value); 5626}); 5627``` 5628 5629### on('play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange')<sup>(deprecated)</sup> 5630 5631on(type: 'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange', callback: () => void): void 5632 5633开始订阅音频播放事件。 5634 5635> **说明:** 5636> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。 5637 5638**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5639 5640**参数:** 5641 5642| 参数名 | 类型 | 必填 | 说明 | 5643| -------- | ---------- | ---- | ------------------------------------------------------------ | 5644| 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)调用,播放音量改变后触发该事件。 | 5645| callback | () => void | 是 | 播放事件回调方法。 | 5646 5647**示例:** 5648 5649```ts 5650import { fileIo as fs } from '@kit.CoreFileKit'; 5651import { BusinessError } from '@kit.BasicServicesKit'; 5652 5653let audioPlayer: media.AudioPlayer = media.createAudioPlayer(); //创建一个音频播放实例 5654audioPlayer.on('dataLoad', () => { //设置'dataLoad'事件回调,src属性设置成功后,触发此回调 5655 console.info('audio set source called'); 5656 audioPlayer.play(); //开始播放,并触发'play'事件回调 5657}); 5658audioPlayer.on('play', () => { //设置'play'事件回调 5659 console.info('audio play called'); 5660 audioPlayer.seek(30000); //调用seek方法,并触发'timeUpdate'事件回调 5661}); 5662audioPlayer.on('pause', () => { //设置'pause'事件回调 5663 console.info('audio pause called'); 5664 audioPlayer.stop(); //停止播放,并触发'stop'事件回调 5665}); 5666audioPlayer.on('reset', () => { //设置'reset'事件回调 5667 console.info('audio reset called'); 5668 audioPlayer.release(); //释放播放实例资源 5669 audioPlayer = undefined; 5670}); 5671audioPlayer.on('timeUpdate', (seekDoneTime: number) => { //设置'timeUpdate'事件回调 5672 if (seekDoneTime == null) { 5673 console.error('Failed to seek'); 5674 return; 5675 } 5676 console.info('Succeeded in seek, and seek time is ' + seekDoneTime); 5677 audioPlayer.setVolume(0.5); //设置音量为50%,并触发'volumeChange'事件回调 5678}); 5679audioPlayer.on('volumeChange', () => { //设置'volumeChange'事件回调 5680 console.info('audio volumeChange called'); 5681 audioPlayer.pause(); //暂停播放,并触发'pause'事件回调 5682}); 5683audioPlayer.on('finish', () => { //设置'finish'事件回调 5684 console.info('audio play finish'); 5685 audioPlayer.stop(); //停止播放,并触发'stop'事件回调 5686}); 5687audioPlayer.on('error', (error: BusinessError) => { //设置'error'事件回调 5688 console.error(`audio error called, error: ${error}`); 5689}); 5690 5691// 用户选择音频设置fd(本地播放) 5692let fdPath = 'fd://'; 5693// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" 命令,将其推送到设备上 5694let path = '/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3'; 5695fs.open(path).then((file) => { 5696 fdPath = fdPath + '' + file.fd; 5697 console.info('Succeeded in opening fd, fd is' + fdPath); 5698 audioPlayer.src = fdPath; //设置src属性,并触发'dataLoad'事件回调 5699}, (err: BusinessError) => { 5700 console.error('Failed to open fd, err is' + err); 5701}).catch((err: BusinessError) => { 5702 console.error('Failed to open fd, err is' + err); 5703}); 5704``` 5705 5706### on('timeUpdate')<sup>(deprecated)</sup> 5707 5708on(type: 'timeUpdate', callback: Callback\<number>): void 5709 5710开始订阅音频播放时间更新事件。处于播放状态时,每隔1s上报一次该事件。 5711 5712> **说明:** 5713> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('timeUpdate')](#ontimeupdate9)替代。 5714 5715**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5716 5717**参数:** 5718 5719| 参数名 | 类型 | 必填 | 说明 | 5720| -------- | ----------------- | ---- | ------------------------------------------------------------ | 5721| type | string | 是 | 播放事件回调类型,支持的事件包括:'timeUpdate'。<br>- 'timeUpdate':音频播放时间戳更新,开始播放后自动触发该事件。 | 5722| callback | Callback\<number> | 是 | 播放事件回调方法。回调方法入参为更新后的时间戳。 | 5723 5724**示例:** 5725 5726```ts 5727audioPlayer.on('timeUpdate', (newTime: number) => { //设置'timeUpdate'事件回调 5728 if (newTime == null) { 5729 console.error('Failed to do timeUpadate'); 5730 return; 5731 } 5732 console.info('Succeeded in doing timeUpadate. seekDoneTime: ' + newTime); 5733}); 5734audioPlayer.play(); //开始播放后,自动触发时间戳更新事件 5735``` 5736 5737### on('audioInterrupt')<sup>(deprecated)</sup> 5738 5739on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void 5740 5741监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。 5742 5743> **说明:** 5744> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。 5745 5746**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5747 5748**参数:** 5749 5750| 参数名 | 类型 | 必填 | 说明 | 5751| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | 5752| type | string | 是 | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 | 5753| callback | function | 是 | 音频焦点变化事件回调方法。 | 5754 5755**示例:** 5756 5757```ts 5758import { audio } from '@kit.AudioKit'; 5759 5760audioPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => { 5761 console.info('audioInterrupt called,and InterruptEvent info is:' + info) 5762}) 5763``` 5764 5765### on('error')<sup>(deprecated)</sup> 5766 5767on(type: 'error', callback: ErrorCallback): void 5768 5769开始订阅音频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。 5770 5771> **说明:** 5772> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。 5773 5774**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5775 5776**参数:** 5777 5778| 参数名 | 类型 | 必填 | 说明 | 5779| -------- | ------------- | ---- | ------------------------------------------------------------ | 5780| type | string | 是 | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':音频播放中发生错误,触发该事件。 | 5781| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 播放错误事件回调方法。 | 5782 5783**示例:** 5784 5785```ts 5786import { BusinessError } from '@kit.BasicServicesKit'; 5787 5788audioPlayer.on('error', (error: BusinessError) => { //设置'error'事件回调 5789 console.error(`audio error called, error: ${error}`); 5790}); 5791audioPlayer.setVolume(3); //设置volume为无效值,触发'error'事件 5792``` 5793 5794## AudioState<sup>(deprecated)</sup> 5795 5796type AudioState = 'idle' | 'playing' | 'paused' | 'stopped' | 'error' 5797 5798音频播放的状态机。可通过state属性获取当前状态。 5799 5800> **说明:** 5801> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。 5802 5803**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5804 5805| 类型 | 说明 | 5806| ------- | ---------------------------------------------- | 5807| 'idle' | 音频播放空闲,dataload/reset成功后处于此状态。 | 5808| 'playing' | 音频正在播放,play成功后处于此状态。 | 5809| 'paused' | 音频暂停播放,pause成功后处于此状态。 | 5810| 'stopped' | 音频播放停止,stop/播放结束后处于此状态。 | 5811| 'error' | 错误状态。 | 5812 5813## VideoPlayer<sup>(deprecated)</sup> 5814 5815> **说明:** 5816> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。 5817 5818视频播放管理类,用于管理和播放视频媒体。在调用VideoPlayer的方法前,需要先通过[createVideoPlayer()](#mediacreatevideoplayerdeprecated)构建一个VideoPlayer实例。 5819 5820### 属性 5821 5822**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5823 5824| 名称 | 类型 | 只读 | 可选 | 说明 | 5825| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 5826| 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。 | 5827| 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/> | 5828| loop<sup>8+</sup> | boolean | 否 | 否 | 视频循环播放属性,设置为'true'表示循环播放。 | 5829| videoScaleType<sup>9+</sup> | [VideoScaleType](#videoscaletype9) | 否 | 是 | 视频缩放模式。默认值为VIDEO_SCALE_TYPE_FIT。 | 5830| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 否 | 是 | 音频焦点模型。 | 5831| currentTime<sup>8+</sup> | number | 是 | 否 | 视频的当前播放位置,单位为毫秒(ms)。 | 5832| duration<sup>8+</sup> | number | 是 | 否 | 视频时长,单位为毫秒(ms),返回-1表示直播模式。 | 5833| state<sup>8+</sup> | [VideoPlayState](#videoplaystatedeprecated) | 是 | 否 | 视频播放的状态。 | 5834| width<sup>8+</sup> | number | 是 | 否 | 视频宽,单位为像素(px)。 | 5835| height<sup>8+</sup> | number | 是 | 否 | 视频高,单位为像素(px)。 | 5836 5837### setDisplaySurface<sup>(deprecated)</sup> 5838 5839setDisplaySurface(surfaceId: string, callback: AsyncCallback\<void>): void 5840 5841设置SurfaceId。通过回调函数获取返回值。 5842 5843*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。 5844 5845> **说明:** 5846> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。 5847 5848**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5849 5850**参数:** 5851 5852| 参数名 | 类型 | 必填 | 说明 | 5853| --------- | -------------------- | ---- | ------------------------- | 5854| surfaceId | string | 是 | SurfaceId | 5855| callback | AsyncCallback\<void> | 是 | 回调函数。当设置SurfaceId成功,err为undefined,否则为错误对象。 | 5856 5857**示例:** 5858 5859```ts 5860import { BusinessError } from '@kit.BasicServicesKit'; 5861 5862let surfaceId: string = ''; 5863videoPlayer.setDisplaySurface(surfaceId, (err: BusinessError) => { 5864 if (err) { 5865 console.error('Failed to set DisplaySurface!'); 5866 } else { 5867 console.info('Succeeded in setting DisplaySurface!'); 5868 } 5869}); 5870``` 5871 5872### setDisplaySurface<sup>(deprecated)</sup> 5873 5874setDisplaySurface(surfaceId: string): Promise\<void> 5875 5876设置SurfaceId。通过Promise获取返回值。 5877 5878*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。 5879 5880> **说明:** 5881> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。 5882 5883**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5884 5885**参数:** 5886 5887| 参数名 | 类型 | 必填 | 说明 | 5888| --------- | ------ | ---- | --------- | 5889| surfaceId | string | 是 | SurfaceId | 5890 5891**返回值:** 5892 5893| 类型 | 说明 | 5894| -------------- | ------------------------------ | 5895| Promise\<void> | 设置SurfaceId的Promise返回值。 | 5896 5897**示例:** 5898 5899```ts 5900import { BusinessError } from '@kit.BasicServicesKit'; 5901 5902let surfaceId: string = ''; 5903videoPlayer.setDisplaySurface(surfaceId).then(() => { 5904 console.info('Succeeded in setting DisplaySurface'); 5905}).catch((error: BusinessError) => { 5906 console.error(`video catchCallback, error:${error}`); 5907}); 5908``` 5909 5910### prepare<sup>(deprecated)</sup> 5911 5912prepare(callback: AsyncCallback\<void>): void 5913 5914准备播放视频。通过回调函数获取返回值。 5915 5916> **说明:** 5917> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9)替代。 5918 5919**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5920 5921**参数:** 5922 5923| 参数名 | 类型 | 必填 | 说明 | 5924| -------- | -------------------- | ---- | ------------------------ | 5925| callback | AsyncCallback\<void> | 是 | 回调函数。当准备播放视频成功,err为undefined,否则为错误对象。| 5926 5927**示例:** 5928 5929```ts 5930import { BusinessError } from '@kit.BasicServicesKit'; 5931 5932videoPlayer.prepare((err: BusinessError) => { 5933 if (err) { 5934 console.error('Failed to prepare!'); 5935 } else { 5936 console.info('Succeeded in preparing!'); 5937 } 5938}); 5939``` 5940 5941### prepare<sup>(deprecated)</sup> 5942 5943prepare(): Promise\<void> 5944 5945准备播放视频。通过Promise获取返回值。 5946 5947> **说明:** 5948> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9-1)替代。 5949 5950**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5951 5952**返回值:** 5953 5954| 类型 | 说明 | 5955| -------------- | ----------------------------- | 5956| Promise\<void> | 准备播放视频的Promise返回值。 | 5957 5958**示例:** 5959 5960```ts 5961import { BusinessError } from '@kit.BasicServicesKit'; 5962 5963videoPlayer.prepare().then(() => { 5964 console.info('Succeeded in preparing'); 5965}).catch((error: BusinessError) => { 5966 console.error(`video catchCallback, error:${error}`); 5967}); 5968``` 5969 5970### play<sup>(deprecated)</sup> 5971 5972play(callback: AsyncCallback\<void>): void 5973 5974开始播放视频。通过回调函数获取返回值。 5975 5976> **说明:** 5977> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。 5978 5979**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5980 5981**参数:** 5982 5983| 参数名 | 类型 | 必填 | 说明 | 5984| -------- | -------------------- | ---- | ------------------------ | 5985| callback | AsyncCallback\<void> | 是 | 回调函数。当开始播放视频成功,err为undefined,否则为错误对象。 | 5986 5987**示例:** 5988 5989```ts 5990import { BusinessError } from '@kit.BasicServicesKit'; 5991 5992videoPlayer.play((err: BusinessError) => { 5993 if (err) { 5994 console.error('Failed to play!'); 5995 } else { 5996 console.info('Succeeded in playing!'); 5997 } 5998}); 5999``` 6000 6001### play<sup>(deprecated)</sup> 6002 6003play(): Promise\<void> 6004 6005开始播放视频。通过Promise获取返回值。 6006 6007> **说明:** 6008> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9-1)替代。 6009 6010**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6011 6012**返回值:** 6013 6014| 类型 | 说明 | 6015| -------------- | ----------------------------- | 6016| Promise\<void> | 开始播放视频的Promise返回值。 | 6017 6018**示例:** 6019 6020```ts 6021import { BusinessError } from '@kit.BasicServicesKit'; 6022 6023videoPlayer.play().then(() => { 6024 console.info('Succeeded in playing'); 6025}).catch((error: BusinessError) => { 6026 console.error(`video catchCallback, error:${error}`); 6027}); 6028``` 6029 6030### pause<sup>(deprecated)</sup> 6031 6032pause(callback: AsyncCallback\<void>): void 6033 6034通过回调方式暂停播放视频。通过回调函数获取返回值。 6035 6036> **说明:** 6037> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。 6038 6039**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6040 6041**参数:** 6042 6043| 参数名 | 类型 | 必填 | 说明 | 6044| -------- | -------------------- | ---- | ------------------------ | 6045| callback | AsyncCallback\<void> | 是 | 回调函数。当暂停播放视频成功,err为undefined,否则为错误对象。 | 6046 6047**示例:** 6048 6049```ts 6050import { BusinessError } from '@kit.BasicServicesKit'; 6051 6052videoPlayer.pause((err: BusinessError) => { 6053 if (err) { 6054 console.error('Failed to pause!'); 6055 } else { 6056 console.info('Succeeded in pausing!'); 6057 } 6058}); 6059``` 6060 6061### pause<sup>(deprecated)</sup> 6062 6063pause(): Promise\<void> 6064 6065暂停播放视频。通过Promise获取返回值。 6066 6067> **说明:** 6068> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9-1)替代。 6069 6070**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6071 6072**返回值:** 6073 6074| 类型 | 说明 | 6075| -------------- | ----------------------------- | 6076| Promise\<void> | 暂停播放视频的Promise返回值。 | 6077 6078**示例:** 6079 6080```ts 6081import { BusinessError } from '@kit.BasicServicesKit'; 6082 6083videoPlayer.pause().then(() => { 6084 console.info('Succeeded in pausing'); 6085}).catch((error: BusinessError) => { 6086 console.error(`video catchCallback, error:${error}`); 6087}); 6088``` 6089 6090### stop<sup>(deprecated)</sup> 6091 6092stop(callback: AsyncCallback\<void>): void 6093 6094通过回调方式停止播放视频。通过回调函数获取返回值。 6095 6096> **说明:** 6097> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。 6098 6099**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6100 6101**参数:** 6102 6103| 参数名 | 类型 | 必填 | 说明 | 6104| -------- | -------------------- | ---- | ------------------------ | 6105| callback | AsyncCallback\<void> | 是 | 回调函数。当停止播放视频成功,err为undefined,否则为错误对象。 | 6106 6107**示例:** 6108 6109```ts 6110import { BusinessError } from '@kit.BasicServicesKit'; 6111 6112videoPlayer.stop((err: BusinessError) => { 6113 if (err) { 6114 console.error('Failed to stop!'); 6115 } else { 6116 console.info('Succeeded in stopping!'); 6117 } 6118}); 6119``` 6120 6121### stop<sup>(deprecated)</sup> 6122 6123stop(): Promise\<void> 6124 6125停止播放视频。通过Promise获取返回值。 6126 6127> **说明:** 6128> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9-1)替代。 6129 6130**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6131 6132**返回值:** 6133 6134| 类型 | 说明 | 6135| -------------- | ----------------------------- | 6136| Promise\<void> | 停止播放视频的Promise返回值。 | 6137 6138**示例:** 6139 6140```ts 6141import { BusinessError } from '@kit.BasicServicesKit'; 6142 6143videoPlayer.stop().then(() => { 6144 console.info('Succeeded in stopping'); 6145}).catch((error: BusinessError) => { 6146 console.error(`video catchCallback, error:${error}`); 6147}); 6148``` 6149 6150### reset<sup>(deprecated)</sup> 6151 6152reset(callback: AsyncCallback\<void>): void 6153 6154重置播放视频。通过回调函数获取返回值。 6155 6156> **说明:** 6157> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。 6158 6159**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6160 6161**参数:** 6162 6163| 参数名 | 类型 | 必填 | 说明 | 6164| -------- | -------------------- | ---- | ------------------------ | 6165| callback | AsyncCallback\<void> | 是 | 回调函数。当重置播放视频成功,err为undefined,否则为错误对象。 | 6166 6167**示例:** 6168 6169```ts 6170import { BusinessError } from '@kit.BasicServicesKit'; 6171 6172videoPlayer.reset((err: BusinessError) => { 6173 if (err) { 6174 console.error('Failed to reset!'); 6175 } else { 6176 console.info('Succeeded in resetting!'); 6177 } 6178}); 6179``` 6180 6181### reset<sup>(deprecated)</sup> 6182 6183reset(): Promise\<void> 6184 6185重置播放视频。通过Promise获取返回值。 6186 6187> **说明:** 6188> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9-1)替代。 6189 6190**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6191 6192**返回值:** 6193 6194| 类型 | 说明 | 6195| -------------- | ----------------------------- | 6196| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 6197 6198**示例:** 6199 6200```ts 6201import { BusinessError } from '@kit.BasicServicesKit'; 6202 6203videoPlayer.reset().then(() => { 6204 console.info('Succeeded in resetting'); 6205}).catch((error: BusinessError) => { 6206 console.error(`video catchCallback, error:${error}`); 6207}); 6208``` 6209 6210### seek<sup>(deprecated)</sup> 6211 6212seek(timeMs: number, callback: AsyncCallback\<number>): void 6213 6214跳转到指定播放位置,默认跳转到指定时间点的上一个关键帧。通过回调函数获取返回值。 6215 6216> **说明:** 6217> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 6218 6219**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6220 6221**参数:** 6222 6223| 参数名 | 类型 | 必填 | 说明 | 6224| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 6225| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 6226| callback | AsyncCallback\<number> | 是 | 回调函数。跳转到指定播放位置成功时,err为undefined,data为获取到的跳转到的播放位置,否则为错误对象。 | 6227 6228**示例:** 6229 6230```ts 6231import { BusinessError } from '@kit.BasicServicesKit'; 6232 6233let videoPlayer: media.VideoPlayer; 6234media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6235 if (video != null) { 6236 videoPlayer = video; 6237 console.info('Succeeded in creating VideoPlayer'); 6238 } else { 6239 console.error(`Failed to create VideoPlayer, error:${error}`); 6240 } 6241}); 6242 6243let seekTime: number = 5000; 6244videoPlayer.seek(seekTime, (err: BusinessError, result: number) => { 6245 if (err) { 6246 console.error('Failed to do seek!'); 6247 } else { 6248 console.info('Succeeded in doing seek!'); 6249 } 6250}); 6251``` 6252 6253### seek<sup>(deprecated)</sup> 6254 6255seek(timeMs: number, mode:SeekMode, callback: AsyncCallback\<number>): void 6256 6257跳转到指定播放位置。通过回调函数获取返回值。 6258 6259> **说明:** 6260> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 6261 6262**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6263 6264**参数:** 6265 6266| 参数名 | 类型 | 必填 | 说明 | 6267| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 6268| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 6269| mode | [SeekMode](#seekmode8) | 是 | 跳转模式。 | 6270| callback | AsyncCallback\<number> | 是 | 回调函数。跳转到指定播放位置成功时,err为undefined,data为获取到的跳转到的播放位置,否则为错误对象。 | 6271 6272**示例:** 6273 6274```ts 6275import { BusinessError } from '@kit.BasicServicesKit'; 6276 6277let videoPlayer: media.VideoPlayer | null = null; 6278media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6279 if (video != null) { 6280 videoPlayer = video; 6281 console.info('Succeeded in creating VideoPlayer'); 6282 } else { 6283 console.error(`Failed to create VideoPlayer, error:${error}`); 6284 } 6285}); 6286let seekTime: number = 5000; 6287if (videoPlayer) { 6288 (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC, (err: BusinessError, result: number) => { 6289 if (err) { 6290 console.error('Failed to do seek!'); 6291 } else { 6292 console.info('Succeeded in doing seek!'); 6293 } 6294 }); 6295} 6296``` 6297 6298### seek<sup>(deprecated)</sup> 6299 6300seek(timeMs: number, mode?:SeekMode): Promise\<number> 6301 6302跳转到指定播放位置,如果没有设置mode则跳转到指定时间点的上一个关键帧。通过Promise获取返回值。 6303 6304> **说明:** 6305> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 6306 6307**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6308 6309**参数:** 6310 6311| 参数名 | 类型 | 必填 | 说明 | 6312| ------ | ---------------------- | ---- | ------------------------------------------------------------ | 6313| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 6314| mode | [SeekMode](#seekmode8) | 否 | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式。 | 6315 6316**返回值:** 6317 6318| 类型 | 说明 | 6319| ---------------- | ------------------------------------------- | 6320| Promise\<number> | 跳转到指定播放位置的Promise返回值,单位ms。 | 6321 6322**示例:** 6323 6324```ts 6325import { BusinessError } from '@kit.BasicServicesKit'; 6326 6327let videoPlayer: media.VideoPlayer | null = null; 6328media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6329 if (video != null) { 6330 videoPlayer = video; 6331 console.info('Succeeded in creating VideoPlayer'); 6332 } else { 6333 console.error(`Failed to create VideoPlayer, error:${error}`); 6334 } 6335}); 6336let seekTime: number = 5000; 6337if (videoPlayer) { 6338 (videoPlayer as media.VideoPlayer).seek(seekTime).then((seekDoneTime: number) => { // seekDoneTime表示seek完成后的时间点 6339 console.info('Succeeded in doing seek'); 6340 }).catch((error: BusinessError) => { 6341 console.error(`video catchCallback, error:${error}`); 6342 }); 6343 6344 (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime: number) => { 6345 console.info('Succeeded in doing seek'); 6346 }).catch((error: BusinessError) => { 6347 console.error(`video catchCallback, error:${error}`); 6348 }); 6349} 6350``` 6351 6352### setVolume<sup>(deprecated)</sup> 6353 6354setVolume(vol: number, callback: AsyncCallback\<void>): void 6355 6356设置音量。通过回调函数获取返回值。 6357 6358> **说明:** 6359> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。 6360 6361**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6362 6363**参数:** 6364 6365| 参数名 | 类型 | 必填 | 说明 | 6366| -------- | -------------------- | ---- | ------------------------------------------------------------ | 6367| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 6368| callback | AsyncCallback\<void> | 是 | 回调函数。当设置音量成功,err为undefined,否则为错误对象。 | 6369 6370**示例:** 6371 6372```ts 6373import { BusinessError } from '@kit.BasicServicesKit'; 6374 6375let vol: number = 0.5; 6376videoPlayer.setVolume(vol, (err: BusinessError) => { 6377 if (err) { 6378 console.error('Failed to set Volume!'); 6379 } else { 6380 console.info('Succeeded in setting Volume!'); 6381 } 6382}); 6383``` 6384 6385### setVolume<sup>(deprecated)</sup> 6386 6387setVolume(vol: number): Promise\<void> 6388 6389设置音量。通过Promise获取返回值。 6390 6391> **说明:** 6392> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。 6393 6394**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6395 6396**参数:** 6397 6398| 参数名 | 类型 | 必填 | 说明 | 6399| ------ | ------ | ---- | ------------------------------------------------------------ | 6400| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 6401 6402**返回值:** 6403 6404| 类型 | 说明 | 6405| -------------- | ------------------------- | 6406| Promise\<void> | 设置音量的Promise返回值。 | 6407 6408**示例:** 6409 6410```ts 6411import { BusinessError } from '@kit.BasicServicesKit'; 6412 6413let vol: number = 0.5; 6414videoPlayer.setVolume(vol).then(() => { 6415 console.info('Succeeded in setting Volume'); 6416}).catch((error: BusinessError) => { 6417 console.error(`video catchCallback, error:${error}`); 6418}); 6419``` 6420 6421### release<sup>(deprecated)</sup> 6422 6423release(callback: AsyncCallback\<void>): void 6424 6425释放视频资源。通过回调函数获取返回值。 6426 6427> **说明:** 6428> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。 6429 6430**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6431 6432**参数:** 6433 6434| 参数名 | 类型 | 必填 | 说明 | 6435| -------- | -------------------- | ---- | ------------------------ | 6436| callback | AsyncCallback\<void> | 是 | 回调函数。当释放视频资源成功,err为undefined,否则为错误对象。 | 6437 6438**示例:** 6439 6440```ts 6441import { BusinessError } from '@kit.BasicServicesKit'; 6442 6443videoPlayer.release((err: BusinessError) => { 6444 if (err) { 6445 console.error('Failed to release!'); 6446 } else { 6447 console.info('Succeeded in releasing!'); 6448 } 6449}); 6450``` 6451 6452### release<sup>(deprecated)</sup> 6453 6454release(): Promise\<void> 6455 6456释放视频资源。通过Promise获取返回值。 6457 6458> **说明:** 6459> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9-1)替代。 6460 6461**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6462 6463**返回值:** 6464 6465| 类型 | 说明 | 6466| -------------- | ----------------------------- | 6467| Promise\<void> | 释放视频资源的Promise返回值。 | 6468 6469**示例:** 6470 6471```ts 6472import { BusinessError } from '@kit.BasicServicesKit'; 6473 6474videoPlayer.release().then(() => { 6475 console.info('Succeeded in releasing'); 6476}).catch((error: BusinessError) => { 6477 console.error(`video catchCallback, error:${error}`); 6478}); 6479``` 6480 6481### getTrackDescription<sup>(deprecated)</sup> 6482 6483getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void 6484 6485获取视频轨道信息。通过回调函数获取返回值。 6486 6487> **说明:** 6488> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。 6489 6490**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6491 6492**参数:** 6493 6494| 参数名 | 类型 | 必填 | 说明 | 6495| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ | 6496| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是 | 回调函数。获取视频轨道信息成功时,err为undefined,data为获取到的视频轨道信息MediaDescription数组,否则为错误对象。 | 6497 6498**示例:** 6499 6500```ts 6501import { BusinessError } from '@kit.BasicServicesKit'; 6502 6503videoPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 6504 if ((arrList) != null) { 6505 console.info('Succeeded in getting TrackDescription'); 6506 } else { 6507 console.error(`Failed to get TrackDescription, error:${error}`); 6508 } 6509}); 6510``` 6511 6512### getTrackDescription<sup>(deprecated)</sup> 6513 6514getTrackDescription(): Promise\<Array\<MediaDescription>> 6515 6516获取视频轨道信息。通过Promise获取返回值。 6517 6518> **说明:** 6519> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。 6520 6521**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6522 6523**返回值:** 6524 6525| 类型 | 说明 | 6526| ------------------------------------------------------ | ----------------------------------------------- | 6527| Promise<Array<[MediaDescription](#mediadescription8)>> | Promise对象,返回获取的视频轨道信息MediaDescription数组。 | 6528 6529**示例:** 6530 6531```ts 6532import { BusinessError } from '@kit.BasicServicesKit'; 6533 6534videoPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => { 6535 if (arrList != null) { 6536 console.info('Succeeded in getting TrackDescription'); 6537 } else { 6538 console.error('Failed to get TrackDescription'); 6539 } 6540}).catch((error: BusinessError) => { 6541 console.error(`video catchCallback, error:${error}`); 6542}); 6543``` 6544 6545### setSpeed<sup>(deprecated)</sup> 6546 6547setSpeed(speed: number, callback: AsyncCallback\<number>): void 6548 6549设置播放速度。通过回调函数获取返回值。 6550 6551> **说明:** 6552> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。 6553 6554**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6555 6556**参数:** 6557 6558| 参数名 | 类型 | 必填 | 说明 | 6559| -------- | ---------------------- | ---- | ---------------------------------------------------------- | 6560| speed | number | 是 | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 6561| callback | AsyncCallback\<number> | 是 | 回调函数。设置播放速度成功时,err为undefined,data为设置的播放速度,否则为错误对象。 | 6562 6563**示例:** 6564 6565```ts 6566import { BusinessError } from '@kit.BasicServicesKit'; 6567 6568let videoPlayer: media.VideoPlayer | null = null; 6569media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6570 if (video != null) { 6571 videoPlayer = video; 6572 console.info('Succeeded in creating VideoPlayer'); 6573 } else { 6574 console.error(`Failed to create VideoPlayer, error:${error}`); 6575 } 6576}); 6577let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X; 6578if (videoPlayer) { 6579 (videoPlayer as media.VideoPlayer).setSpeed(speed, (err: BusinessError, result: number) => { 6580 if (err) { 6581 console.error('Failed to set Speed!'); 6582 } else { 6583 console.info('Succeeded in setting Speed!'); 6584 } 6585 }); 6586} 6587``` 6588 6589### setSpeed<sup>(deprecated)</sup> 6590 6591setSpeed(speed: number): Promise\<number> 6592 6593设置播放速度。通过Promise获取返回值。 6594 6595> **说明:** 6596> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。 6597 6598**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6599 6600**参数:** 6601 6602| 参数名 | 类型 | 必填 | 说明 | 6603| ------ | ------ | ---- | ---------------------------------------------------------- | 6604| speed | number | 是 | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 6605 6606**返回值:** 6607 6608| 类型 | 说明 | 6609| ---------------- | ------------------------------------------------------------ | 6610| Promise\<number> | Promise对象,返回设置的播放速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 6611 6612**示例:** 6613 6614```ts 6615import { BusinessError } from '@kit.BasicServicesKit'; 6616 6617let videoPlayer: media.VideoPlayer | null = null; 6618media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6619 if (video != null) { 6620 videoPlayer = video; 6621 console.info('Succeeded in creating VideoPlayer'); 6622 } else { 6623 console.error(`Failed to create VideoPlayer, error:${error}`); 6624 } 6625}); 6626let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X; 6627if (videoPlayer) { 6628 (videoPlayer as media.VideoPlayer).setSpeed(speed).then((result: number) => { 6629 console.info('Succeeded in setting Speed'); 6630 }).catch((error: BusinessError) => { 6631 console.error(`Failed to set Speed, error:${error}`);//todo:: error 6632 }); 6633} 6634``` 6635 6636### on('playbackCompleted')<sup>(deprecated)</sup> 6637 6638on(type: 'playbackCompleted', callback: Callback\<void>): void 6639 6640开始监听视频播放完成事件。 6641 6642> **说明:** 6643> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。 6644 6645**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6646 6647**参数:** 6648 6649| 参数名 | 类型 | 必填 | 说明 | 6650| -------- | -------- | ---- | ----------------------------------------------------------- | 6651| type | string | 是 | 视频播放完成事件回调类型,支持的事件:'playbackCompleted'。 | 6652| callback | Callback\<void> | 是 | 视频播放完成事件回调方法。 | 6653 6654**示例:** 6655 6656```ts 6657videoPlayer.on('playbackCompleted', () => { 6658 console.info('playbackCompleted called!'); 6659}); 6660``` 6661 6662### on('bufferingUpdate')<sup>(deprecated)</sup> 6663 6664on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void 6665 6666开始监听视频缓存更新事件。仅网络播放支持该订阅事件。 6667 6668> **说明:** 6669> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。 6670 6671**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6672 6673**参数:** 6674 6675| 参数名 | 类型 | 必填 | 说明 | 6676| -------- | -------- | ---- | ------------------------------------------------------------ | 6677| type | string | 是 | 视频缓存事件回调类型,支持的事件:'bufferingUpdate'。 | 6678| callback | function | 是 | 视频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)value值固定为0。 | 6679 6680**示例:** 6681 6682```ts 6683videoPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => { 6684 console.info('video bufferingInfo type: ' + infoType); 6685 console.info('video bufferingInfo value: ' + value); 6686}); 6687``` 6688 6689### on('startRenderFrame')<sup>(deprecated)</sup> 6690 6691on(type: 'startRenderFrame', callback: Callback\<void>): void 6692 6693开始监听视频播放首帧送显上报事件。 6694 6695> **说明:** 6696> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('startRenderFrame')](#onstartrenderframe9)替代。 6697 6698**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6699 6700**参数:** 6701 6702| 参数名 | 类型 | 必填 | 说明 | 6703| -------- | --------------- | ---- | ------------------------------------------------------------ | 6704| type | string | 是 | 视频播放首帧送显上报事件回调类型,支持的事件:'startRenderFrame'。 | 6705| callback | Callback\<void> | 是 | 视频播放首帧送显上报事件回调方法。 | 6706 6707**示例:** 6708 6709```ts 6710videoPlayer.on('startRenderFrame', () => { 6711 console.info('startRenderFrame called!'); 6712}); 6713``` 6714 6715### on('videoSizeChanged')<sup>(deprecated)</sup> 6716 6717on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void 6718 6719开始监听视频播放宽高变化事件。 6720 6721> **说明:** 6722> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('videoSizeChange')](#onvideosizechange9)替代。 6723 6724**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6725 6726**参数:** 6727 6728| 参数名 | 类型 | 必填 | 说明 | 6729| -------- | -------- | ---- | ------------------------------------------------------------ | 6730| type | string | 是 | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChanged'。 | 6731| callback | function | 是 | 视频播放宽高变化事件回调方法,width表示宽,height表示高。 | 6732 6733**示例:** 6734 6735```ts 6736videoPlayer.on('videoSizeChanged', (width: number, height: number) => { 6737 console.info('video width is: ' + width); 6738 console.info('video height is: ' + height); 6739}); 6740``` 6741### on('audioInterrupt')<sup>(deprecated)</sup> 6742 6743on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void 6744 6745监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。 6746 6747> **说明:** 6748> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。 6749 6750**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6751 6752**参数:** 6753 6754| 参数名 | 类型 | 必填 | 说明 | 6755| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | 6756| type | string | 是 | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 | 6757| callback | function | 是 | 音频焦点变化事件回调方法。 | 6758 6759**示例:** 6760 6761```ts 6762import { audio } from '@kit.AudioKit'; 6763 6764videoPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => { 6765 console.info('audioInterrupt called,and InterruptEvent info is:' + info) 6766}) 6767``` 6768 6769### on('error')<sup>(deprecated)</sup> 6770 6771on(type: 'error', callback: ErrorCallback): void 6772 6773开始监听视频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。 6774 6775> **说明:** 6776> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。 6777 6778**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6779 6780**参数:** 6781 6782| 参数名 | 类型 | 必填 | 说明 | 6783| -------- | ------------- | ---- | ------------------------------------------------------------ | 6784| type | string | 是 | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':视频播放中发生错误,触发该事件。 | 6785| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 播放错误事件回调方法。 | 6786 6787**示例:** 6788 6789```ts 6790import { BusinessError } from '@kit.BasicServicesKit'; 6791 6792videoPlayer.on('error', (error: BusinessError) => { // 设置'error'事件回调 6793 console.error(`video error called, error: ${error}`); 6794}); 6795videoPlayer.url = 'fd://error'; //设置错误的播放地址,触发'error'事件 6796``` 6797 6798## VideoPlayState<sup>(deprecated)</sup> 6799 6800type VideoPlayState = 'idle' | 'prepared' | 'playing' | 'paused' | 'stopped' | 'error' 6801 6802视频播放的状态机,可通过state属性获取当前状态。 6803 6804> **说明:** 6805> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。 6806 6807**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6808 6809| 类型 | 说明 | 6810| -------- | -------------- | 6811| 'idle' | 视频播放空闲。 | 6812| 'prepared' | 视频播放准备。 | 6813| 'playing' | 视频正在播放。 | 6814| 'paused' | 视频暂停播放。 | 6815| 'stopped' | 视频播放停止。 | 6816| 'error' | 错误状态。 | 6817 6818## AudioRecorder<sup>(deprecated)</sup> 6819 6820> **说明:** 6821> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder](#avrecorder9)替代。 6822 6823音频录制管理类,用于录制音频媒体。在调用AudioRecorder的方法前,需要先通过[createAudioRecorder()](#mediacreateaudiorecorderdeprecated) 构建一个AudioRecorder实例。 6824 6825### prepare<sup>(deprecated)</sup> 6826 6827prepare(config: AudioRecorderConfig): void 6828 6829录音准备。 6830 6831> **说明:** 6832> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.prepare](#prepare9-2)替代。 6833 6834**需要权限:** ohos.permission.MICROPHONE 6835 6836**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6837 6838**参数:** 6839 6840| 参数名 | 类型 | 必填 | 说明 | 6841| ------ | ------------------------------------------- | ---- | ------------------------------------------------------------ | 6842| config | [AudioRecorderConfig](#audiorecorderconfigdeprecated) | 是 | 配置录音的相关参数,包括音频输出URI、编码格式、采样率、声道数、输出格式等。 | 6843 6844**错误码:** 6845 6846以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 6847 6848| 错误码ID | 错误信息 | 6849| -------- | --------------------- | 6850| 201 | permission denied | 6851 6852**示例:** 6853 6854```ts 6855let audioRecorderConfig: media.AudioRecorderConfig = { 6856 audioEncoder : media.AudioEncoder.AAC_LC, 6857 audioEncodeBitRate : 22050, 6858 audioSampleRate : 22050, 6859 numberOfChannels : 2, 6860 format : media.AudioOutputFormat.AAC_ADTS, 6861 uri : 'fd://1', // 文件需先由调用者创建,并给予适当的权限 6862 location : { latitude : 30, longitude : 130}, 6863} 6864audioRecorder.on('prepare', () => { //设置'prepare'事件回调 6865 console.info('prepare called'); 6866}); 6867audioRecorder.prepare(audioRecorderConfig); 6868``` 6869 6870### start<sup>(deprecated)</sup> 6871 6872start(): void 6873 6874开始录制,需在'prepare'事件成功触发后,才能调用start方法。 6875 6876> **说明:** 6877> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.start](#start9)替代。 6878 6879**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6880 6881**示例:** 6882 6883```ts 6884audioRecorder.on('start', () => { //设置'start'事件回调 6885 console.info('audio recorder start called'); 6886}); 6887audioRecorder.start(); 6888``` 6889 6890### pause<sup>(deprecated)</sup> 6891 6892pause():void 6893 6894暂停录制,需要在'start'事件成功触发后,才能调用pause方法。 6895 6896> **说明:** 6897> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.pause](#pause9-2)替代。 6898 6899**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6900 6901**示例:** 6902 6903```ts 6904audioRecorder.on('pause', () => { //设置'pause'事件回调 6905 console.info('audio recorder pause called'); 6906}); 6907audioRecorder.pause(); 6908``` 6909 6910### resume<sup>(deprecated)</sup> 6911 6912resume():void 6913 6914恢复录制,需要在'pause'事件成功触发后,才能调用resume方法。 6915 6916> **说明:** 6917> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.resume](#resume9)替代。 6918 6919**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6920 6921**示例:** 6922 6923```ts 6924audioRecorder.on('resume', () => { //设置'resume'事件回调 6925 console.info('audio recorder resume called'); 6926}); 6927audioRecorder.resume(); 6928``` 6929 6930### stop<sup>(deprecated)</sup> 6931 6932stop(): void 6933 6934停止录音。 6935 6936> **说明:** 6937> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.stop](#stop9-2)替代。 6938 6939**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6940 6941**示例:** 6942 6943```ts 6944audioRecorder.on('stop', () => { //设置'stop'事件回调 6945 console.info('audio recorder stop called'); 6946}); 6947audioRecorder.stop(); 6948``` 6949 6950### release<sup>(deprecated)</sup> 6951 6952release(): void 6953 6954释放录音资源。 6955 6956> **说明:** 6957> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.release](#release9-2)替代。 6958 6959**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6960 6961**示例:** 6962 6963```ts 6964audioRecorder.on('release', () => { //设置'release'事件回调 6965 console.info('audio recorder release called'); 6966}); 6967audioRecorder.release(); 6968audioRecorder = undefined; 6969``` 6970 6971### reset<sup>(deprecated)</sup> 6972 6973reset(): void 6974 6975重置录音。 6976 6977进行重置录音之前,需要先调用stop()停止录音。重置录音之后,需要调用prepare()设置录音参数项,才能再次进行录音。 6978 6979> **说明:** 6980> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.reset](#reset9-2)替代。 6981 6982**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6983 6984**示例:** 6985 6986```ts 6987audioRecorder.on('reset', () => { //设置'reset'事件回调 6988 console.info('audio recorder reset called'); 6989}); 6990audioRecorder.reset(); 6991``` 6992 6993### on('prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset')<sup>(deprecated)</sup> 6994 6995on(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset', callback: () => void): void 6996 6997开始订阅音频录制事件。 6998 6999> **说明:** 7000> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('stateChange')](#onstatechange9-1)替代。 7001 7002**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7003 7004**参数:** 7005 7006| 参数名 | 类型 | 必填 | 说明 | 7007| -------- | -------- | ---- | ------------------------------------------------------------ | 7008| 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调用,音频重置为初始状态,触发该事件。 | 7009| callback | ()=>void | 是 | 录制事件回调方法。 | 7010 7011**示例:** 7012 7013```ts 7014import { BusinessError } from '@kit.BasicServicesKit'; 7015 7016let audioRecorder: media.AudioRecorder = media.createAudioRecorder(); // 创建一个音频录制实例 7017let audioRecorderConfig: media.AudioRecorderConfig = { 7018 audioEncoder : media.AudioEncoder.AAC_LC, 7019 audioEncodeBitRate : 22050, 7020 audioSampleRate : 22050, 7021 numberOfChannels : 2, 7022 format : media.AudioOutputFormat.AAC_ADTS, 7023 uri : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限 7024 location : { latitude : 30, longitude : 130} 7025} 7026audioRecorder.on('error', (error: BusinessError) => { // 设置'error'事件回调 7027 console.error(`audio error called, error: ${error}`); 7028}); 7029audioRecorder.on('prepare', () => { // 设置'prepare'事件回调 7030 console.info('prepare called'); 7031 audioRecorder.start(); // 开始录制,并触发'start'事件回调 7032}); 7033audioRecorder.on('start', () => { // 设置'start'事件回调 7034 console.info('audio recorder start called'); 7035}); 7036audioRecorder.on('pause', () => { // 设置'pause'事件回调 7037 console.info('audio recorder pause called'); 7038}); 7039audioRecorder.on('resume', () => { // 设置'resume'事件回调 7040 console.info('audio recorder resume called'); 7041}); 7042audioRecorder.on('stop', () => { // 设置'stop'事件回调 7043 console.info('audio recorder stop called'); 7044}); 7045audioRecorder.on('release', () => { // 设置'release'事件回调 7046 console.info('audio recorder release called'); 7047}); 7048audioRecorder.on('reset', () => { // 设置'reset'事件回调 7049 console.info('audio recorder reset called'); 7050}); 7051audioRecorder.prepare(audioRecorderConfig) // 设置录制参数 ,并触发'prepare'事件回调 7052``` 7053 7054### on('error')<sup>(deprecated)</sup> 7055 7056on(type: 'error', callback: ErrorCallback): void 7057 7058开始订阅音频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。 7059 7060> **说明:** 7061> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('error')](#onerror9-1)替代。 7062 7063**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7064 7065**参数:** 7066 7067| 参数名 | 类型 | 必填 | 说明 | 7068| -------- | ------------- | ---- | ------------------------------------------------------------ | 7069| type | string | 是 | 录制错误事件回调类型'error'。<br/>- 'error':音频录制过程中发生错误,触发该事件。 | 7070| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录制错误事件回调方法。 | 7071 7072**示例:** 7073 7074```ts 7075import { BusinessError } from '@kit.BasicServicesKit'; 7076 7077let audioRecorderConfig: media.AudioRecorderConfig = { 7078 audioEncoder : media.AudioEncoder.AAC_LC, 7079 audioEncodeBitRate : 22050, 7080 audioSampleRate : 22050, 7081 numberOfChannels : 2, 7082 format : media.AudioOutputFormat.AAC_ADTS, 7083 uri : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限 7084 location : { latitude : 30, longitude : 130} 7085} 7086audioRecorder.on('error', (error: BusinessError) => { // 设置'error'事件回调 7087 console.error(`audio error called, error: ${error}`); 7088}); 7089audioRecorder.prepare(audioRecorderConfig); // prepare不设置参数,触发'error'事件 7090``` 7091 7092## AudioRecorderConfig<sup>(deprecated)</sup> 7093 7094> **说明:** 7095> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorderConfig](#avrecorderconfig9)替代。 7096 7097表示音频的录音配置。 7098 7099**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7100 7101| 名称 | 类型 | 必填 | 说明 | 7102| ----------------------------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | 7103| audioEncoder | [AudioEncoder](#audioencoderdeprecated) | 否 | 音频编码格式,默认设置为AAC_LC。<br/>**说明:** 从API version 8开始废弃,建议使用audioEncoderMime替代。 | 7104| audioEncodeBitRate | number | 否 | 音频编码比特率,默认值为48000。 | 7105| audioSampleRate | number | 否 | 音频采集采样率,默认值为48000。<br>可变比特率模式,码率仅作参考。 | 7106| numberOfChannels | number | 否 | 音频采集声道数,默认值为2。 | 7107| format | [AudioOutputFormat](#audiooutputformatdeprecated) | 否 | 音频输出封装格式,默认设置为MPEG_4。<br/>**说明:** 从API version 8开始废弃,建议使用fileFormat替代。 | 7108| location | [Location](#location) | 否 | 音频采集的地理位置。 | 7109| uri | string | 是 | 音频输出URI:fd://xx (fd number)<br/> <br/>文件需要由调用者创建,并赋予适当的权限。 | 7110| audioEncoderMime<sup>8+</sup> | [CodecMimeType](#codecmimetype8) | 否 | 容器编码格式。 | 7111| fileFormat<sup>8+</sup> | [ContainerFormatType](#containerformattype8) | 否 | 音频编码格式。 | 7112 7113## AudioEncoder<sup>(deprecated)</sup> 7114 7115> **说明:** 7116> 从API version 6开始支持,从API version 8开始废弃,建议使用[CodecMimeType](#codecmimetype8)替代。 7117 7118表示音频编码格式的枚举。 7119 7120**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7121 7122| 名称 | 值 | 说明 | 7123| ------- | ---- | ------------------------------------------------------------ | 7124| DEFAULT | 0 | 默认编码格式。<br/>仅做接口定义,暂不支持使用。 | 7125| AMR_NB | 1 | AMR-NB(Adaptive Multi Rate-Narrow Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 | 7126| AMR_WB | 2 | AMR-WB(Adaptive Multi Rate-Wide Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 | 7127| AAC_LC | 3 | AAC-LC(Advanced Audio Coding Low Complexity)编码格式。 | 7128| HE_AAC | 4 | HE_AAC(High-Efficiency Advanced Audio Coding)编码格式。<br/>仅做接口定义,暂不支持使用。 | 7129 7130## AudioOutputFormat<sup>(deprecated)</sup> 7131 7132> **说明:** 7133> 从API version 6开始支持,从API version 8 开始废弃,建议使用[ContainerFormatType](#containerformattype8)替代。 7134 7135表示音频封装格式的枚举。 7136 7137**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7138 7139| 名称 | 值 | 说明 | 7140| -------- | ---- | ------------------------------------------------------------ | 7141| DEFAULT | 0 | 默认封装格式。<br/>仅做接口定义,暂不支持使用。 | 7142| MPEG_4 | 2 | 封装为MPEG-4格式。 | 7143| AMR_NB | 3 | 封装为AMR_NB格式。<br/>仅做接口定义,暂不支持使用。 | 7144| AMR_WB | 4 | 封装为AMR_WB格式。<br/>仅做接口定义,暂不支持使用。 | 7145| AAC_ADTS | 6 | 封装为ADTS(Audio Data Transport Stream)格式,是AAC音频的传输流格式。 | 7146 7147 7148## media.createAVImageGenerator<sup>12+</sup> 7149 7150createAVImageGenerator(callback: AsyncCallback\<AVImageGenerator>): void 7151 7152创建AVImageGenerator实例,通过回调函数获取返回值。 7153 7154**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7155 7156**参数:** 7157 7158| 参数名 | 类型 | 必填 | 说明 | 7159| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | 7160| callback | AsyncCallback\<[AVImageGenerator](#avimagegenerator12)> | 是 | 回调函数。异步返回AVImageGenerator实例,失败时返回null。可用于获取视频缩略图。 | 7161 7162**错误码:** 7163 7164以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7165 7166| 错误码ID | 错误信息 | 7167| -------- | ------------------------------ | 7168| 5400101 | No memory. Returned by callback. | 7169 7170**示例:** 7171 7172```ts 7173import { BusinessError } from '@kit.BasicServicesKit'; 7174 7175let avImageGenerator: media.AVImageGenerator; 7176media.createAVImageGenerator((error: BusinessError, generator: media.AVImageGenerator) => { 7177 if (generator != null) { 7178 avImageGenerator = generator; 7179 console.info('Succeeded in creating AVImageGenerator'); 7180 } else { 7181 console.error(`Failed to creat AVImageGenerator, error message:${error.message}`); 7182 } 7183}); 7184``` 7185 7186## media.createAVImageGenerator<sup>12+</sup> 7187 7188createAVImageGenerator(): Promise\<AVImageGenerator> 7189 7190创建AVImageGenerator对象,通过Promise获取返回值。 7191 7192**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7193 7194**返回值:** 7195 7196| 类型 | 说明 | 7197| ------------------------------- | ------------------------------------------------------------ | 7198| Promise\<[AVImageGenerator](#avimagegenerator12)> | Promise对象。异步返回AVImageGenerator实例,失败时返回null。可用于获取视频缩略图。 | 7199 7200**错误码:** 7201 7202以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7203 7204| 错误码ID | 错误信息 | 7205| -------- | ----------------------------- | 7206| 5400101 | No memory. Returned by promise. | 7207 7208**示例:** 7209 7210```ts 7211import { BusinessError } from '@kit.BasicServicesKit'; 7212 7213let avImageGenerator: media.AVImageGenerator; 7214media.createAVImageGenerator().then((generator: media.AVImageGenerator) => { 7215 if (generator != null) { 7216 avImageGenerator = generator; 7217 console.info('Succeeded in creating AVImageGenerator'); 7218 } else { 7219 console.error('Failed to creat AVImageGenerator'); 7220 } 7221}).catch((error: BusinessError) => { 7222 console.error(`Failed to creat AVImageGenerator, error message:${error.message}`); 7223}); 7224``` 7225 7226## AVImageGenerator<sup>12+</sup> 7227 7228视频缩略图获取类,用于从视频资源中获取缩略图。在调用AVImageGenerator的方法前,需要先通过[createAVImageGenerator()](#mediacreateavimagegenerator12)构建一个AVImageGenerator实例。 7229 7230获取视频缩略图的demo可参考:[获取视频缩略图开发指导](../../media/media/avimagegenerator.md)。 7231 7232### 属性 7233 7234**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7235 7236| 名称 | 类型 | 可读 | 可写 | 说明 | 7237| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 7238| fdSrc<sup>12+</sup> | [AVFileDescriptor](js-apis-media.md#avfiledescriptor9) | 是 | 是 | 媒体文件描述,通过该属性设置数据源。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVImageGenerator 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频缩略图数据获取异常。 | 7239 7240### fetchFrameByTime<sup>12+</sup> 7241 7242fetchFrameByTime(timeUs: number, options: AVImageQueryOptions, param: PixelMapParams, callback: AsyncCallback\<image.PixelMap>): void 7243 7244异步方式获取视频缩略图。通过注册回调函数获取返回值。 7245 7246**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7247 7248**参数:** 7249 7250| 参数名 | 类型 | 必填 | 说明 | 7251| -------- | -------------------------------------------- | ---- | ----------------------------------- | 7252| timeUs | number | 是 | 需要获取的缩略图在视频中的时间点,单位为微秒(μs)。 | 7253| options | [AVImageQueryOptions](#avimagequeryoptions12) | 是 | 需要获取的缩略图时间点与视频帧的对应关系。 | 7254| param | [PixelMapParams](#pixelmapparams12) | 是 | 需要获取的缩略图的格式参数。 | 7255| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | 是 | 回调函数。获取缩略图成功时,err为undefined,data为PixelMap实例,否则为错误对象。 | 7256 7257**错误码:** 7258 7259以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7260 7261| 错误码ID | 错误信息 | 7262| -------- | ------------------------------------------ | 7263| 5400102 | Operation not allowed. Returned by callback. | 7264| 5400106 | Unsupported format. Returned by callback. | 7265 7266**示例:** 7267 7268```ts 7269import { BusinessError } from '@kit.BasicServicesKit'; 7270import { media } from '@kit.MediaKit'; 7271import { image } from '@kit.ImageKit'; 7272 7273let avImageGenerator: media.AVImageGenerator | undefined = undefined; 7274let pixel_map : image.PixelMap | undefined = undefined; 7275 7276// 初始化入参 7277let timeUs: number = 0 7278 7279let queryOption: media.AVImageQueryOptions = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC 7280 7281let param: media.PixelMapParams = { 7282 width : 300, 7283 height : 300, 7284} 7285 7286// 获取缩略图 7287media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7288 if(generator != null){ 7289 avImageGenerator = generator; 7290 console.info(`Succeeded in creating AVImageGenerator`); 7291 avImageGenerator.fetchFrameByTime(timeUs, queryOption, param, (error: BusinessError, pixelMap) => { 7292 if (error) { 7293 console.error(`Failed to fetch FrameByTime, err = ${JSON.stringify(error)}`) 7294 return 7295 } 7296 pixel_map = pixelMap; 7297 }); 7298 } else { 7299 console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7300 }; 7301}); 7302``` 7303 7304### fetchFrameByTime<sup>12+</sup> 7305 7306fetchFrameByTime(timeUs: number, options: AVImageQueryOptions, param: PixelMapParams): Promise<image.PixelMap> 7307 7308异步方式获取视频缩略图。通过Promise获取返回值。 7309 7310**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7311 7312**参数:** 7313 7314| 参数名 | 类型 | 必填 | 说明 | 7315| -------- | -------------------------------------------- | ---- | ----------------------------------- | 7316| timeUs | number | 是 | 需要获取的缩略图在视频中的时间点,单位为微秒(μs)。 | 7317| options | [AVImageQueryOptions](#avimagequeryoptions12) | 是 | 需要获取的缩略图时间点与视频帧的对应关系。 | 7318| param | [PixelMapParams](#pixelmapparams12) | 是 | 需要获取的缩略图的格式参数。 | 7319 7320**返回值:** 7321 7322| 类型 | 说明 | 7323| -------------- | ---------------------------------------- | 7324| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise对象,返回视频缩略图对象。 | 7325 7326**错误码:** 7327 7328以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7329 7330| 错误码ID | 错误信息 | 7331| -------- | ----------------------------------------- | 7332| 5400102 | Operation not allowed. Returned by promise. | 7333| 5400106 | Unsupported format. Returned by promise. | 7334 7335**示例:** 7336 7337```ts 7338import { BusinessError } from '@kit.BasicServicesKit'; 7339import { media } from '@kit.MediaKit'; 7340import { image } from '@kit.ImageKit'; 7341 7342let avImageGenerator: media.AVImageGenerator | undefined = undefined; 7343let pixel_map : image.PixelMap | undefined = undefined; 7344 7345// 初始化入参 7346let timeUs: number = 0 7347 7348let queryOption: media.AVImageQueryOptions = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC 7349 7350let param: media.PixelMapParams = { 7351 width : 300, 7352 height : 300, 7353} 7354 7355// 获取缩略图 7356media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7357 if(generator != null){ 7358 avImageGenerator = generator; 7359 console.info(`Succeeded in creating AVImageGenerator`); 7360 avImageGenerator.fetchFrameByTime(timeUs, queryOption, param).then((pixelMap: image.PixelMap) => { 7361 pixel_map = pixelMap; 7362 }).catch((error: BusinessError) => { 7363 console.error(`Failed to fetch FrameByTime, error message:${error.message}`); 7364 }); 7365 } else { 7366 console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7367 }; 7368}); 7369``` 7370 7371### release<sup>12+</sup> 7372 7373release(callback: AsyncCallback\<void>): void 7374 7375异步方式释放资源。通过注册回调函数获取返回值。 7376 7377**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7378 7379**参数:** 7380 7381| 参数名 | 类型 | 必填 | 说明 | 7382| -------- | -------------------------------------------- | ---- | ----------------------------------- | 7383| callback | AsyncCallback\<void> | 是 | 回调函数。当释放资源成功,err为undefined,否则为错误对象。 | 7384 7385**错误码:** 7386 7387以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7388 7389| 错误码ID | 错误信息 | 7390| -------- | ------------------------------------------ | 7391| 5400102 | Operation not allowed. Returned by callback. | 7392 7393**示例:** 7394 7395```ts 7396import { BusinessError } from '@kit.BasicServicesKit'; 7397import { media } from '@kit.MediaKit'; 7398 7399let avImageGenerator: media.AVImageGenerator | undefined = undefined; 7400 7401//释放资源 7402media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7403 if(generator != null){ 7404 avImageGenerator = generator; 7405 console.info(`Succeeded in creating AVImageGenerator`); 7406 avImageGenerator.release((error: BusinessError) => { 7407 if (error) { 7408 console.error(`Failed to release, err = ${JSON.stringify(error)}`); 7409 return; 7410 } 7411 console.info(`Succeeded in releasing`); 7412 }); 7413 } else { 7414 console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7415 }; 7416}); 7417``` 7418 7419### release<sup>12+</sup> 7420 7421release(): Promise\<void> 7422 7423异步方式释放资源。通过Promise获取返回值。 7424 7425**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7426 7427**返回值:** 7428 7429| 类型 | 说明 | 7430| -------------- | ---------------------------------------- | 7431| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 | 7432 7433**错误码:** 7434 7435以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7436 7437| 错误码ID | 错误信息 | 7438| -------- | ----------------------------------------- | 7439| 5400102 | Operation not allowed. Returned by promise. | 7440 7441**示例:** 7442 7443```ts 7444import { BusinessError } from '@kit.BasicServicesKit'; 7445import { media } from '@kit.MediaKit'; 7446 7447let avImageGenerator: media.AVImageGenerator | undefined = undefined; 7448 7449//释放资源 7450media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7451 if(generator != null){ 7452 avImageGenerator = generator; 7453 console.info(`Succeeded in creating AVImageGenerator`); 7454 avImageGenerator.release().then(() => { 7455 console.info(`Succeeded in releasing.`); 7456 }).catch((error: BusinessError) => { 7457 console.error(`Failed to release, error message:${error.message}`); 7458 }); 7459 } else { 7460 console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7461 }; 7462}); 7463``` 7464 7465## AVImageQueryOptions<sup>12+</sup> 7466 7467需要获取的缩略图时间点与视频帧的对应关系。 7468 7469在获取视频缩略图时,传入的时间点与实际取得的视频帧所在时间点不一定相等,需要指定传入的时间点与实际取得的视频帧的时间关系。 7470 7471**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7472 7473| 名称 | 值 | 说明 | 7474| ------------------------ | --------------- | ------------------------------------------------------------ | 7475| AV_IMAGE_QUERY_NEXT_SYNC | 0 | 表示选取传入时间点或之后的关键帧。 | 7476| AV_IMAGE_QUERY_PREVIOUS_SYNC | 1 | 表示选取传入时间点或之前的关键帧。 | 7477| AV_IMAGE_QUERY_CLOSEST_SYNC | 2 | 表示选取离传入时间点最近的关键帧。 | 7478| AV_IMAGE_QUERY_CLOSEST | 3 | 表示选取离传入时间点最近的帧,该帧不一定是关键帧。 | 7479 7480## PixelMapParams<sup>12+</sup> 7481 7482获取视频缩略图时,输出缩略图的格式参数。 7483 7484**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7485 7486| 名称 | 类型 | 可读 | 可写 | 说明 | 7487|--------|--------|------|------|---------------------------------------------------------------------------------| 7488| width | number | 是 | 是 | 输出的缩略图宽度。应保证大于0且不大于原始视频宽度。否则返回的缩略图不会进行缩放。 | 7489| height | number | 是 | 是 | 输出的缩略图高度。应保证大于0且不大于原始视频高度。否则返回的缩略图不会进行缩放。 | 7490 7491## media.createMediaSourceWithUrl<sup>12+</sup> 7492 7493createMediaSourceWithUrl(url: string, headers?: Record\<string, string>): MediaSource 7494 7495创建流媒体预下载媒体来源实例方法。 7496 7497**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 7498 7499**系统能力:** SystemCapability.Multimedia.Media.Core 7500 7501**参数:** 7502 7503| 参数名 | 类型 | 必填 | 说明 | 7504| -------- | -------- | ---- | -------------------- | 7505| url | string | 是 | - 流媒体预下载媒体来源url,支持的流媒体格式:HLS、HTTP-FLV、Dash、Https。<br> - 本地m3u8的fd路径。 | 7506| headers | Record\<string, string> | 否 | 支持流媒体预下载HttpHeader自定义。 | 7507 7508**返回值:** 7509 7510| 类型 | 说明 | 7511| -------------- | ------------------------------------------ | 7512| [MediaSource](#mediasource12) | MediaSource返回值。 | 7513 7514**错误码:** 7515 7516以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7517 7518| 错误码ID | 错误信息 | 7519| -------- | ----------------------------------------- | 7520| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 7521| 5400101 | No memory. | 7522 7523**示例1:** 7524 7525```ts 7526import { media } from '@kit.MediaKit'; 7527 7528let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"}; 7529let mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx", headers); 7530``` 7531 7532**示例2:** 7533 7534```ts 7535import { media } from '@kit.MediaKit'; 7536import { common } from '@kit.AbilityKit'; 7537import { resourceManager } from '@kit.LocalizationKit'; 7538 7539let context = getContext(this) as common.UIAbilityContext; 7540let mgr = context.resourceManager; 7541let fileDescriptor = await mgr.getRawFd("xxx.m3u8"); 7542 7543let fd:string = fileDescriptor.fd.toString(); 7544let offset:string = fileDescriptor.offset.toString(); 7545let length:string = fileDescriptor.length.toString(); 7546let fdUrl:string = "fd://" + fd + "?offset=" + offset + "&size=" + length; 7547 7548let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"}; 7549let mediaSource : media.MediaSource = media.createMediaSourceWithUrl(fdUrl, headers); 7550 7551let mimeType : media.AVMimeTypes = media.AVMimeTypes.APPLICATION_M3U8; 7552mediaSource.setMimeType(mimeType); 7553 7554``` 7555 7556## MediaSource<sup>12+</sup> 7557 7558媒体数据信息。来源自[createMediaSourceWithUrl](#mediacreatemediasourcewithurl12)。 7559 7560**系统能力:** SystemCapability.Multimedia.Media.Core 7561 7562### setMimeType<sup>12+</sup> 7563 7564setMimeType(mimeType: AVMimeTypes): void 7565 7566设置媒体MIME类型,以帮助播放器处理扩展的媒体源。 7567 7568**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 7569 7570**系统能力:** SystemCapability.Multimedia.Media.Core 7571 7572**参数:** 7573 7574| 参数名 | 类型 | 必填 | 说明 | 7575| -------- | -------- | ---- | -------------------- | 7576| mimeType | [AVMimeTypes](#mediasource12) | 是 | 媒体MIME类型。 | 7577 7578## AVMimeTypes<sup>12+</sup> 7579 7580媒体MIME类型,通过[setMimeType](#setmimetype12)设置。 7581 7582**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 7583 7584**系统能力:** SystemCapability.Multimedia.Media.Core 7585 7586 7587| 名称 | 值 | 说明 | 7588| ---------- | ---- | ------------------------------------------------------------ | 7589| APPLICATION_M3U8 | application/m3u8 | 表示m3u8本地文件。 | 7590 7591 7592## PlaybackStrategy<sup>12+</sup> 7593 7594播放策略。 7595 7596**系统能力:** SystemCapability.Multimedia.Media.Core 7597 7598| 名称 | 类型 | 必填 | 说明 | 7599| -------- | -------- | ---- | -------------------- | 7600| preferredWidth| number | 否 | 播放策略首选宽度,int类型,如1080。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7601| preferredHeight | number | 否 | 播放策略首选高度,int类型,如1920。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7602| preferredBufferDuration | number | 否 | 播放策略首选缓冲持续时间,单位s,取值范围1-20。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7603| preferredHdr | boolean | 否 | 播放策略true是hdr,false非hdr,默认非hdr。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7604| mutedMediaType | [MediaType](#mediatype8) | 否 | 静音播放的媒体类型,仅支持设置 MediaType.MEDIA_TYPE_AUD。 | 7605| preferredAudioLanguage<sup>13+</sup> | string | 否 | 播放策略首选音轨语言。dash场景下应用可按需设置。非dash场景不涉及,建议缺省。 | 7606| preferredSubtitleLanguage<sup>13+</sup> | string | 否 | 播放策略首选字幕语言。dash场景下应用可按需设置。非dash场景不涉及,建议缺省。 | 7607 7608## AVScreenCaptureRecordPreset<sup>12+</sup> 7609 7610进行屏幕录制时的编码、封装格式参数的枚举。 7611 7612**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7613 7614| 名称 | 值 | 说明 | 7615| --------------------------------- | ---- | -------------------------------------------- | 7616| SCREEN_RECORD_PRESET_H264_AAC_MP4 | 0 | 使用视频H264编码,音频AAC编码,MP4封装格式。 | 7617| SCREEN_RECORD_PRESET_H265_AAC_MP4 | 1 | 使用视频H265编码,音频AAC编码,MP4封装格式。 | 7618 7619## AVScreenCaptureStateCode<sup>12+</sup> 7620 7621屏幕录制的状态回调。 7622 7623**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7624 7625| 名称 | 值 | 说明 | 7626| ---------------------------------------- | ---- | ------------------------ | 7627| SCREENCAPTURE_STATE_STARTED | 0 | 录屏已开始。 | 7628| SCREENCAPTURE_STATE_CANCELED | 1 | 录屏被取消。 | 7629| SCREENCAPTURE_STATE_STOPPED_BY_USER | 2 | 录屏被用户手动停止。 | 7630| SCREENCAPTURE_STATE_INTERRUPTED_BY_OTHER | 3 | 录屏被其他录屏打断。 | 7631| SCREENCAPTURE_STATE_STOPPED_BY_CALL | 4 | 录屏被来电打断。 | 7632| SCREENCAPTURE_STATE_MIC_UNAVAILABLE | 5 | 录屏无法使用麦克风收音。 | 7633| SCREENCAPTURE_STATE_MIC_MUTED_BY_USER | 6 | 麦克风被用户关闭。 | 7634| SCREENCAPTURE_STATE_MIC_UNMUTED_BY_USER | 7 | 麦克风被用户打开。 | 7635| SCREENCAPTURE_STATE_ENTER_PRIVATE_SCENE | 8 | 录屏进入隐私页面。 | 7636| SCREENCAPTURE_STATE_EXIT_PRIVATE_SCENE | 9 | 录屏退出隐私页面。 | 7637| SCREENCAPTURE_STATE_STOPPED_BY_USER_SWITCHES | 10 | 系统用户切换,录屏中断。 | 7638 7639## AVScreenCaptureRecordConfig<sup>12+</sup> 7640 7641表示录屏参数配置。 7642 7643**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7644 7645| 名称 | 类型 | 必填 | 说明 | 7646| ----------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 7647| fd | number | 是 | 录制输出的文件fd。 | 7648| frameWidth | number | 否 | 录屏的视频宽度,默认屏幕宽度,根据不同屏幕默认值不同,单位px。 | 7649| frameHeight | number | 否 | 录屏的视频高度,默认屏幕高度,根据不同屏幕默认值不同,单位px。 | 7650| videoBitrate | number | 否 | 录屏的视频比特率,默认10000000。 | 7651| audioSampleRate | number | 否 | 录屏的音频采样率,内录的系统音和外录的麦克风都是用此采样率,默认48000,仅支持设置48000或16000。 | 7652| audioChannelCount | number | 否 | 录屏的音频通道数,内录的系统音和外录的麦克风都是用此通道数,默认2声道,仅支持设置1或2声道。 | 7653| audioBitrate | number | 否 | 录屏的音频比特率,内录的系统音和外录的麦克风都是用此比特率,默认96000。 | 7654| preset | [AVScreenCaptureRecordPreset](#avscreencapturerecordpreset12) | 否 | 录屏使用的编码和封装格式,默认SCREEN_RECORD_PRESET_H264_AAC_MP4格式。 | 7655 7656## AVScreenCaptureRecorder<sup>12+</sup> 7657 7658屏幕录制管理类,用于进行屏幕录制。在调用AVScreenCaptureRecorder的方法前,需要先通过[createAVScreenCaptureRecorder()](#mediacreateavscreencapturerecorder12)创建一个AVScreenCaptureRecorder实例。 7659 7660### init<sup>12+</sup> 7661 7662init(config: AVScreenCaptureRecordConfig): Promise\<void> 7663 7664异步方式进行录屏初始化,设置录屏参数。通过Promise获取返回值。 7665 7666**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7667 7668**参数:** 7669 7670| 参数名 | 类型 | 必填 | 说明 | 7671| ------ | ------------------------------------------------------------ | ---- | ------------------------ | 7672| config | [AVScreenCaptureRecordConfig](#avscreencapturerecordconfig12) | 是 | 配置屏幕录制的相关参数。 | 7673 7674**返回值:** 7675 7676| 类型 | 说明 | 7677| -------------- | ----------------------------------- | 7678| Promise\<void> | 异步录屏初始化方法的Promise返回值。 | 7679 7680**错误码:** 7681 7682| 错误码ID | 错误信息 | 7683| -------- | ---------------------------------------------- | 7684| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. Return by promise. | 7685| 5400103 | IO error. Return by promise. | 7686| 5400105 | Service died. Return by promise. | 7687 7688**示例:** 7689 7690```ts 7691import { BusinessError } from '@kit.BasicServicesKit'; 7692 7693let avCaptureConfig: media.AVScreenCaptureRecordConfig = { 7694 fd: 0, // 文件需要先有调用者创建,赋予写权限,将文件fd传给此参数 7695 frameWidth: 640, 7696 frameHeight: 480 7697 // 补充其他参数 7698} 7699 7700avScreenCaptureRecorder.init(avCaptureConfig).then(() => { 7701 console.info('Succeeded in initing avScreenCaptureRecorder'); 7702}).catch((err: BusinessError) => { 7703 console.info('Failed to init avScreenCaptureRecorder, error: ' + err.message); 7704}) 7705``` 7706 7707### startRecording<sup>12+</sup> 7708 7709startRecording(): Promise\<void> 7710 7711异步方式开始录屏。通过Promise获取返回值。 7712 7713**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7714 7715**返回值:** 7716 7717| 类型 | 说明 | 7718| -------------- | -------------------------------- | 7719| Promise\<void> | 异步开始录屏方法的Promise返回值. | 7720 7721**错误码:** 7722 7723| 错误码ID | 错误信息 | 7724| -------- | -------------------------------- | 7725| 5400103 | IO error. Return by promise. | 7726| 5400105 | Service died. Return by promise. | 7727 7728**示例:** 7729 7730```ts 7731import { BusinessError } from '@kit.BasicServicesKit'; 7732 7733avScreenCaptureRecorder.startRecording().then(() => { 7734 console.info('Succeeded in starting avScreenCaptureRecorder'); 7735}).catch((err: BusinessError) => { 7736 console.info('Failed to start avScreenCaptureRecorder, error: ' + err.message); 7737}) 7738``` 7739 7740### stopRecording<sup>12+</sup> 7741 7742stopRecording(): Promise\<void> 7743 7744异步方式结束录屏。通过Promise获取返回值。 7745 7746**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7747 7748**返回值:** 7749 7750| 类型 | 说明 | 7751| -------------- | --------------------------------- | 7752| Promise\<void> | 异步结束录屏方法的Promise返回值。 | 7753 7754**错误码:** 7755 7756| 错误码ID | 错误信息 | 7757| -------- | -------------------------------- | 7758| 5400103 | IO error. Return by promise. | 7759| 5400105 | Service died. Return by promise. | 7760 7761**示例:** 7762 7763```ts 7764import { BusinessError } from '@kit.BasicServicesKit'; 7765 7766avScreenCaptureRecorder.stopRecording().then(() => { 7767 console.info('Succeeded in stopping avScreenCaptureRecorder'); 7768}).catch((err: BusinessError) => { 7769 console.info('Failed to stop avScreenCaptureRecorder, error: ' + err.message); 7770}) 7771``` 7772 7773### skipPrivacyMode<sup>12+</sup> 7774 7775skipPrivacyMode(windowIDs: Array\<number>): Promise\<void> 7776 7777录屏时,应用可对本应用的隐私窗口做安全豁免。通过Promise获取返回值。 7778如录屏时,用户在本应用进行输入密码等操作,应用不会进行黑屏处理。 7779 7780**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7781 7782**参数:** 7783 7784| 参数名 | 类型 | 必填 | 说明 | 7785| ------ | ------- | ---- | --------------------------------------------------------- | 7786| windowIDs | Array\<number> | 是 | 需要豁免隐私的窗口列表,包括主窗口id和子窗口id,窗口属性获取方法可以参考[窗口API引用](../apis-arkui/js-apis-window.md#getwindowproperties9) | 7787 7788**返回值:** 7789 7790| 类型 | 说明 | 7791| -------------- | -------------------------------- | 7792| Promise\<void> | 豁免隐私窗口的Promise返回值. | 7793 7794**错误码:** 7795 7796| 错误码ID | 错误信息 | 7797| -------- | -------------------------------- | 7798| 5400103 | IO error. Return by promise. | 7799| 5400105 | Service died. Return by promise. | 7800 7801**示例:** 7802 7803```ts 7804import { BusinessError } from '@kit.BasicServicesKit'; 7805 7806let windowIDs = []; 7807avScreenCaptureRecorder.skipPrivacyMode(windowIDs).then(() => { 7808 console.info('Succeeded in skipping privacy mode'); 7809}).catch((err: BusinessError) => { 7810 console.info('Failed to skip privacy mode, error: ' + err.message); 7811}) 7812``` 7813 7814### setMicEnabled<sup>12+</sup> 7815 7816setMicEnabled(enable: boolean): Promise\<void> 7817 7818异步方式设置麦克风开关。通过Promise获取返回值。 7819 7820**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7821 7822**参数:** 7823 7824| 参数名 | 类型 | 必填 | 说明 | 7825| ------ | ------- | ---- | --------------------------------------------------------- | 7826| enable | boolean | 是 | 麦克风开关控制,true代表麦克风打开,false代表麦克风关闭。 | 7827 7828**返回值:** 7829 7830| 类型 | 说明 | 7831| -------------- | --------------------------------------- | 7832| Promise\<void> | 异步设置麦克风开关方法的Promise返回值。 | 7833 7834**错误码:** 7835 7836| 错误码ID | 错误信息 | 7837| -------- | -------------------------------- | 7838| 5400103 | IO error. Return by promise. | 7839| 5400105 | Service died. Return by promise. | 7840 7841**示例:** 7842 7843```ts 7844import { BusinessError } from '@kit.BasicServicesKit'; 7845 7846avScreenCaptureRecorder.setMicEnabled(true).then(() => { 7847 console.info('Succeeded in setMicEnabled avScreenCaptureRecorder'); 7848}).catch((err: BusinessError) => { 7849 console.info('Failed to setMicEnabled avScreenCaptureRecorder, error: ' + err.message); 7850}) 7851``` 7852 7853### release<sup>12+</sup> 7854 7855release(): Promise\<void> 7856 7857异步方式释放录屏。通过Promise获取返回值。 7858 7859**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7860 7861**返回值:** 7862 7863| 类型 | 说明 | 7864| -------------- | --------------------------------- | 7865| Promise\<void> | 异步释放录屏方法的Promise返回值。 | 7866 7867**错误码:** 7868 7869| 错误码ID | 错误信息 | 7870| -------- | -------------------------------- | 7871| 5400103 | IO error. Return by promise. | 7872| 5400105 | Service died. Return by promise. | 7873 7874**示例:** 7875 7876```ts 7877import { BusinessError } from '@kit.BasicServicesKit'; 7878 7879avScreenCaptureRecorder.release().then(() => { 7880 console.info('Succeeded in releasing avScreenCaptureRecorder'); 7881}).catch((err: BusinessError) => { 7882 console.info('Faile to release avScreenCaptureRecorder, error: ' + err.message); 7883}) 7884``` 7885 7886### on('stateChange')<sup>12+</sup> 7887 7888on(type: 'stateChange', callback: Callback\<AVScreenCaptureStateCode>): void 7889 7890订阅录屏状态切换的事件,当状态发生的时候,会通过订阅的回调通知用户。用户只能订阅一个状态切换的回调方法,重复订阅时,以最后一次订阅的回调接口为准。 7891 7892**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7893 7894**参数:** 7895 7896| 参数名 | 类型 | 必填 | 说明 | 7897| -------- | -------- | ---- | ------------------------------------------------------------ | 7898| type | string | 是 | 状态切换事件回调类型,支持的事件:'stateChange'。 | 7899| callback | function | 是 | 状态切换事件回调方法,[AVScreenCaptureStateCode](#avscreencapturestatecode12)表示切换到的状态。 | 7900 7901**示例:** 7902 7903```ts 7904avScreenCaptureRecorder.on('stateChange', (state: media.AVScreenCaptureStateCode) => { 7905 console.info('avScreenCaptureRecorder stateChange to ' + state); 7906}) 7907``` 7908 7909### on('error')<sup>12+</sup> 7910 7911on(type: 'error', callback: ErrorCallback): void 7912 7913订阅AVScreenCaptureRecorder的错误事件,用户可以根据应用自身逻辑对错误事件进行处理。用户只能订阅一个错误事件的回调方法,重复订阅时,以最后一次订阅的回调接口为准。 7914 7915**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7916 7917**参数:** 7918 7919| 参数名 | 类型 | 必填 | 说明 | 7920| -------- | ------------- | ---- | --------------------------------------- | 7921| type | string | 是 | 错误事件回调类型,支持的事件:'error'。 | 7922| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录屏错误事件回调方法。 | 7923 7924**错误码:** 7925 7926| 错误码ID | 错误信息 | 7927| -------- | -------------------------------- | 7928| 201 | permission denied. | 7929| 5400103 | IO error. Return by ErrorCallback. | 7930| 5400105 | Service died. Return by ErrorCallback. | 7931 7932**示例:** 7933 7934```ts 7935avScreenCaptureRecorder.on('error', (err: BusinessError) => { 7936 console.error('avScreenCaptureRecorder error:' + err.message); 7937}) 7938``` 7939 7940### off('stateChange')<sup>12+</sup> 7941 7942 off(type: 'stateChange', callback?: Callback\<AVScreenCaptureStateCode>): void 7943 7944取消订阅状态切换回调事件。用户可以指定填入状态切换的回调方法来取消订阅。 7945 7946**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7947 7948**参数:** 7949 7950| 参数名 | 类型 | 必填 | 说明 | 7951| -------- | -------- | ---- | ------------------------------------------------------------ | 7952| type | string | 是 | 状态切换事件回调类型,支持的事件:'stateChange'。 | 7953| callback | function | 否 | 状态切换事件回调方法,[AVScreenCaptureStateCode](#avscreencapturestatecode12)表示切换到的状态,不填此参数则会取消最后一次订阅事件。 | 7954 7955**示例:** 7956 7957```ts 7958avScreenCaptureRecorder.off('stateChange'); 7959``` 7960 7961### off('error')<sup>12+</sup> 7962 7963off(type: 'error', callback?: ErrorCallback): void 7964 7965取消订阅错误回调事件。用户可以指定填入错误回调方法来取消订阅。 7966 7967**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7968 7969**参数:** 7970 7971| 参数名 | 类型 | 必填 | 说明 | 7972| -------- | -------- | ---- | ---------------------------------------------------------- | 7973| type | string | 是 | 状态切换事件回调类型,支持的事件:'error'。 | 7974| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 录屏错误事件回调方法,不填此参数则会取消最后一次订阅事件。 | 7975 7976**示例:** 7977 7978```ts 7979avScreenCaptureRecorder.off('error'); 7980```