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- 屏幕录制([AVScreenCaptureRecorder](#avscreencapturerecorder12)<sup>12+</sup>) 21 22## 导入模块 23 24```ts 25import { media } from '@kit.MediaKit'; 26``` 27 28## media.createAVPlayer<sup>9+</sup> 29 30createAVPlayer(callback: AsyncCallback\<AVPlayer>): void 31 32异步方式创建音视频播放实例,通过注册回调函数获取返回值。 33 34> **说明:** 35> 36> - 推荐单个应用创建的音视频播放实例(即音频、视频、音视频三类相加)不超过16个。<!--Del--> 37> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放实例。<!--DelEnd--> 38 39**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 40 41**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 42 43**参数:** 44 45| 参数名 | 类型 | 必填 | 说明 | 46| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | 47| callback | AsyncCallback\<[AVPlayer](#avplayer9)> | 是 | 回调函数。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 | 48 49**错误码:** 50 51以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 52 53| 错误码ID | 错误信息 | 54| -------- | ------------------------------ | 55| 5400101 | No memory. Return by callback. | 56 57**示例:** 58 59```ts 60import { BusinessError } from '@kit.BasicServicesKit'; 61 62let avPlayer: media.AVPlayer; 63media.createAVPlayer((error: BusinessError, video: media.AVPlayer) => { 64 if (video != null) { 65 avPlayer = video; 66 console.info('Succeeded in creating AVPlayer'); 67 } else { 68 console.error(`Failed to create AVPlayer, error message:${error.message}`); 69 } 70}); 71``` 72 73## media.createAVPlayer<sup>9+</sup> 74 75createAVPlayer(): Promise\<AVPlayer> 76 77异步方式创建音视频播放实例,通过Promise获取返回值。 78 79> **说明:** 80> 81> - 推荐单个应用创建的音视频播放实例(即音频、视频、音视频三类相加)不超过16个。<!--Del--> 82> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放实例。<!--DelEnd--> 83 84**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 85 86**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 87 88**返回值:** 89 90| 类型 | 说明 | 91| ------------------------------- | ------------------------------------------------------------ | 92| Promise\<[AVPlayer](#avplayer9)> | Promise对象。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 | 93 94**错误码:** 95 96以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 97 98| 错误码ID | 错误信息 | 99| -------- | ----------------------------- | 100| 5400101 | No memory. Return by promise. | 101 102**示例:** 103 104```ts 105import { BusinessError } from '@kit.BasicServicesKit'; 106 107let avPlayer: media.AVPlayer; 108media.createAVPlayer().then((video: media.AVPlayer) => { 109 if (video != null) { 110 avPlayer = video; 111 console.info('Succeeded in creating AVPlayer'); 112 } else { 113 console.error('Failed to create AVPlayer'); 114 } 115}).catch((error: BusinessError) => { 116 console.error(`Failed to create AVPlayer, error message:${error.message}`); 117}); 118``` 119 120## media.createAVRecorder<sup>9+</sup> 121 122createAVRecorder(callback: AsyncCallback\<AVRecorder>): void 123 124异步方式创建音视频录制实例。通过注册回调函数获取返回值。 125 126> **说明:** 127> 128> - 可创建的音视频录制实例不能超过2个。 129> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。 130 131**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 132 133**参数:** 134 135| 参数名 | 类型 | 必填 | 说明 | 136| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ | 137| callback | AsyncCallback\<[AVRecorder](#avrecorder9)> | 是 | 回调函数。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 | 138 139**错误码:** 140 141以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 142 143| 错误码ID | 错误信息 | 144| -------- | ------------------------------ | 145| 5400101 | No memory. Return by callback. | 146 147**示例:** 148 149```ts 150import { BusinessError } from '@kit.BasicServicesKit'; 151let avRecorder: media.AVRecorder; 152 153media.createAVRecorder((error: BusinessError, recorder: media.AVRecorder) => { 154 if (recorder != null) { 155 avRecorder = recorder; 156 console.info('Succeeded in creating AVRecorder'); 157 } else { 158 console.error(`Failed to create AVRecorder, error message:${error.message}`); 159 } 160}); 161``` 162 163## media.createAVRecorder<sup>9+</sup> 164 165createAVRecorder(): Promise\<AVRecorder> 166 167异步方式创建音视频录制实例。通过Promise获取返回值。 168 169> **说明:** 170> 171> - 可创建的音视频录制实例不能超过2个。 172> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。 173 174**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 175 176**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 177 178**返回值:** 179 180| 类型 | 说明 | 181| ------------------------------------ | ------------------------------------------------------------ | 182| Promise\<[AVRecorder](#avrecorder9)> | Promise对象。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 | 183 184**错误码:** 185 186以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 187 188| 错误码ID | 错误信息 | 189| -------- | ----------------------------- | 190| 5400101 | No memory. Return by promise. | 191 192**示例:** 193 194```ts 195import { BusinessError } from '@kit.BasicServicesKit'; 196 197let avRecorder: media.AVRecorder; 198media.createAVRecorder().then((recorder: media.AVRecorder) => { 199 if (recorder != null) { 200 avRecorder = recorder; 201 console.info('Succeeded in creating AVRecorder'); 202 } else { 203 console.error('Failed to create AVRecorder'); 204 } 205}).catch((error: BusinessError) => { 206 console.error(`Failed to create AVRecorder, error message:${error.message}`); 207}); 208``` 209 210## media.createAVTranscoder<sup>12+</sup> 211 212createAVTranscoder(): Promise\<AVTranscoder> 213 214异步方式创建视频转码实例,通过Promise获取返回值。 215 216> **说明:** 217 218> 可创建的视频转码实例不能超过2个。 219 220**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 221 222**返回值:** 223 224| 类型 | 说明 | 225| ------------------------------- | ------------------------------------------------------------ | 226| Promise\<[AVTranscoder](#avtranscoder12)> | Promise对象。异步返回AVTranscoder实例,失败时返回null。可用于视频转码。 | 227 228**错误码:** 229 230以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 231 232| 错误码ID | 错误信息 | 233| -------- | ----------------------------- | 234| 5400101 | No memory. Return by promise. | 235 236**示例:** 237 238```ts 239import { BusinessError } from '@kit.BasicServicesKit'; 240 241let avTranscoder: media.AVTranscoder; 242media.createAVTranscoder().then((transcoder: media.AVTranscoder) => { 243 if (transcoder != null) { 244 avTranscoder = transcoder; 245 console.info('Succeeded in creating AVTranscoder'); 246 } else { 247 console.error('Failed to create AVTranscoder'); 248 } 249}).catch((error: BusinessError) => { 250 console.error(`Failed to create AVTranscoder, error message:${error.message}`); 251}); 252``` 253 254## media.createAVMetadataExtractor<sup>11+</sup> 255 256createAVMetadataExtractor(callback: AsyncCallback\<AVMetadataExtractor>): void 257 258异步方式创建AVMetadataExtractor实例,通过注册回调函数获取返回值。 259 260**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 261 262**参数:** 263 264| 参数名 | 类型 | 必填 | 说明 | 265| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | 266| callback | AsyncCallback\<[AVMetadataExtractor](#avmetadataextractor11)> | 是 | 回调函数。当创建AVMetadataExtractor实例成功,err为undefined,data为获取到的AVMetadataExtractor实例,否则为错误对象。 | 267 268**错误码:** 269 270以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 271 272| 错误码ID | 错误信息 | 273| -------- | ------------------------------ | 274| 5400101 | No memory. Returned by callback. | 275 276**示例:** 277 278```ts 279import { BusinessError } from '@kit.BasicServicesKit'; 280 281let avMetadataExtractor: media.AVMetadataExtractor; 282media.createAVMetadataExtractor((error: BusinessError, extractor: media.AVMetadataExtractor) => { 283 if (extractor != null) { 284 avMetadataExtractor = extractor; 285 console.info('Succeeded in creating AVMetadataExtractor'); 286 } else { 287 console.error(`Failed to create AVMetadataExtractor, error message:${error.message}`); 288 } 289}); 290``` 291 292## media.createAVMetadataExtractor<sup>11+</sup> 293 294createAVMetadataExtractor(): Promise\<AVMetadataExtractor> 295 296异步方式创建AVMetadataExtractor实例,通过Promise获取返回值。 297 298**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 299 300**错误码:** 301 302以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 303 304| 错误码ID | 错误信息 | 305| -------- | ------------------------------ | 306| 5400101 | No memory. Returned by promise. | 307 308**示例:** 309 310```ts 311import { BusinessError } from '@kit.BasicServicesKit'; 312 313let avMetadataExtractor: media.AVMetadataExtractor; 314media.createAVMetadataExtractor().then((extractor: media.AVMetadataExtractor) => { 315 if (extractor != null) { 316 avMetadataExtractor = extractor; 317 console.info('Succeeded in creating AVMetadataExtractor'); 318 } else { 319 console.error(`Failed to create AVMetadataExtractor`); 320 } 321}).catch((error: BusinessError) => { 322 console.error(`Failed to create AVMetadataExtractor, error message:${error.message}`); 323}); 324``` 325 326## media.createSoundPool<sup>10+</sup> 327 328createSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo, callback: AsyncCallback\<SoundPool>): void 329 330创建音频池实例,使用callback方式异步获取返回值。 331 332**系统能力:** SystemCapability.Multimedia.Media.SoundPool 333 334**参数:** 335 336| 参数名 | 类型 | 必填 | 说明 | 337| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ | 338| maxStreams | number | 是 | soundPool实例的最大播放的流数 | 339| 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播放短音时为混音模式,不会打断其他音频播放。 | 340| callback | AsyncCallback<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | 是 | 回调函数。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 | 341 342**错误码:** 343 344以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 345 346| 错误码ID | 错误信息 | 347| -------- | ------------------------------ | 348| 5400101 | No memory. Return by callback. | 349 350**示例:** 351 352```js 353import { audio } from '@kit.AudioKit'; 354 355let soundPool: media.SoundPool; 356let audioRendererInfo: audio.AudioRendererInfo = { 357 usage : audio.StreamUsage.STREAM_USAGE_MUSIC, 358 rendererFlags : 0 359} 360 361media.createSoundPool(5, audioRendererInfo, (error, soundPool_: media.SoundPool) => { 362 if (error) { 363 console.error(`Failed to createSoundPool`) 364 return; 365 } else { 366 soundPool = soundPool_; 367 console.info(`Succeeded in createSoundPool`) 368 } 369}); 370``` 371 372## media.createSoundPool<sup>10+</sup> 373 374createSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo): Promise\<SoundPool> 375 376创建音频池实例,通过Promise获取返回值。 377 378**系统能力:** SystemCapability.Multimedia.Media.SoundPool 379 380**参数:** 381 382| 参数名 | 类型 | 必填 | 说明 | 383| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ | 384| maxStreams | number | 是 | soundPool实例的最大播放的流数 | 385| audioRenderInfo | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8) | 是 | 音频播放参数信息 | 386 387**返回值:** 388 389| 类型 | 说明 | 390| ----------------------------------------- | ------------------------------------------------------------ | 391| Promise<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | Promise对象。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 | 392 393**错误码:** 394 395以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 396 397| 错误码ID | 错误信息 | 398| -------- | ----------------------------- | 399| 5400101 | No memory. Return by promise. | 400 401**示例:** 402 403```js 404import { audio } from '@kit.AudioKit'; 405import { BusinessError } from '@kit.BasicServicesKit'; 406 407let soundPool: media.SoundPool; 408let audioRendererInfo: audio.AudioRendererInfo = { 409 usage : audio.StreamUsage.STREAM_USAGE_MUSIC, 410 rendererFlags : 0 411} 412 413media.createSoundPool(5, audioRendererInfo).then((soundpool_: media.SoundPool) => { 414 if (soundpool_ != null) { 415 soundPool = soundpool_; 416 console.info('Succceeded in creating SoundPool'); 417 } else { 418 console.error('Failed to create SoundPool'); 419 } 420}, (error: BusinessError) => { 421 console.error(`soundpool catchCallback, error message:${error.message}`); 422}); 423``` 424 425## media.createAVScreenCaptureRecorder<sup>12+</sup> 426 427createAVScreenCaptureRecorder(): Promise\<AVScreenCaptureRecorder> 428 429创建屏幕录制实例,通过Promise获取返回值。 430 431**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 432 433**返回值:** 434 435| 类型 | 说明 | 436| ------------------------------------------------------------ | ------------------------------------------------------------ | 437| Promise\<[AVScreenCaptureRecorder](#avscreencapturerecorder12)> | Promise对象。异步返回AVScreenCaptureRecorder实例,失败时返回null。可用于进行屏幕录制。 | 438 439**错误码:** 440 441| 错误码ID | 错误信息 | 442| -------- | ------------------------------ | 443| 5400101 | No memory. Return by promise. | 444 445**示例:** 446 447```ts 448import { BusinessError } from '@kit.BasicServicesKit'; 449 450let avScreenCaptureRecorder: media.AVScreenCaptureRecorder; 451media.createAVScreenCaptureRecorder().then((captureRecorder: media.AVScreenCaptureRecorder) => { 452 if (captureRecorder != null) { 453 avScreenCaptureRecorder = captureRecorder; 454 console.info('Succeeded in createAVScreenCaptureRecorder'); 455 } else { 456 console.error('Failed to createAVScreenCaptureRecorder'); 457 } 458}).catch((error: BusinessError) => { 459 console.error(`createAVScreenCaptureRecorder catchCallback, error message:${error.message}`); 460}); 461``` 462 463## SoundPool<sup>10+</sup> 464 465type SoundPool = _SoundPool 466 467音频池,提供了系统声音的加载、播放、音量设置、循环设置、停止播放、资源卸载等功能。 468 469**系统能力:** SystemCapability.Multimedia.Media.SoundPool 470 471| 类型 | 说明 | 472| -------- | ------------------------------ | 473| [SoundPool](js-apis-inner-multimedia-soundPool.md#soundpool) | 音频池,提供了系统声音的加载、播放、音量设置、循环设置、停止播放、资源卸载等功能。 | 474 475## PlayParameters<sup>10+</sup> 476 477type PlayParameters = _PlayParameters 478 479表示音频池播放参数设置。 480 481**系统能力:** SystemCapability.Multimedia.Media.SoundPool 482 483| 类型 | 说明 | 484| -------- | ------------------------------ | 485| [PlayParameters](js-apis-inner-multimedia-soundPool.md#playparameters) | 表示音频池播放参数设置。 | 486 487## AVErrorCode<sup>9+</sup> 488 489[媒体错误码](errorcode-media.md)类型枚举 490 491**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 492 493**系统能力:** SystemCapability.Multimedia.Media.Core 494 495| 名称 | 值 | 说明 | 496| :------------------------------------ | ------- | ------------------------------------ | 497| AVERR_OK | 0 | 表示操作成功。 | 498| AVERR_NO_PERMISSION | 201 | 表示无权限执行此操作。 | 499| AVERR_INVALID_PARAMETER | 401 | 表示传入入参无效。 | 500| AVERR_UNSUPPORT_CAPABILITY | 801 | 表示当前版本不支持该API能力。 | 501| AVERR_NO_MEMORY | 5400101 | 表示系统内存不足或服务数量达到上限。 | 502| AVERR_OPERATE_NOT_PERMIT | 5400102 | 表示当前状态不允许或无权执行此操作。 | 503| AVERR_IO | 5400103 | 表示数据流异常信息。 | 504| AVERR_TIMEOUT | 5400104 | 表示系统或网络响应超时。 | 505| AVERR_SERVICE_DIED | 5400105 | 表示服务进程死亡。 | 506| AVERR_UNSUPPORT_FORMAT | 5400106 | 表示不支持当前媒体资源的格式。 | 507| AVERR_AUDIO_INTERRUPTED<sup>11+</sup> | 5400107 | 表示音频焦点被抢占 | 508| AVERR_IO_HOST_NOT_FOUND<sup>14+</sup> | 5411001 | 表示解析或链接服务端地址错误。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 509| AVERR_IO_CONNECTION_TIMEOUT<sup>14+</sup> | 5411002 | 表示网络连接超时。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 510| AVERR_IO_NETWORK_ABNORMAL<sup>14+</sup> | 5411003 | 表示网络异常导致的数据或链路异常。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 511| AVERR_IO_NETWORK_UNAVAILABLE<sup>14+</sup> | 5411004 | 表示网络被禁用。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 512| AVERR_IO_NO_PERMISSION<sup>14+</sup> | 5411005 | 表示无访问权限。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 513| AVERR_IO_REQUEST_DENIED<sup>14+</sup> | 5411006 | 表示客户端请求参数错误或超出处理能力。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 514| AVERR_IO_RESOURCE_NOT_FOUND<sup>14+</sup> | 5411007 | 表示无可用网络资源。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 515| AVERR_IO_SSL_CLIENT_CERT_NEEDED<sup>14+</sup> | 5411008 | 表示服务端校验客户端证书失败。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 516| AVERR_IO_SSL_CONNECTION_FAILED<sup>14+</sup> | 5411009 | 表示SSL连接失败。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 517| AVERR_IO_SSL_SERVER_CERT_UNTRUSTED<sup>14+</sup> | 5411010 | 表示客户端校验服务端证书失败。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 518| AVERR_IO_UNSUPPORTED_REQUEST<sup>14+</sup> | 5411011 | 表示网络协议的原因导致请求不受支持。 <br> **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | 519 520## MediaType<sup>8+</sup> 521 522媒体类型枚举。 523 524**系统能力:** SystemCapability.Multimedia.Media.Core 525 526| 名称 | 值 | 说明 | 527| -------------- | --------------------- | ------------------- | 528| MEDIA_TYPE_AUD | 0 | 表示音频。 <br> **原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 | 529| MEDIA_TYPE_VID | 1 | 表示视频。 <br> **原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 | 530| MEDIA_TYPE_SUBTITLE<sup>12+</sup> | 2 | 表示字幕。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 531 532## CodecMimeType<sup>8+</sup> 533 534Codec MIME类型枚举。 535 536**系统能力:** SystemCapability.Multimedia.Media.Core 537 538| 名称 | 值 | 说明 | 539| ------------ | --------------------- | ------------------------ | 540| VIDEO_H263 | 'video/h263' | 表示视频/h263类型。 | 541| VIDEO_AVC | 'video/avc' | 表示视频/avc类型。 | 542| VIDEO_MPEG2 | 'video/mpeg2' | 表示视频/mpeg2类型。 | 543| VIDEO_MPEG4 | 'video/mp4v-es' | 表示视频/mpeg4类型。 | 544| VIDEO_VP8 | 'video/x-vnd.on2.vp8' | 表示视频/vp8类型。 | 545| VIDEO_HEVC<sup>11+</sup> | 'video/hevc' | 表示视频/H265类型。| 546| AUDIO_AAC | 'audio/mp4a-latm' | 表示音频/mp4a-latm类型。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 547| AUDIO_VORBIS | 'audio/vorbis' | 表示音频/vorbis类型。 | 548| AUDIO_FLAC | 'audio/flac' | 表示音频/flac类型。 | 549| AUDIO_MP3<sup>12+</sup> | 'audio/mpeg' | 表示音频/mpeg类型。 | 550| AUDIO_G711MU<sup>12+</sup> | 'audio/g711mu' | 表示音频/G711-mulaw类型。 | 551 552## MediaDescriptionKey<sup>8+</sup> 553 554媒体信息描述枚举。 555 556**系统能力:** SystemCapability.Multimedia.Media.Core 557 558| 名称 | 值 | 说明 | 559| ------------------------ | --------------- | ------------------------------------------------------------ | 560| MD_KEY_TRACK_INDEX | 'track_index' | 表示轨道序号,其对应键值类型为number。 <br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 561| MD_KEY_TRACK_TYPE | 'track_type' | 表示轨道类型,其对应键值类型为number,参考[MediaType](#mediatype8)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 562| MD_KEY_CODEC_MIME | 'codec_mime' | 表示codec_mime类型,其对应键值类型为string。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 563| MD_KEY_DURATION | 'duration' | 表示媒体时长,其对应键值类型为number,单位为毫秒(ms)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 564| MD_KEY_BITRATE | 'bitrate' | 表示比特率,其对应键值类型为number,单位为比特率(bps)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 565| MD_KEY_WIDTH | 'width' | 表示视频宽度,其对应键值类型为number,单位为像素(px)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 566| MD_KEY_HEIGHT | 'height' | 表示视频高度,其对应键值类型为number,单位为像素(px)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 567| MD_KEY_FRAME_RATE | 'frame_rate' | 表示视频帧率,其对应键值类型为number,单位为每100秒的帧数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 568| MD_KEY_AUD_CHANNEL_COUNT | 'channel_count' | 表示声道数,其对应键值类型为number。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 569| MD_KEY_AUD_SAMPLE_RATE | 'sample_rate' | 表示采样率,其对应键值类型为number,单位为赫兹(Hz)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 570| MD_KEY_AUD_SAMPLE_DEPTH<sup>12+</sup> | 'sample_depth' | 表示位深,其对应键值类型为number,单位为位(bit)。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 571| MD_KEY_LANGUAGE<sup>12+</sup> | 'language' | 表示字幕语言,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 572| MD_KEY_TRACK_NAME<sup>12+</sup> | 'track_name' | 表示track名称,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 573| MD_KEY_HDR_TYPE<sup>12+</sup> | 'hdr_type' | 表示视频轨类型,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 574 575## PlaybackInfoKey<sup>12+</sup> 576 577播放信息描述枚举。 578 579**系统能力:** SystemCapability.Multimedia.Media.Core 580 581| 名称 | 值 | 说明 | 582| ------------------------ | --------------- | ------------------------------------------------------------ | 583| SERVER_IP_ADDRESS | 'server_ip_address' | 表示服务器IP地址,其对应键值类型为string。 | 584| AVG_DOWNLOAD_RATE | 'average_download_rate'| 表示平均下载速率,其对应键值类型为number,单位为比特率(bps)。 | 585| DOWNLOAD_RATE | 'download_rate' | 表示1s的下载速率,其对应键值类型为number,单位为比特率(bps)。| 586| IS_DOWNLOADING | 'is_downloading' | 表示下载状态,1表示在下载状态,0表示非下载状态(下载完成),其对应键值类型为number。| 587| BUFFER_DURATION | 'buffer_duration' | 表示缓存数据的可播放时长,其对应键值类型为number,单位为秒(s)。| 588 589## BufferingInfoType<sup>8+</sup> 590 591缓存事件类型枚举。 592 593**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 594 595**系统能力:** SystemCapability.Multimedia.Media.Core 596 597| 名称 | 值 | 说明 | 598| ----------------- | ---- | -------------------------------- | 599| BUFFERING_START | 1 | 表示开始缓冲。当上报BUFFERING_START时,播放器会暂停播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 600| BUFFERING_END | 2 | 表示结束缓冲。当上报BUFFERING_END时,播放器会恢复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 601| BUFFERING_PERCENT | 3 | 表示缓冲百分比。可参考该事件感知缓冲进度。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 602| CACHED_DURATION | 4 | 表示已缓冲数据预估可播放时长,单位为毫秒(ms)。缓冲区中的数据变化量大于500ms,上报一次。可参考该事件做进度条。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 603 604## StateChangeReason<sup>9+</sup> 605 606表示播放或录制实例状态机切换原因的枚举,伴随state一起上报。 607 608**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 609 610**系统能力:** SystemCapability.Multimedia.Media.Core 611 612| 名称 | 值 | 说明 | 613| ---------- | ---- | ------------------------------------------------------------ | 614| USER | 1 | 表示用户行为造成的状态切换,由用户或客户端主动调用接口产生。 | 615| BACKGROUND | 2 | 表示后台系统行为造成的状态切换,比如应用未注册播控中心权限,退到后台时被系统强制暂停或停止。 | 616 617## AVPlayer<sup>9+</sup> 618 619播放管理类,用于管理和播放媒体资源。在调用AVPlayer的方法前,需要先通过[createAVPlayer()](#mediacreateavplayer9)构建一个AVPlayer实例。 620 621Audio/Video播放demo可参考:[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)、[视频播放开发指导](../../media/media/video-playback.md)。 622 623> **说明:** 624> 625> 在使用AVPlayer实例的方法时,建议开发者注册相关回调,主动获取当前状态变化。 626> - [on('stateChange')](#onstatechange9):监听播放状态机AVPlayerState切换。 627> - [on('error')](#onerror9):监听错误事件。 628 629### 属性 630 631**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 632 633| 名称 | 类型 | 只读 | 可选 | 说明 | 634| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 635| 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开始,该接口支持在原子化服务中使用。 | 636| 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开始,该接口支持在原子化服务中使用。 | 637| 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开始,该接口支持在原子化服务中使用。 | 638| 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开始,该接口支持在原子化服务中使用。 | 639| loop<sup>9+</sup> | boolean | 否 | 否 | 视频循环播放属性,默认'false',设置为'true'表示循环播放,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>直播场景不支持loop设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 640| videoScaleType<sup>9+</sup> | [VideoScaleType](#videoscaletype9) | 否 | 是 | 视频缩放模式,默认VIDEO_SCALE_TYPE_FIT,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 641| 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开始,该接口支持在原子化服务中使用。| 642| 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开始,该接口支持在原子化服务中使用。| 643| 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开始,该接口支持在原子化服务中使用。| 644| state<sup>9+</sup> | [AVPlayerState](#avplayerstate9) | 是 | 否 | 音视频播放的状态,全状态有效,可查询参数。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 645| currentTime<sup>9+</sup> | number | 是 | 否 | 视频的当前播放位置,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 646| duration<sup>9+</sup> | number | 是 | 否 | 视频时长,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 647| width<sup>9+</sup> | number | 是 | 否 | 视频宽,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 648| height<sup>9+</sup> | number | 是 | 否 | 视频高,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 649 650### on('stateChange')<sup>9+</sup> 651 652on(type: 'stateChange', callback: OnAVPlayerStateChangeHandle): void 653 654监听播放状态机AVPlayerState切换的事件。 655 656**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 657 658**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 659 660**参数:** 661 662| 参数名 | 类型 | 必填 | 说明 | 663| -------- | -------- | ---- | ------------------------------------------------------------ | 664| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 665| callback | [OnAVPlayerStateChangeHandle](#onavplayerstatechangehandle12) | 是 | 状态机切换事件回调方法。 | 666 667**示例:** 668 669```ts 670avPlayer.on('stateChange', async (state: string, reason: media.StateChangeReason) => { 671 switch (state) { 672 case 'idle': 673 console.info('state idle called'); 674 break; 675 case 'initialized': 676 console.info('initialized prepared called'); 677 break; 678 case 'prepared': 679 console.info('state prepared called'); 680 break; 681 case 'playing': 682 console.info('state playing called'); 683 break; 684 case 'paused': 685 console.info('state paused called'); 686 break; 687 case 'completed': 688 console.info('state completed called'); 689 break; 690 case 'stopped': 691 console.info('state stopped called'); 692 break; 693 case 'released': 694 console.info('state released called'); 695 break; 696 case 'error': 697 console.info('state error called'); 698 break; 699 default: 700 console.info('unknown state :' + state); 701 break; 702 } 703}) 704``` 705 706### off('stateChange')<sup>9+</sup> 707 708off(type: 'stateChange', callback?: OnAVPlayerStateChangeHandle): void 709 710取消监听播放状态机[AVPlayerState](#avplayerstate9)切换的事件。 711 712**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 713 714**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 715 716**参数:** 717 718| 参数名 | 类型 | 必填 | 说明 | 719| ------ | ------ | ---- | ----------------------------------------------------- | 720| type | string | 是 | 状态机切换事件回调类型,取消注册的事件:'stateChange' | 721| callback | [OnAVPlayerStateChangeHandle](#onavplayerstatechangehandle12) | 否 | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 | 722 723**示例:** 724 725```ts 726avPlayer.off('stateChange') 727``` 728 729### on('error')<sup>9+</sup> 730 731on(type: 'error', callback: ErrorCallback): void 732 733监听[AVPlayer](#avplayer9)的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVPlayerState](#avplayerstate9)也切至error状态,用户需要通过[reset()](#reset9)或者[release()](#release9)退出播放操作。 734 735**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 736 737**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 738 739**参数:** 740 741| 参数名 | 类型 | 必填 | 说明 | 742| -------- | -------- | ---- | ------------------------------------------------------------ | 743| type | string | 是 | 错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。 | 744| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。 | 745 746**错误码:** 747 748以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 749 750在API version 9-13,针对网络、服务器等数据流异常,接口上报5400103;从API version 14开始,对应错误细化为错误码5411001-5411011。 751 752| 错误码ID | 错误信息 | 753| -------- | --------------------- | 754| 201 | Permission denied | 755| 401 | The parameter check failed. | 756| 801 | Capability not supported. | 757| 5400101 | No memory. | 758| 5400102 | Operation not allowed.| 759| 5400103 | I/O error | 760| 5400104 | Time out | 761| 5400105 | Service died. | 762| 5400106 | Unsupported format. | 763| 5411001 | IO can not find host. | 764| 5411002 | IO connection timeout. | 765| 5411003 | IO network abnormal. | 766| 5411004 | IO network unavailable. | 767| 5411005 | IO no permission. | 768| 5411006 | IO request denied. | 769| 5411007 | IO resource not found. | 770| 5411008 | IO SSL client cert needed. | 771| 5411009 | IO SSL connect fail. | 772| 5411010 | IO SSL server cert untrusted. | 773| 5411011 | IO unsupported request. | 774 775**示例:** 776 777```ts 778import { BusinessError } from '@kit.BasicServicesKit'; 779 780avPlayer.on('error', (error: BusinessError) => { 781 console.info('error happened,and error message is :' + error.message) 782 console.info('error happened,and error code is :' + error.code) 783}) 784``` 785 786### off('error')<sup>9+</sup> 787 788off(type: 'error', callback?: ErrorCallback): void 789 790取消监听播放的错误事件。 791 792**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 793 794**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 795 796**参数:** 797 798| 参数名 | 类型 | 必填 | 说明 | 799| ------ | ------ | ---- | ----------------------------------------- | 800| type | string | 是 | 错误事件回调类型,取消注册的事件:'error' | 801| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。<br/>从API version 12开始支持此参数。 | 802 803**示例:** 804 805```ts 806avPlayer.off('error') 807``` 808 809### setMediaSource<sup>12+</sup> 810 811setMediaSource(src:MediaSource, strategy?: PlaybackStrategy): Promise\<void> 812 813流媒体预下载资源设置,下载url对应的流媒体数据,并暂存在内存中。[视频播放开发指导](../../media/media/video-playback.md)。通过Promise获取返回值。 814 815**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 816 817**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 818 819**参数:** 820 821| 参数名 | 类型 | 必填 | 说明 | 822| -------- | -------- | ---- | -------------------- | 823| src | [MediaSource](#mediasource12) | 是 | 流媒体预下载媒体来源。 | 824| strategy | [PlaybackStrategy](#playbackstrategy12) | 否 | 流媒体预下载播放策略。 | 825 826**返回值:** 827 828| 类型 | 说明 | 829| -------------- | ------------------------------------------ | 830| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 831 832**错误码:** 833 834以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 835 836| 错误码ID | 错误信息 | 837| -------- | ----------------------------------------- | 838| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 839| 5400102 | Operation not allowed. Return by promise. | 840 841**示例:** 842 843<!--code_no_check--> 844```ts 845let player = await media.createAVPlayer(); 846let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"}; 847let mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx", headers); 848let playStrategy : media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 3, preferredHdr: false}; 849player.setMediaSource(mediaSource, playStrategy); 850``` 851 852### setPlaybackStrategy<sup>12+</sup> 853 854setPlaybackStrategy(strategy: PlaybackStrategy): Promise\<void> 855 856设置播放策略,只能在initialized状态下调用。 857 858**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 859 860**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 861 862**参数:** 863 864| 参数名 | 类型 | 必填 | 说明 | 865| -------- | -------- | ---- | -------------------- | 866| strategy | [PlaybackStrategy](#playbackstrategy12) | 是 | 播放策略。 | 867 868**返回值:** 869 870| 类型 | 说明 | 871| -------------- | ------------------------------------ | 872| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 873 874**错误码:** 875 876以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 877 878| 错误码ID | 错误信息 | 879| -------- | ----------------------------------------- | 880| 401 | Parameter error. Possible causes: 1. Incorrect parameter types. 2. Parameter verification failed. | 881| 5400102 | Operation not allowed. Return by promise. | 882 883**示例:** 884 885<!--code_no_check--> 886```ts 887import { common } from '@kit.AbilityKit'; 888 889let player = await media.createAVPlayer(); 890let context = getContext(this) as common.UIAbilityContext 891let fileDescriptor = await context.resourceManager.getRawFd('xxx.mp4') 892player.fdSrc = fileDescriptor 893let playStrategy : media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 3, 894 preferredHdr: false, mutedMediaType: media.MediaType.MEDIA_TYPE_AUD}; 895player.setPlaybackStrategy(playStrategy); 896``` 897 898### prepare<sup>9+</sup> 899 900prepare(callback: AsyncCallback\<void>): void 901 902准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。使用callback方式异步获取返回值。 903 904**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 905 906**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 907 908**参数:** 909 910| 参数名 | 类型 | 必填 | 说明 | 911| -------- | -------- | ---- | -------------------- | 912| callback | AsyncCallback\<void> | 是 | 准备播放的回调方法。 | 913 914**错误码:** 915 916以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 917 918| 错误码ID | 错误信息 | 919| -------- | ------------------------------------------ | 920| 5400102 | Operation not allowed. Return by callback. | 921| 5400106 | Unsupported format. Return by callback. | 922 923**示例:** 924 925```ts 926import { BusinessError } from '@kit.BasicServicesKit'; 927 928avPlayer.prepare((err: BusinessError) => { 929 if (err) { 930 console.error('Failed to prepare,error message is :' + err.message) 931 } else { 932 console.info('Succeeded in preparing'); 933 } 934}) 935``` 936 937### prepare<sup>9+</sup> 938 939prepare(): Promise\<void> 940 941准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。通过Promise获取返回值。 942 943**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 944 945**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 946 947**返回值:** 948 949| 类型 | 说明 | 950| -------------- | ------------------------- | 951| Promise\<void> | 准备播放的Promise返回值。 | 952 953**错误码:** 954 955以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 956 957| 错误码ID | 错误信息 | 958| -------- | ----------------------------------------- | 959| 5400102 | Operation not allowed. Return by promise. | 960| 5400106 | Unsupported format. Return by promise. | 961 962**示例:** 963 964```ts 965import { BusinessError } from '@kit.BasicServicesKit'; 966 967avPlayer.prepare().then(() => { 968 console.info('Succeeded in preparing'); 969}, (err: BusinessError) => { 970 console.error('Failed to prepare,error message is :' + err.message) 971}) 972``` 973 974### setMediaMuted<sup>12+</sup> 975 976setMediaMuted(mediaType: MediaType, muted: boolean ): Promise\<void> 977 978设置音频静音/取消音频静音。只能在prepared/playing/paused/completed状态下调用。仅支持设置mediaType为音频格式。 979 980**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 981 982**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 983 984**参数:** 985 986| 参数名 | 类型 | 必填 | 说明 | 987| -------- | -------- | ---- | -------------------- | 988| mediaType | [MediaType](#mediatype8) | 是 | 播放策略。 | 989| muted | boolean | 是 | 是否静音播放。 | 990 991**返回值:** 992 993| 类型 | 说明 | 994| -------------- | ------------------------- | 995| Promise\<void> | 准备播放的Promise返回值。 | 996 997**错误码:** 998 999以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 1000 1001| 错误码ID | 错误信息 | 1002| -------- | ----------------------------------------- | 1003| 401 | The parameter check failed. Return by promise. | 1004| 5400102 | Operation not allowed. Return by promise. | 1005 1006**示例:** 1007 1008```ts 1009import { BusinessError } from '@kit.BasicServicesKit'; 1010 1011avPlayer.prepare().then(() => { 1012 console.info('Succeeded in preparing'); 1013 avPlayer.setMediaMuted(media.MediaType.MEDIA_TYPE_AUD, true) 1014}, (err: BusinessError) => { 1015 console.error('Failed to prepare,error message is :' + err.message) 1016}) 1017``` 1018 1019### play<sup>9+</sup> 1020 1021play(callback: AsyncCallback\<void>): void 1022 1023开始播放音视频资源,只能在prepared/paused/completed状态调用。使用callback方式异步获取返回值。 1024 1025**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1026 1027**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1028 1029**参数:** 1030 1031| 参数名 | 类型 | 必填 | 说明 | 1032| -------- | -------- | ---- | -------------------- | 1033| callback | AsyncCallback\<void> | 是 | 开始播放的回调方法。 | 1034 1035**错误码:** 1036 1037以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 1038 1039| 错误码ID | 错误信息 | 1040| -------- | ------------------------------------------ | 1041| 5400102 | Operation not allowed. Return by callback. | 1042 1043**示例:** 1044 1045```ts 1046import { BusinessError } from '@kit.BasicServicesKit'; 1047 1048avPlayer.play((err: BusinessError) => { 1049 if (err) { 1050 console.error('Failed to play,error message is :' + err.message) 1051 } else { 1052 console.info('Succeeded in playing'); 1053 } 1054}) 1055``` 1056 1057### play<sup>9+</sup> 1058 1059play(): Promise\<void> 1060 1061开始播放音视频资源,只能在prepared/paused/completed状态调用。通过Promise获取返回值。 1062 1063**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1064 1065**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1066 1067**返回值:** 1068 1069| 类型 | 说明 | 1070| -------------- | ------------------------- | 1071| Promise\<void> | 开始播放的Promise返回值。 | 1072 1073**错误码:** 1074 1075以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1076 1077| 错误码ID | 错误信息 | 1078| -------- | ----------------------------------------- | 1079| 5400102 | Operation not allowed. Return by promise. | 1080 1081**示例:** 1082 1083```ts 1084import { BusinessError } from '@kit.BasicServicesKit'; 1085 1086avPlayer.play().then(() => { 1087 console.info('Succeeded in playing'); 1088}, (err: BusinessError) => { 1089 console.error('Failed to play,error message is :' + err.message) 1090}) 1091``` 1092 1093### pause<sup>9+</sup> 1094 1095pause(callback: AsyncCallback\<void>): void 1096 1097暂停播放音视频资源,只能在playing状态调用。使用callback方式异步获取返回值。 1098 1099**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1100 1101**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1102 1103**参数:** 1104 1105| 参数名 | 类型 | 必填 | 说明 | 1106| -------- | -------- | ---- | -------------------- | 1107| callback | AsyncCallback\<void> | 是 | 暂停播放的回调方法。 | 1108 1109**错误码:** 1110 1111以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1112 1113| 错误码ID | 错误信息 | 1114| -------- | ------------------------------------------ | 1115| 5400102 | Operation not allowed. Return by callback. | 1116 1117**示例:** 1118 1119```ts 1120import { BusinessError } from '@kit.BasicServicesKit'; 1121 1122avPlayer.pause((err: BusinessError) => { 1123 if (err) { 1124 console.error('Failed to pause,error message is :' + err.message) 1125 } else { 1126 console.info('Succeeded in pausing'); 1127 } 1128}) 1129``` 1130 1131### pause<sup>9+</sup> 1132 1133pause(): Promise\<void> 1134 1135暂停播放音视频资源,只能在playing状态调用。通过Promise获取返回值。 1136 1137**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1138 1139**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1140 1141**返回值:** 1142 1143| 类型 | 说明 | 1144| -------------- | ------------------------- | 1145| Promise\<void> | 暂停播放的Promise返回值。 | 1146 1147**错误码:** 1148 1149以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1150 1151| 错误码ID | 错误信息 | 1152| -------- | ----------------------------------------- | 1153| 5400102 | Operation not allowed. Return by promise. | 1154 1155**示例:** 1156 1157```ts 1158import { BusinessError } from '@kit.BasicServicesKit'; 1159 1160avPlayer.pause().then(() => { 1161 console.info('Succeeded in pausing'); 1162}, (err: BusinessError) => { 1163 console.error('Failed to pause,error message is :' + err.message) 1164}) 1165``` 1166 1167### stop<sup>9+</sup> 1168 1169stop(callback: AsyncCallback\<void>): void 1170 1171停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。使用callback方式异步获取返回值。 1172 1173**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1174 1175**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1176 1177**参数:** 1178 1179| 参数名 | 类型 | 必填 | 说明 | 1180| -------- | -------- | ---- | -------------------- | 1181| callback | AsyncCallback\<void> | 是 | 停止播放的回调方法。 | 1182 1183**错误码:** 1184 1185以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1186 1187| 错误码ID | 错误信息 | 1188| -------- | ------------------------------------------ | 1189| 5400102 | Operation not allowed. Return by callback. | 1190 1191**示例:** 1192 1193```ts 1194import { BusinessError } from '@kit.BasicServicesKit'; 1195 1196avPlayer.stop((err: BusinessError) => { 1197 if (err) { 1198 console.error('Failed to stop,error message is :' + err.message) 1199 } else { 1200 console.info('Succeeded in stopping'); 1201 } 1202}) 1203``` 1204 1205### stop<sup>9+</sup> 1206 1207stop(): Promise\<void> 1208 1209停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。通过Promise获取返回值。 1210 1211**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1212 1213**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1214 1215**返回值:** 1216 1217| 类型 | 说明 | 1218| -------------- | ------------------------- | 1219| Promise\<void> | 停止播放的Promise返回值。 | 1220 1221**错误码:** 1222 1223以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1224 1225| 错误码ID | 错误信息 | 1226| -------- | ----------------------------------------- | 1227| 5400102 | Operation not allowed. Return by promise. | 1228 1229**示例:** 1230 1231```ts 1232import { BusinessError } from '@kit.BasicServicesKit'; 1233 1234avPlayer.stop().then(() => { 1235 console.info('Succeeded in stopping'); 1236}, (err: BusinessError) => { 1237 console.error('Failed to stop,error message is :' + err.message) 1238}) 1239``` 1240 1241### reset<sup>9+</sup> 1242 1243reset(callback: AsyncCallback\<void>): void 1244 1245重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。使用callback方式异步获取返回值。 1246 1247**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1248 1249**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1250 1251**参数:** 1252 1253| 参数名 | 类型 | 必填 | 说明 | 1254| -------- | -------- | ---- | -------------------- | 1255| callback | AsyncCallback\<void> | 是 | 重置播放的回调方法。 | 1256 1257**错误码:** 1258 1259以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1260 1261| 错误码ID | 错误信息 | 1262| -------- | ------------------------------------------ | 1263| 5400102 | Operation not allowed. Return by callback. | 1264 1265**示例:** 1266 1267```ts 1268import { BusinessError } from '@kit.BasicServicesKit'; 1269 1270avPlayer.reset((err: BusinessError) => { 1271 if (err) { 1272 console.error('Failed to reset,error message is :' + err.message) 1273 } else { 1274 console.info('Succeeded in resetting'); 1275 } 1276}) 1277``` 1278 1279### reset<sup>9+</sup> 1280 1281reset(): Promise\<void> 1282 1283重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。通过Promise获取返回值。 1284 1285**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1286 1287**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1288 1289**返回值:** 1290 1291| 类型 | 说明 | 1292| -------------- | ------------------------- | 1293| Promise\<void> | 重置播放的Promise返回值。 | 1294 1295**错误码:** 1296 1297以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1298 1299| 错误码ID | 错误信息 | 1300| -------- | ----------------------------------------- | 1301| 5400102 | Operation not allowed. Return by promise. | 1302 1303**示例:** 1304 1305```ts 1306import { BusinessError } from '@kit.BasicServicesKit'; 1307 1308avPlayer.reset().then(() => { 1309 console.info('Succeeded in resetting'); 1310}, (err: BusinessError) => { 1311 console.error('Failed to reset,error message is :' + err.message) 1312}) 1313``` 1314 1315### release<sup>9+</sup> 1316 1317release(callback: AsyncCallback\<void>): void 1318 1319销毁播放资源,除released状态外,均可以调用。使用callback方式异步获取返回值。 1320 1321**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1322 1323**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1324 1325**参数:** 1326 1327| 参数名 | 类型 | 必填 | 说明 | 1328| -------- | -------- | ---- | -------------------- | 1329| callback | AsyncCallback\<void> | 是 | 销毁播放的回调方法。 | 1330 1331**错误码:** 1332 1333以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1334 1335| 错误码ID | 错误信息 | 1336| -------- | ------------------------------------------ | 1337| 5400102 | Operation not allowed. Return by callback. | 1338 1339**示例:** 1340 1341```ts 1342import { BusinessError } from '@kit.BasicServicesKit'; 1343 1344avPlayer.release((err: BusinessError) => { 1345 if (err) { 1346 console.error('Failed to release,error message is :' + err.message) 1347 } else { 1348 console.info('Succeeded in releasing'); 1349 } 1350}) 1351``` 1352 1353### release<sup>9+</sup> 1354 1355release(): Promise\<void> 1356 1357销毁播放资源,除released状态,都可以调用。通过Promise获取返回值。 1358 1359**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1360 1361**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1362 1363**返回值:** 1364 1365| 类型 | 说明 | 1366| -------------- | ------------------------- | 1367| Promise\<void> | 销毁播放的Promise返回值。 | 1368 1369**错误码:** 1370 1371以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1372 1373| 错误码ID | 错误信息 | 1374| -------- | ----------------------------------------- | 1375| 5400102 | Operation not allowed. Return by promise. | 1376 1377**示例:** 1378 1379```ts 1380import { BusinessError } from '@kit.BasicServicesKit'; 1381 1382avPlayer.release().then(() => { 1383 console.info('Succeeded in releasing'); 1384}, (err: BusinessError) => { 1385 console.error('Failed to release,error message is :' + err.message) 1386}) 1387``` 1388 1389### getTrackDescription<sup>9+</sup> 1390 1391getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void 1392 1393获取音视频轨道信息,可以在prepared/playing/paused状态调用。获取所有音视轨道信息,应在数据加载回调后调用。使用callback方式异步获取返回值。 1394 1395**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1396 1397**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1398 1399**参数:** 1400 1401| 参数名 | 类型 | 必填 | 说明 | 1402| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- | 1403| callback | AsyncCallback<Array<[MediaDescription](#mediadescription8)>> | 是 | 回调函数,当获取音频轨道信息成功,err为undefined,data为获取到的MediaDescription数组;否则为错误对象。| 1404 1405**错误码:** 1406 1407以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1408 1409| 错误码ID | 错误信息 | 1410| -------- | ------------------------------------------ | 1411| 5400102 | Operation not allowed. Return by callback. | 1412 1413**示例:** 1414 1415```ts 1416import { BusinessError } from '@kit.BasicServicesKit'; 1417 1418avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 1419 if ((arrList) != null) { 1420 console.info('Succeeded in doing getTrackDescription'); 1421 } else { 1422 console.error(`Failed to do getTrackDescription, error:${error}`); 1423 } 1424}); 1425``` 1426 1427### getTrackDescription<sup>9+</sup> 1428 1429getTrackDescription(): Promise\<Array\<MediaDescription>> 1430 1431获取音视频轨道信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。 1432 1433**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1434 1435**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1436 1437**返回值:** 1438 1439| 类型 | 说明 | 1440| ------------------------------------------------------ | ------------------------------------------------- | 1441| Promise<Array<[MediaDescription](#mediadescription8)>> | Promise对象,返回音视频轨道信息MediaDescription数组。 | 1442 1443**错误码:** 1444 1445以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1446 1447| 错误码ID | 错误信息 | 1448| -------- | ----------------------------------------- | 1449| 5400102 | Operation not allowed. Return by promise. | 1450 1451**示例:** 1452 1453```ts 1454import { BusinessError } from '@kit.BasicServicesKit'; 1455 1456avPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => { 1457 console.info('Succeeded in getting TrackDescription'); 1458}).catch((error: BusinessError) => { 1459 console.error(`Failed to get TrackDescription, error:${error}`); 1460}); 1461``` 1462 1463### getSelectedTracks<sup>12+</sup> 1464 1465getSelectedTracks(): Promise\<Array\<number>> 1466 1467获取已选择的音视频轨道索引,可以在prepared/playing/paused状态调用。通过Promise获取返回值。 1468 1469**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1470 1471**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1472 1473**返回值:** 1474 1475| 类型 | 说明 | 1476| ------------------------------------------------------ | ------------------------------------------------- | 1477| Promise<Array<[number]>> | Promise对象,返回已选择音视频轨道索引数组。 | 1478 1479**错误码:** 1480 1481以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1482 1483| 错误码ID | 错误信息 | 1484| -------- | ----------------------------------------- | 1485| 5400102 | Operation not allowed. | 1486 1487**示例:** 1488 1489```ts 1490import { BusinessError } from '@kit.BasicServicesKit'; 1491 1492avPlayer.getSelectedTracks().then((arrList: Array<number>) => { 1493 console.info('Succeeded in getting SelectedTracks'); 1494}).catch((error: BusinessError) => { 1495 console.error(`Failed to get SelectedTracks, error:${error}`); 1496}); 1497``` 1498 1499### getPlaybackInfo<sup>12+</sup> 1500 1501getPlaybackInfo(): Promise\<PlaybackInfo> 1502 1503获取播放过程信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。 1504 1505**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1506 1507**返回值:** 1508 1509| 类型 | 说明 | 1510| ------------------------------------------------------ | ------------------------------------------------- | 1511| Promise<[PlaybackInfo](#playbackinfo12)> | Promise对象,返回播放器信息PlaybackInfo。 | 1512 1513**示例:** 1514 1515```ts 1516import { BusinessError } from '@kit.BasicServicesKit'; 1517 1518let avPlayer: media.AVPlayer | undefined = undefined; 1519let playbackInfo: media.PlaybackInfo | undefined = undefined; 1520media.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => { 1521 if (player != null) { 1522 avPlayer = player; 1523 console.info(`Succeeded in creating AVPlayer`); 1524 if (avPlayer) { 1525 try { 1526 playbackInfo = await avPlayer.getPlaybackInfo(); 1527 console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值 1528 } catch (error) { 1529 console.error(`error = ${error}`); 1530 } 1531 } 1532 } else { 1533 console.error(`Failed to create AVPlayer, error message:${err.message}`); 1534 } 1535}); 1536``` 1537 1538### selectTrack<sup>12+</sup> 1539 1540selectTrack(index: number, mode?: SwitchMode): Promise\<void> 1541 1542使用AVPlayer播放多音视频轨资源时,选择指定轨道播放,通过Promise获取返回值。 1543 1544**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1545 1546**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1547 1548**参数:** 1549 1550| 参数名 | 类型 | 必填 | 说明 | 1551| -------- | -------- | ---- | -------------------- | 1552| index | number | 是 | 多音视频资源的轨道索引,可通过[getTrackDescription](#gettrackdescription9-1)接口获取当前资源的所有轨道信息[MediaDescription](#mediadescription8)。 | 1553| mode | [SwitchMode](#switchmode12) | 否 | 切换视频轨道模式,默认为SMOOTH模式,**仅在DASH协议网络流视频轨切换时生效**,其他场景当前暂不支持。 | 1554 1555**返回值:** 1556 1557| 类型 | 说明 | 1558| -------------- | ------------------------- | 1559| Promise\<void> | 选择轨道完成的Promise返回值。 | 1560 1561**错误码:** 1562 1563以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 1564 1565| 错误码ID | 错误信息 | 1566| -------- | ----------------------------------------- | 1567| 401 | The parameter check failed. Return by promise. | 1568| 5400102 | Operation not allowed. Return by promise. | 1569 1570**示例:** 1571 1572<!--code_no_check--> 1573```ts 1574import { BusinessError } from '@kit.BasicServicesKit'; 1575 1576let avPlayer: media.AVPlayer = await media.createAVPlayer(); 1577let audioTrackIndex: Object = 0; 1578avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 1579 if (arrList != null) { 1580 for (let i = 0; i < arrList.length; i++) { 1581 if (i != 0) { 1582 // 获取音频轨道列表 1583 audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX]; 1584 } 1585 } 1586 } else { 1587 console.error(`Failed to get TrackDescription, error:${error}`); 1588 } 1589}); 1590 1591// 选择其中一个音频轨道 1592avPlayer.selectTrack(parseInt(audioTrackIndex.toString())); 1593``` 1594 1595### deselectTrack<sup>12+</sup> 1596 1597deselectTrack(index: number): Promise\<void> 1598 1599使用AVPlayer播放多音轨视频时取消指定音视频轨道播放,通过Promise获取返回值。 1600 1601**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1602 1603**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1604 1605**参数:** 1606 1607| 参数名 | 类型 | 必填 | 说明 | 1608| -------- | -------- | ---- | -------------------- | 1609| index | number | 是 | 多音视频资源的轨道索引,来自[getTrackDescription](#gettrackdescription9-1)接口所获取的轨道信息[MediaDescription](#mediadescription8)。 | 1610 1611**返回值:** 1612 1613| 类型 | 说明 | 1614| -------------- | ------------------------- | 1615| Promise\<void> | 取消选择曲目完成的Promise返回值。 | 1616 1617**错误码:** 1618 1619以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 1620 1621| 错误码ID | 错误信息 | 1622| -------- | ----------------------------------------- | 1623| 401 | The parameter check failed. Return by promise. | 1624| 5400102 | Operation not allowed. Return by promise. | 1625 1626**示例:** 1627 1628<!--code_no_check--> 1629```ts 1630import { BusinessError } from '@kit.BasicServicesKit'; 1631 1632let avPlayer: media.AVPlayer = await media.createAVPlayer(); 1633let audioTrackIndex: Object = 0; 1634avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 1635 if (arrList != null) { 1636 for (let i = 0; i < arrList.length; i++) { 1637 if (i != 0) { 1638 // 获取音频轨道列表 1639 audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX]; 1640 } 1641 } 1642 } else { 1643 console.error(`Failed to get TrackDescription, error:${error}`); 1644 } 1645}); 1646 1647// 选择其中一个音频轨道 1648avPlayer.selectTrack(parseInt(audioTrackIndex.toString())); 1649// 取消选择上次选中的音频轨道,并恢复到默认音频轨道。 1650avPlayer.deselectTrack(parseInt(audioTrackIndex.toString())); 1651``` 1652 1653### setDecryptionConfig<sup>11+</sup> 1654 1655setDecryptionConfig(mediaKeySession: drm.MediaKeySession, secureVideoPath: boolean): void 1656 1657设置解密配置。当收到[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)时,需根据事件上报的信息创建相关配置并设置解密配置,否则无法播放。 1658 1659**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1660 1661**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1662 1663**参数:** 1664 1665| 参数名 | 类型 | 必填 | 说明 | 1666| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- | 1667| mediaKeySession | [drm.MediaKeySession](../apis-drm-kit/js-apis-drm.md#mediakeysession) | 是 | 解密会话 | 1668| secureVideoPath | boolean | 是 | 安全视频通路,true表示选择安全视频通路,false表示选择非安全视频通路 | 1669 1670**错误码:** 1671 1672以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1673 1674| 错误码ID | 错误信息 | 1675| -------- | ----------------------------------------- | 1676| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 1677 1678**示例:** 1679 1680关于drm模块的示例具体可见[js-apis-drm.md](../apis-drm-kit/js-apis-drm.md)。 1681```ts 1682import { drm } from '@kit.DrmKit'; 1683 1684// 创建MediaKeySystem系统 1685let keySystem:drm.MediaKeySystem = drm.createMediaKeySystem('com.clearplay.drm'); 1686// 创建MediaKeySession解密会话 1687let keySession:drm.MediaKeySession = keySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO); 1688// 生成许可证请求、设置许可证响应等 1689// 安全视频通路标志 1690let secureVideoPath:boolean = false; 1691// 设置解密配置 1692avPlayer.setDecryptionConfig(keySession, secureVideoPath); 1693``` 1694 1695### getMediaKeySystemInfos<sup>11+</sup> 1696 1697getMediaKeySystemInfos(): Array\<drm.MediaKeySystemInfo> 1698 1699获取当前播放的媒体资源的MediaKeySystemInfo。需要在[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)触发成功后才能调用。 1700 1701**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1702 1703**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1704 1705**返回值:** 1706 1707| 类型 | 说明 | 1708| ------------------------------------------------------ | ------------------------------------------------- | 1709| Array<[drm.MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)> | MediaKeySystemInfo数组,MediaKeySystemInfo具有uuid和pssh两个属性。 | 1710 1711**示例:** 1712 1713```ts 1714import { drm } from '@kit.DrmKit'; 1715 1716const infos = avPlayer.getMediaKeySystemInfos(); 1717console.info('GetMediaKeySystemInfos count: ' + infos.length); 1718for (let i = 0; i < infos.length; i++) { 1719 console.info('GetMediaKeySystemInfos uuid: ' + infos[i]["uuid"]); 1720 console.info('GetMediaKeySystemInfos pssh: ' + infos[i]["pssh"]); 1721} 1722``` 1723 1724### seek<sup>9+</sup> 1725 1726seek(timeMs: number, mode?:SeekMode): void 1727 1728跳转到指定播放位置,只能在prepared/playing/paused/completed状态调用,可以通过[seekDone事件](#onseekdone9)确认是否生效。 1729注:直播场景不支持seek。 1730 1731**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1732 1733**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1734 1735**参数:** 1736 1737| 参数名 | 类型 | 必填 | 说明 | 1738| ------ | ---------------------- | ---- | ------------------------------------------------------------ | 1739| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, [duration](#属性)]。 | 1740| mode | [SeekMode](#seekmode8) | 否 | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式,**仅在视频资源播放时设置**。 | 1741 1742**示例:** 1743 1744```ts 1745let seekTime: number = 1000 1746avPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC) 1747``` 1748 1749### on('seekDone')<sup>9+</sup> 1750 1751on(type: 'seekDone', callback: Callback\<number>): void 1752 1753监听seek生效的事件。 1754 1755**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1756 1757**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1758 1759**参数:** 1760 1761| 参数名 | 类型 | 必填 | 说明 | 1762| -------- | -------- | ---- | ------------------------------------------------------------ | 1763| type | string | 是 | seek生效的事件回调类型,支持的事件:'seekDone',每次调用seek后都会回调此事件。 | 1764| callback | Callback\<number> | 是 | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。 | 1765 1766**示例:** 1767 1768```ts 1769avPlayer.on('seekDone', (seekDoneTime:number) => { 1770 console.info('seekDone called,and seek time is:' + seekDoneTime) 1771}) 1772``` 1773 1774### off('seekDone')<sup>9+</sup> 1775 1776off(type: 'seekDone', callback?: Callback\<number>): void 1777 1778取消监听seek生效的事件。 1779 1780**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1781 1782**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1783 1784**参数:** 1785 1786| 参数名 | 类型 | 必填 | 说明 | 1787| ------ | ------ | ---- | ---------------------------------------------------- | 1788| type | string | 是 | seek生效的事件回调类型,取消注册的事件:'seekDone'。 | 1789| callback | Callback\<number> | 否 | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。<br/>从API version 12开始支持此参数。 | 1790 1791**示例:** 1792 1793```ts 1794avPlayer.off('seekDone') 1795``` 1796 1797### setSpeed<sup>9+</sup> 1798 1799setSpeed(speed: PlaybackSpeed): void 1800 1801设置倍速模式,只能在prepared/playing/paused/completed状态调用,可以通过[speedDone事件](#onspeeddone9)确认是否生效。 1802注:直播场景不支持setSpeed。 1803 1804**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1805 1806**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1807 1808**参数:** 1809 1810| 参数名 | 类型 | 必填 | 说明 | 1811| ------ | -------------------------------- | ---- | ------------------ | 1812| speed | [PlaybackSpeed](#playbackspeed8) | 是 | 指定播放倍速模式。 | 1813 1814**示例:** 1815 1816```ts 1817avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X) 1818``` 1819 1820### on('speedDone')<sup>9+</sup> 1821 1822on(type: 'speedDone', callback: Callback\<number>): void 1823 1824监听setSpeed生效的事件 1825 1826**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1827 1828**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1829 1830**参数:** 1831 1832| 参数名 | 类型 | 必填 | 说明 | 1833| -------- | -------- | ---- | ------------------------------------------------------------ | 1834| type | string | 是 | setSpeed生效的事件回调类型,支持的事件:'speedDone',每次调用setSpeed后都会回调此事件。 | 1835| callback | Callback\<number> | 是 | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。 | 1836 1837**示例:** 1838 1839```ts 1840avPlayer.on('speedDone', (speed:number) => { 1841 console.info('speedDone called,and speed value is:' + speed) 1842}) 1843``` 1844 1845### off('speedDone')<sup>9+</sup> 1846 1847off(type: 'speedDone', callback?: Callback\<number>): void 1848 1849取消监听setSpeed生效的事件。 1850 1851**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1852 1853**参数:** 1854 1855| 参数名 | 类型 | 必填 | 说明 | 1856| ------ | ------ | ---- | --------------------------------------------------------- | 1857| type | string | 是 | setSpeed生效的事件回调类型,取消注册的事件:'speedDone'。 | 1858| callback | Callback\<number> | 否 | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。<br/>从API version 12开始支持此参数。 | 1859 1860**示例:** 1861 1862```ts 1863avPlayer.off('speedDone') 1864``` 1865 1866### setBitrate<sup>9+</sup> 1867 1868setBitrate(bitrate: number): void 1869 1870设置比特率,以播放所指定比特率的流媒体资源,当前仅对**HLS/DASH协议网络流**有效。默认情况下,AVPlayer会根据网络连接速度选择合适的比特率。只能在prepared/playing/paused/completed状态调用,可以通过[bitrateDone](#onbitratedone9)事件确认是否生效。 1871 1872**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1873 1874**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1875 1876**参数:** 1877 1878| 参数名 | 类型 | 必填 | 说明 | 1879| ------- | ------ | ---- | ------------------------------------------------------------ | 1880| bitrate | number | 是 | 指定比特率,须通过[availableBitrates](#onavailablebitrates9)事件获得当前HLS/DASH协议网络流可用的比特率列表,如果用户指定的比特率不在此列表中,则播放器将从可用比特率列表中选择最接近的比特率。如果通过availableBitrates事件获得的比特率列表长度为0,则不支持指定比特率,也不会产生bitrateDone回调。 | 1881 1882**示例:** 1883 1884```ts 1885let bitrate: number = 96000 1886avPlayer.setBitrate(bitrate) 1887``` 1888 1889### on('bitrateDone')<sup>9+</sup> 1890 1891on(type: 'bitrateDone', callback: Callback\<number>): void 1892 1893监听setBitrate生效的事件。 1894 1895**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1896 1897**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1898 1899**参数:** 1900 1901| 参数名 | 类型 | 必填 | 说明 | 1902| -------- | -------- | ---- | ------------------------------------------------------------ | 1903| type | string | 是 | setBitrate生效的事件回调类型,支持的事件:'bitrateDone',每次调用setBitrate后都会回调此事件。 | 1904| callback | Callback\<number> | 是 | setBitrate生效的事件回调方法,上报生效的比特率。 | 1905 1906**示例:** 1907 1908```ts 1909avPlayer.on('bitrateDone', (bitrate:number) => { 1910 console.info('bitrateDone called,and bitrate value is:' + bitrate) 1911}) 1912``` 1913 1914### off('bitrateDone')<sup>9+</sup> 1915 1916off(type: 'bitrateDone', callback?: Callback\<number>): void 1917 1918取消监听setBitrate生效的事件。 1919 1920**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1921 1922**参数:** 1923 1924| 参数名 | 类型 | 必填 | 说明 | 1925| ------ | ------ | ---- | ------------------------------------------------------------ | 1926| type | string | 是 | setBitrate生效的事件回调类型,取消注册的事件:'bitrateDone'。 | 1927| callback | Callback\<number> | 否 | setBitrate生效的事件回调方法,上报生效的比特率。<br/>从API version 12开始支持此参数。 | 1928 1929**示例:** 1930 1931```ts 1932avPlayer.off('bitrateDone') 1933``` 1934 1935### on('availableBitrates')<sup>9+</sup> 1936 1937on(type: 'availableBitrates', callback: Callback\<Array\<number>>): void 1938 1939监听HLS/DASH协议网络流可用的比特率列表,只会在切换prepared状态后上报。 1940 1941**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1942 1943**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1944 1945**参数:** 1946 1947| 参数名 | 类型 | 必填 | 说明 | 1948| -------- | -------- | ---- | ------------------------------------------------------------ | 1949| type | string | 是 | HLS/DASH协议网络流可用比特率上报事件回调类型,支持的事件:'availableBitrates',只会在prepared之后上报一次。 | 1950| callback | Callback\<Array\<number>> | 是 | HLS/DASH协议网络流可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。 | 1951 1952**示例:** 1953 1954```ts 1955avPlayer.on('availableBitrates', (bitrates: Array<number>) => { 1956 console.info('availableBitrates called,and availableBitrates length is:' + bitrates.length) 1957}) 1958``` 1959 1960### off('availableBitrates')<sup>9+</sup> 1961 1962off(type: 'availableBitrates', callback?: Callback\<Array\<number>>): void 1963 1964取消监听HLS/DASH协议网络流可用的比特率列表,调用[prepare](#prepare9)后,上报此事件。 1965 1966**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1967 1968**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1969 1970**参数:** 1971 1972| 参数名 | 类型 | 必填 | 说明 | 1973| ------ | ------ | ---- | ------------------------------------------------------------ | 1974| type | string | 是 | HLS/DASH协议网络流可用比特率上报事件回调类型,取消注册的事件:'availableBitrates'。 | 1975| callback | Callback\<Array\<number>> | 否 | HLS/DASH协议网络流可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。<br/>从API version 12开始支持此参数。 | 1976 1977**示例:** 1978 1979```ts 1980avPlayer.off('availableBitrates') 1981``` 1982 1983 1984### on('mediaKeySystemInfoUpdate')<sup>11+</sup> 1985 1986on(type: 'mediaKeySystemInfoUpdate', callback: Callback\<Array\<drm.MediaKeySystemInfo>>): void 1987 1988监听mediaKeySystemInfoUpdate事件。 1989 1990**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1991 1992**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1993 1994**参数:** 1995 1996| 参数名 | 类型 | 必填 | 说明 | 1997| -------- | -------- | ---- | ------------------------------------------------------------ | 1998| type | string | 是 | 版权保护信息更新上报事件回调类型,支持的事件:'mediaKeySystemInfoUpdate',当播放内容的版权保护信息更新时上报事件。 | 1999| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)>> | 是 | 版权保护信息更新上报事件回调方法,上报MediaKeySystemInfo数组。 | 2000 2001**示例:** 2002 2003```ts 2004import { drm } from '@kit.DrmKit'; 2005 2006avPlayer.on('mediaKeySystemInfoUpdate', (mediaKeySystemInfo: Array<drm.MediaKeySystemInfo>) => { 2007 for (let i = 0; i < mediaKeySystemInfo.length; i++) { 2008 console.info('mediaKeySystemInfoUpdate happened uuid: ' + mediaKeySystemInfo[i]["uuid"]); 2009 console.info('mediaKeySystemInfoUpdate happened pssh: ' + mediaKeySystemInfo[i]["pssh"]); 2010 } 2011}) 2012``` 2013 2014### off('mediaKeySystemInfoUpdate')<sup>11+</sup> 2015 2016off(type: 'mediaKeySystemInfoUpdate', callback?: Callback\<Array\<drm.MediaKeySystemInfo>>): void; 2017 2018取消监听mediaKeySystemInfoUpdate事件。 2019 2020**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2021 2022**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2023 2024**参数:** 2025 2026| 参数名 | 类型 | 必填 | 说明 | 2027| ------ | ------ | ---- | ------------------------------------------------------------ | 2028| type | string | 是 | 版权保护信息更新上报事件回调类型,取消注册的事件:'mediaKeySystemInfoUpdate'。 | 2029| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)>> | 否 | 版权保护信息更新上报事件回调方法,上报版权保护信息数组。如填写该参数,则仅取消注册此回调方法,否则取消注册mediaKeySystemInfoUpdate事件的所有回调方法。 | 2030 2031**示例:** 2032 2033```ts 2034avPlayer.off('mediaKeySystemInfoUpdate') 2035``` 2036 2037### setVolume<sup>9+</sup> 2038 2039setVolume(volume: number): void 2040 2041设置媒体播放音量,只能在prepared/playing/paused/completed状态调用,可以通过[volumeChange事件](#onvolumechange9)确认是否生效。 2042 2043**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2044 2045**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2046 2047**参数:** 2048 2049| 参数名 | 类型 | 必填 | 说明 | 2050| ------ | ------ | ---- | ------------------------------------------------------------ | 2051| volume | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 2052 2053**示例:** 2054 2055```ts 2056let volume: number = 1.0 2057avPlayer.setVolume(volume) 2058``` 2059 2060### on('volumeChange')<sup>9+</sup> 2061 2062on(type: 'volumeChange', callback: Callback\<number>): void 2063 2064监听setVolume生效的事件。 2065 2066**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2067 2068**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2069 2070**参数:** 2071 2072| 参数名 | 类型 | 必填 | 说明 | 2073| -------- | -------- | ---- | ------------------------------------------------------------ | 2074| type | string | 是 | setVolume生效的事件回调类型,支持的事件:'volumeChange',每次调用setVolume后都会回调此事件。 | 2075| callback | Callback\<number> | 是 | setVolume生效的事件回调方法,上报生效的媒体音量。 | 2076 2077**示例:** 2078 2079```ts 2080avPlayer.on('volumeChange', (vol: number) => { 2081 console.info('volumeChange called,and new volume is :' + vol) 2082}) 2083``` 2084 2085### off('volumeChange')<sup>9+</sup> 2086 2087off(type: 'volumeChange', callback?: Callback\<number>): void 2088 2089取消监听setVolume生效的事件。 2090 2091**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2092 2093**参数:** 2094 2095| 参数名 | 类型 | 必填 | 说明 | 2096| ------ | ------ | ---- | ------------------------------------------------------------ | 2097| type | string | 是 | setVolume生效的事件回调类型,取消注册的事件:'volumeChange'。 | 2098| callback | Callback\<number> | 否 | setVolume生效的事件回调方法,上报生效的媒体音量。<br/>从API version 12开始支持此参数。 | 2099 2100**示例:** 2101 2102```ts 2103avPlayer.off('volumeChange') 2104``` 2105 2106### on('endOfStream')<sup>9+</sup> 2107 2108on(type: 'endOfStream', callback: Callback\<void>): void 2109 2110监听资源播放至结尾的事件;如果用户设置[loop](#属性)=true,播放会跳转至开头重播;如果用户没有设置loop,会通过[stateChange](#onstatechange9)上报completed状态。 2111 2112**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2113 2114**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2115 2116**参数:** 2117 2118| 参数名 | 类型 | 必填 | 说明 | 2119| -------- | -------- | ---- | ------------------------------------------------------------ | 2120| type | string | 是 | 资源播放至结尾的事件回调类型,支持的事件:'endOfStream',当播放至结尾时会上报此事件。 | 2121| callback | Callback\<void> | 是 | 资源播放至结尾的事件回调方法。 | 2122 2123**示例:** 2124 2125```ts 2126avPlayer.on('endOfStream', () => { 2127 console.info('endOfStream called') 2128}) 2129``` 2130 2131### off('endOfStream')<sup>9+</sup> 2132 2133off(type: 'endOfStream', callback?: Callback\<void>): void 2134 2135取消监听资源播放至结尾的事件。 2136 2137**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2138 2139**参数:** 2140 2141| 参数名 | 类型 | 必填 | 说明 | 2142| ------ | ------ | ---- | ------------------------------------------------------------ | 2143| type | string | 是 | 资源播放至结尾的事件回调类型,取消注册的事件:'endOfStream'。 | 2144| callback | Callback\<void> | 否 | 资源播放至结尾的事件回调方法。<br/>从API version 12开始支持此参数。 | 2145 2146**示例:** 2147 2148```ts 2149avPlayer.off('endOfStream') 2150``` 2151 2152### on('timeUpdate')<sup>9+</sup> 2153 2154on(type: 'timeUpdate', callback: Callback\<number>): void 2155 2156监听资源播放当前时间,单位为毫秒(ms),用于刷新进度条当前位置,默认间隔100ms时间上报,因用户操作(seek)产生的时间变化会立刻上报。 2157 2158注:直播场景不支持timeUpdate上报。 2159 2160**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2161 2162**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2163 2164**参数:** 2165 2166| 参数名 | 类型 | 必填 | 说明 | 2167| -------- | -------- | ---- | ---------------------------------------------- | 2168| type | string | 是 | 时间更新的回调类型,支持的事件:'timeUpdate'。 | 2169| callback | Callback\<number> | 是 | 回调函数。返回当前时间。 | 2170 2171**示例:** 2172 2173```ts 2174avPlayer.on('timeUpdate', (time:number) => { 2175 console.info('timeUpdate called,and new time is :' + time) 2176}) 2177``` 2178 2179### off('timeUpdate')<sup>9+</sup> 2180 2181off(type: 'timeUpdate', callback?: Callback\<number>): void 2182 2183取消监听资源播放当前时间。 2184 2185**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2186 2187**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2188 2189**参数:** 2190 2191| 参数名 | 类型 | 必填 | 说明 | 2192| ------ | ------ | ---- | -------------------------------------------------- | 2193| type | string | 是 | 时间更新的回调类型,取消注册的事件:'timeUpdate'。 | 2194| callback | Callback\<number> | 否 | 回调函数。返回当前时间。<br/>从API version 12开始支持此参数。 | 2195 2196**示例:** 2197 2198```ts 2199avPlayer.off('timeUpdate') 2200``` 2201 2202### on('durationUpdate')<sup>9+</sup> 2203 2204 2205on(type: 'durationUpdate', callback: Callback\<number>): void 2206 2207监听资源播放资源的时长,单位为毫秒(ms),用于刷新进度条长度,默认只在prepared上报一次,同时允许一些特殊码流刷新多次时长。 2208注:直播场景不支持durationUpdate上报。 2209 2210**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2211 2212**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2213 2214**参数:** 2215 2216| 参数名 | 类型 | 必填 | 说明 | 2217| -------- | -------- | ---- | -------------------------------------------------- | 2218| type | string | 是 | 时长更新的回调类型,支持的事件:'durationUpdate'。 | 2219| callback | Callback\<number> | 是 | 回调函数。返回资源时长。 | 2220 2221**示例:** 2222 2223```ts 2224avPlayer.on('durationUpdate', (duration: number) => { 2225 console.info('durationUpdate called,new duration is :' + duration) 2226}) 2227``` 2228 2229### off('durationUpdate')<sup>9+</sup> 2230 2231off(type: 'durationUpdate', callback?: Callback\<number>): void 2232 2233取消监听资源播放资源的时长。 2234 2235**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2236 2237**参数:** 2238 2239| 参数名 | 类型 | 必填 | 说明 | 2240| ------ | ------ | ---- | ------------------------------------------------------ | 2241| type | string | 是 | 时长更新的回调类型,取消注册的事件:'durationUpdate'。 | 2242| callback | Callback\<number> | 否 | 回调函数。返回资源时长。<br/>从API version 12开始支持此参数。 | 2243 2244**示例:** 2245 2246```ts 2247avPlayer.off('durationUpdate') 2248``` 2249 2250### on('bufferingUpdate')<sup>9+</sup> 2251 2252on(type: 'bufferingUpdate', callback: OnBufferingUpdateHandler): void 2253 2254订阅音视频缓存更新事件,仅网络播放支持该订阅事件。 2255 2256**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2257 2258**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2259 2260**参数:** 2261 2262| 参数名 | 类型 | 必填 | 说明 | 2263| -------- | -------- | ---- | ------------------------------------------------------------ | 2264| type | string | 是 | 播放缓存事件回调类型,支持的事件:'bufferingUpdate'。 | 2265| callback | [OnBufferingUpdateHandler](#onbufferingupdatehandler12) | 是 | 播放缓存事件回调方法。 | 2266 2267**示例:** 2268 2269```ts 2270avPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => { 2271 console.info('bufferingUpdate called,and infoType value is:' + infoType + ', value is :' + value) 2272}) 2273``` 2274 2275### off('bufferingUpdate')<sup>9+</sup> 2276 2277off(type: 'bufferingUpdate', callback?: OnBufferingUpdateHandler): void 2278 2279取消监听音视频缓存更新事件。 2280 2281**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2282 2283**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2284 2285**参数:** 2286 2287| 参数名 | 类型 | 必填 | 说明 | 2288| ------ | ------ | ---- | --------------------------------------------------------- | 2289| type | string | 是 | 播放缓存事件回调类型,取消注册的事件:'bufferingUpdate'。 | 2290| callback | [OnBufferingUpdateHandler](#onbufferingupdatehandler12) | 否 | 播放缓存事件回调方法。 | 2291 2292**示例:** 2293 2294```ts 2295avPlayer.off('bufferingUpdate') 2296``` 2297 2298### on('startRenderFrame')<sup>9+</sup> 2299 2300on(type: 'startRenderFrame', callback: Callback\<void>): void 2301 2302订阅视频播放开始首帧渲染的更新事件,仅视频播放支持该订阅事件,该事件仅代表播放服务将第一帧画面送显示模块,实际效果依赖显示服务渲染性能。 2303 2304**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2305 2306**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2307 2308**参数:** 2309 2310| 参数名 | 类型 | 必填 | 说明 | 2311| -------- | -------- | ---- | ------------------------------------------------------------ | 2312| type | string | 是 | 视频播放开始首帧渲染事件回调类型,支持的事件:'startRenderFrame'。 | 2313| callback | Callback\<void> | 是 | 视频播放开始首帧渲染事件回调方法。 | 2314 2315**示例:** 2316 2317```ts 2318avPlayer.on('startRenderFrame', () => { 2319 console.info('startRenderFrame called') 2320}) 2321``` 2322 2323### off('startRenderFrame')<sup>9+</sup> 2324 2325off(type: 'startRenderFrame', callback?: Callback\<void>): void 2326 2327取消监听视频播放开始首帧渲染的更新事件。 2328 2329**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2330 2331**参数:** 2332 2333| 参数名 | 类型 | 必填 | 说明 | 2334| ------ | ------ | ---- | ------------------------------------------------------------ | 2335| type | string | 是 | 视频播放开始首帧渲染事件回调类型,取消注册的事件:'startRenderFrame'。 | 2336| callback | Callback\<void> | 否 | 视频播放开始首帧渲染事件回调方法。<br/>从API version 12开始支持此参数。 | 2337 2338**示例:** 2339 2340```ts 2341avPlayer.off('startRenderFrame') 2342``` 2343 2344### on('videoSizeChange')<sup>9+</sup> 2345 2346on(type: 'videoSizeChange', callback: OnVideoSizeChangeHandler): void 2347 2348监听视频播放宽高变化事件,仅视频播放支持该订阅事件,默认只在prepared状态上报一次,但HLS协议码流会在切换分辨率时上报。 2349 2350**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2351 2352**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2353 2354**参数:** 2355 2356| 参数名 | 类型 | 必填 | 说明 | 2357| -------- | -------- | ---- | ------------------------------------------------------------ | 2358| type | string | 是 | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChange'。 | 2359| callback | [OnVideoSizeChangeHandler](#onvideosizechangehandler12) | 是 | 视频播放宽高变化事件回调方法。 | 2360 2361**示例:** 2362 2363```ts 2364avPlayer.on('videoSizeChange', (width: number, height: number) => { 2365 console.info('videoSizeChange called,and width is:' + width + ', height is :' + height) 2366}) 2367``` 2368 2369### off('videoSizeChange')<sup>9+</sup> 2370 2371off(type: 'videoSizeChange', callback?: OnVideoSizeChangeHandler): void 2372 2373取消监听视频播放宽高变化事件。 2374 2375**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2376 2377**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2378 2379**参数:** 2380 2381| 参数名 | 类型 | 必填 | 说明 | 2382| ------ | ------ | ---- | ------------------------------------------------------------ | 2383| type | string | 是 | 视频播放宽高变化事件回调类型,取消注册的事件:'videoSizeChange'。 | 2384| callback | [OnVideoSizeChangeHandler](#onvideosizechangehandler12) | 否 | 视频播放宽高变化事件回调方法。<br/>从API version 12开始支持此参数。 | 2385 2386**示例:** 2387 2388```ts 2389avPlayer.off('videoSizeChange') 2390``` 2391 2392### on('audioInterrupt')<sup>9+</sup> 2393 2394on(type: 'audioInterrupt', callback: Callback\<audio.InterruptEvent>): void 2395 2396监听音频焦点变化事件,多个音视频资源同时播放时,会根据音频焦点模型[audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9)触发此事件。应用需根据不同焦点变化事件作相应处理。具体可参考[处理音频焦点事件](../../media/audio/audio-playback-concurrency.md)。 2397 2398**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2399 2400**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2401 2402**参数:** 2403 2404| 参数名 | 类型 | 必填 | 说明 | 2405| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | 2406| type | string | 是 | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 | 2407| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)> | 是 | 音频焦点变化事件回调方法。 | 2408 2409**示例:** 2410 2411```ts 2412import { audio } from '@kit.AudioKit'; 2413 2414avPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => { 2415 console.info('audioInterrupt called,and InterruptEvent info is:' + info) 2416}) 2417``` 2418 2419### off('audioInterrupt')<sup>9+</sup> 2420 2421off(type: 'audioInterrupt', callback?: Callback<audio.InterruptEvent>): void 2422 2423取消监听音频焦点变化事件。 2424 2425**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2426 2427**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2428 2429**参数:** 2430 2431| 参数名 | 类型 | 必填 | 说明 | 2432| ------ | ------ | ---- | ------------------------------------------------------------ | 2433| type | string | 是 | 音频焦点变化事件回调类型,取消注册的事件:'audioInterrupt'。 | 2434| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)> | 否 | 音频焦点变化事件回调方法。<br/>从API version 12开始支持此参数。 | 2435 2436**示例:** 2437 2438```ts 2439avPlayer.off('audioInterrupt') 2440``` 2441 2442### on('audioOutputDeviceChangeWithInfo')<sup>11+</sup> 2443 2444on(type: 'audioOutputDeviceChangeWithInfo', callback: Callback\<audio.AudioStreamDeviceChangeInfo>): void 2445 2446订阅监听音频流输出设备变化及原因,使用callback方式返回结果。 2447 2448在订阅此监听时,建议参考[响应音频流输出设备变更](../../media/audio/audio-output-device-change.md)自行实现设备连接或者断开时的播放器行为。 2449 2450**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2451 2452**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2453 2454**参数:** 2455 2456| 参数名 | 类型 | 必填 | 说明 | 2457| :------- | :------------------------- | :--- | :------------------------------------------ | 2458| type | string | 是 | 事件回调类型,支持的事件为:'outputDeviceChangeWithInfo'。 | 2459| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 是 | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 | 2460 2461**错误码:** 2462 2463| 错误码ID | 错误信息 | 2464| -------- | ------------------------------------------ | 2465| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 2466 2467**示例:** 2468 2469```ts 2470import { audio } from '@kit.AudioKit'; 2471 2472avPlayer.on('audioOutputDeviceChangeWithInfo', (data: audio.AudioStreamDeviceChangeInfo) => { 2473 console.info(`${JSON.stringify(data)}`); 2474}); 2475``` 2476 2477### off('audioOutputDeviceChangeWithInfo')<sup>11+</sup> 2478 2479off(type: 'audioOutputDeviceChangeWithInfo', callback?: Callback\<audio.AudioStreamDeviceChangeInfo>): void 2480 2481取消订阅监听音频流输出设备变化及原因,使用callback方式返回结果。 2482 2483**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2484 2485**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2486 2487**参数:** 2488 2489| 参数名 | 类型 | 必填 | 说明 | 2490| :------- | :------------------------- | :--- | :------------------------------------------ | 2491| type | string | 是 | 事件回调类型,支持的事件为:'outputDeviceChange'。 | 2492| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 否 | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 | 2493 2494**错误码:** 2495 2496| 错误码ID | 错误信息 | 2497| -------- | ------------------------------------------ | 2498| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 2499 2500**示例:** 2501 2502```ts 2503avPlayer.off('audioOutputDeviceChangeWithInfo'); 2504``` 2505 2506### addSubtitleFromFd<sup>12+</sup> 2507 2508addSubtitleFromFd(fd: number, offset?: number, length?: number): Promise\<void> 2509 2510依据fd为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。 2511 2512**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2513 2514**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2515 2516**参数:** 2517 2518| 参数名 | 类型 | 必填 | 说明 | 2519| ------ | ---------------------- | ---- | ------------------------------------------------------------ | 2520| fd | number | 是 | 资源句柄,通过[resourceManager.getRawFd](../apis-localization-kit/js-apis-resource-manager.md#getrawfd9)获取。 | 2521| offset | number | 否 | 资源偏移量,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误。 | 2522| length | number | 否 | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误。 | 2523 2524**返回值:** 2525 2526| 类型 | 说明 | 2527| -------------- | ------------------------------------------ | 2528| Promise\<void> | 添加外挂字幕addSubtitleFromFd方法的Promise返回值。 | 2529 2530**错误码:** 2531 2532| 错误码ID | 错误信息 | 2533| -------- | ------------------------------------------ | 2534| 401 | The parameter check failed. Return by promise. | 2535| 5400102 | Operation not allowed. Return by promise. | 2536 2537**示例:** 2538 2539<!--code_no_check--> 2540```ts 2541import { common } from '@kit.AbilityKit' 2542 2543let context = getContext(this) as common.UIAbilityContext 2544let fileDescriptor = await context.resourceManager.getRawFd('xxx.srt') 2545 2546avPlayer.addSubtitleFromFd(fileDescriptor.fd, fileDescriptor.offset, fileDescriptor.length) 2547``` 2548 2549### addSubtitleFromUrl<sup>12+</sup> 2550 2551addSubtitleFromUrl(url: string): Promise\<void> 2552 2553依据url为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。 2554 2555**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2556 2557**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2558 2559**参数:** 2560 2561| 参数名 | 类型 | 必填 | 说明 | 2562| ------ | ------ | ---- | ------------------------------------------------------------ | 2563| url | string | 是 | 外挂字幕文件地址。 | 2564 2565**返回值:** 2566 2567| 类型 | 说明 | 2568| -------------- | ------------------------------------------ | 2569| Promise\<void> | 添加外挂字幕addSubtitleFromUrl方法的Promise返回值。 | 2570 2571**错误码:** 2572 2573| 错误码ID | 错误信息 | 2574| -------- | ------------------------------------------ | 2575| 401 | The parameter check failed. Return by promise. | 2576| 5400102 | Operation not allowed. Return by promise. | 2577 2578**示例:** 2579 2580<!--code_no_check--> 2581```ts 2582let fdUrl:string = 'http://xxx.xxx.xxx/xx/index.srt' 2583 2584let avPlayer: media.AVPlayer = await media.createAVPlayer() 2585avPlayer.addSubtitleFromUrl(fdUrl) 2586``` 2587 2588### on('subtitleUpdate')<sup>12+</sup> 2589 2590on(type: 'subtitleUpdate', callback: Callback\<SubtitleInfo>): void 2591 2592订阅获取外挂字幕的事件,当有外挂字幕时,会通过订阅的回调方法通知用户。用户只能订阅一个外挂字幕事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2593 2594**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2595 2596**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2597 2598**参数:** 2599 2600| 参数名 | 类型 | 必填 | 说明 | 2601| -------- | -------- | ---- | ------------------------------------------------------------ | 2602| type | string | 是 | 事件回调类型,支持的事件为:'subtitleUpdate'。 | 2603| callback | function | 是 | 外挂字幕事件回调方法。 | 2604 2605**示例:** 2606 2607```ts 2608avPlayer.on('subtitleUpdate', async (info: media.SubtitleInfo) => { 2609 if (info) { 2610 let text = (!info.text) ? '' : info.text 2611 let startTime = (!info.startTime) ? 0 : info.startTime 2612 let duration = (!info.duration) ? 0 : info.duration 2613 console.info('subtitleUpdate info: text=' + text + ' startTime=' + startTime +' duration=' + duration) 2614 } else { 2615 console.info('subtitleUpdate info is null') 2616 } 2617}) 2618``` 2619 2620### off('subtitleUpdate')<sup>12+</sup> 2621 2622off(type: 'subtitleUpdate', callback?: Callback\<SubtitleInfo>): void 2623 2624取消订阅获取外挂字幕的事件。 2625 2626**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2627 2628**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2629 2630**参数:** 2631 2632| 参数名 | 类型 | 必填 | 说明 | 2633| -------- | -------- | ---- | ------------------------------------------------------------ | 2634| type | string | 是 | 事件回调类型,支持的事件为:'subtitleUpdate'。 | 2635| callback | function | 否 | 取消外挂字幕事件的回调方法。 | 2636 2637**示例:** 2638 2639```ts 2640avPlayer.off('subtitleUpdate') 2641``` 2642 2643### on('trackChange')<sup>12+</sup> 2644 2645on(type: 'trackChange', callback: OnTrackChangeHandler): void 2646 2647订阅获取轨道变更的事件,当播放的轨道变更时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2648 2649**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2650 2651**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2652 2653**参数:** 2654 2655| 参数名 | 类型 | 必填 | 说明 | 2656| -------- | -------- | ---- | ------------------------------------------------------------ | 2657| type | string | 是 | 事件回调类型,支持的事件为:'trackChange'。 | 2658| callback | [OnTrackChangeHandler](#ontrackchangehandler12) | 是 | 轨道变更事件回调方法。 | 2659 2660**示例:** 2661 2662```ts 2663avPlayer.on('trackChange', (index: number, isSelect: boolean) => { 2664 console.info('trackChange info: index=' + index + ' isSelect=' + isSelect) 2665}) 2666``` 2667 2668### off('trackChange')<sup>12+</sup> 2669 2670off(type: 'trackChange', callback?: OnTrackChangeHandler): void 2671 2672取消订阅获取轨道变更的事件。 2673 2674**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2675 2676**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2677 2678**参数:** 2679 2680| 参数名 | 类型 | 必填 | 说明 | 2681| -------- | -------- | ---- | ------------------------------------------------------------ | 2682| type | string | 是 | 事件回调类型,支持的事件为:'trackChange'。 | 2683| callback | [OnTrackChangeHandler](#ontrackchangehandler12) | 否 | 取消轨道变更事件的回调方法。 | 2684 2685**示例:** 2686 2687```ts 2688avPlayer.off('trackChange') 2689``` 2690 2691### on('trackInfoUpdate')<sup>12+</sup> 2692 2693on(type: 'trackInfoUpdate', callback: Callback\<Array\<MediaDescription>>): void 2694 2695订阅获取轨道信息更新的事件,当播放的轨道有更新时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2696 2697**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2698 2699**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2700 2701**参数:** 2702 2703| 参数名 | 类型 | 必填 | 说明 | 2704| -------- | -------- | ---- | ------------------------------------------------------------ | 2705| type | string | 是 | 事件回调类型,支持的事件为:'trackInfoUpdate'。 | 2706| callback | Callback\<Array\<[MediaDescription](#mediadescription8)>> | 是 | 轨道信息更新事件回调方法。 | 2707 2708**示例:** 2709 2710```ts 2711avPlayer.on('trackInfoUpdate', (info: Array<media.MediaDescription>) => { 2712 if (info) { 2713 for (let i = 0; i < info.length; i++) { 2714 let propertyIndex: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX]; 2715 let propertyType: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_TYPE]; 2716 console.info('track info: index=' + propertyIndex + ' tracktype=' + propertyType) 2717 } 2718 } else { 2719 console.info('track info is null') 2720 } 2721}) 2722``` 2723 2724### off('trackInfoUpdate')<sup>12+</sup> 2725 2726off(type: 'trackInfoUpdate', callback?: Callback\<Array\<MediaDescription>>): void 2727 2728取消订阅获取轨道变更的事件。 2729 2730**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2731 2732**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2733 2734**参数:** 2735 2736| 参数名 | 类型 | 必填 | 说明 | 2737| -------- | -------- | ---- | ------------------------------------------------------------ | 2738| type | string | 是 | 事件回调类型,支持的事件为:'trackInfoUpdate'。 | 2739| callback | Callback\<Array\<[MediaDescription](#mediadescription8)>> | 否 | 取消轨道信息更新事件的回调方法。 | 2740 2741**示例:** 2742 2743```ts 2744avPlayer.off('trackInfoUpdate') 2745``` 2746 2747### on('amplitudeUpdate')<sup>13+</sup> 2748 2749on(type: 'amplitudeUpdate', callback: Callback\<Array\<number>>): void 2750 2751订阅音频最大电平值,音频资源播放时定时上报。 2752 2753**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2754 2755**参数:** 2756 2757| 参数名 | 类型 | 必填 | 说明 | 2758| -------- | -------- | ---- | ------------------------------------------------------------ | 2759| type | string | 是 | 事件回调类型,支持的事件为:'amplitudeUpdate'。 | 2760| callback | Callback\<Array\<number>> | 是 | 音频最大电平值更新事件回调方法。 | 2761 2762**示例:** 2763 2764```ts 2765avPlayer.on('amplitudeUpdate', (value: Array<number>) => { 2766 console.info('amplitudeUpdate called,and amplitudeUpdate = ${value}') 2767}) 2768``` 2769 2770### off('amplitudeUpdate')<sup>13+</sup> 2771 2772off(type: 'amplitudeUpdate', callback?: Callback\<Array\<number>>): void 2773 2774取消订阅获取音频最大电平值事件。 2775 2776**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2777 2778**参数:** 2779 2780| 参数名 | 类型 | 必填 | 说明 | 2781| ------ | ------ | ---- | ------------------------------------------------------------ | 2782| type | string | 是 | 事件回调类型,支持的事件为:'amplitudeUpdate'。 | 2783| callback | Callback\<Array\<number>> | 否 | 取消音频最大电平值更新事件回调方法。 | 2784 2785**示例:** 2786 2787```ts 2788avPlayer.off('amplitudeUpdate') 2789``` 2790 2791## AVPlayerState<sup>9+</sup> 2792 2793type AVPlayerState = 'idle' | 'initialized' | 'prepared' | 'playing' | 'paused' | 'completed' | 'stopped' | 'released' | 'error' 2794 2795[AVPlayer](#avplayer9)的状态机,可通过state属性主动获取当前状态,也可通过监听[stateChange](#onstatechange9)事件上报当前状态,状态机之间的切换规则,可参考[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)。 2796 2797**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2798 2799**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2800 2801| 类型 | 说明 | 2802| :-----------------------------: | :----------------------------------------------------------- | 2803| '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属性会被重置,其他用户设置的属性将被保留。 | 2804| 'initialized' | 资源初始化,在Idle 状态设置 url<sup>9+</sup> 或 fdSrc<sup>9+</sup>属性,AVPlayer会进入initialized状态,此时可以配置窗口、音频等静态属性。 | 2805| 'prepared' | 已准备状态,在initialized状态调用[prepare()](#prepare9)方法,AVPlayer会进入prepared状态,此时播放引擎的资源已准备就绪。 | 2806| 'playing' | 正在播放状态,在prepared/paused/completed状态调用[play()](#play9)方法,AVPlayer会进入playing状态。 | 2807| 'paused' | 暂停状态,在playing状态调用pause方法,AVPlayer会进入paused状态。 | 2808| 'completed' | 播放至结尾状态,当媒体资源播放至结尾时,如果用户未设置循环播放(loop = true),AVPlayer会进入completed状态,此时调用[play()](#play9)会进入playing状态和重播,调用[stop()](#stop9)会进入stopped状态。 | 2809| 'stopped' | 停止状态,在prepared/playing/paused/completed状态调用[stop()](#stop9)方法,AVPlayer会进入stopped状态,此时播放引擎只会保留属性,但会释放内存资源,可以调用[prepare()](#prepare9)重新准备,也可以调用[reset()](#reset9)重置,或者调用[release()](#release9)彻底销毁。 | 2810| 'released' | 销毁状态,销毁与当前AVPlayer关联的播放引擎,无法再进行状态转换,调用[release()](#release9)方法后,会进入released状态,结束流程。 | 2811| '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:播放过程发现码流问题,导致容器、解码短暂异常,不影响连续播放和播控操作的,不需要客户端设计容错机制。 | 2812 2813## OnTrackChangeHandler<sup>12+</sup> 2814 2815type OnTrackChangeHandler = (index: number, isSelected: boolean) => void 2816 2817track变更事件回调方法。 2818 2819**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2820 2821**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2822 2823| 参数名 | 类型 | 必填 | 说明 | 2824| ------ | ------ | ------ | ---------------------------------------------------------- | 2825| index | number | 是 | 当前选中的track索引。 | 2826| isSelected | boolean | 是 | 当前索引的选中状态。 | 2827 2828## OnAVPlayerStateChangeHandle<sup>12+</sup> 2829 2830type OnAVPlayerStateChangeHandle = (state: AVPlayerState, reason: StateChangeReason) => void 2831 2832状态机切换事件回调方法。 2833 2834**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2835 2836**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2837 2838| 参数名 | 类型 | 必填 | 说明 | 2839| ------ | ------ | ------ | ---------------------------------------------------------- | 2840| state | [AVPlayerState](#avplayerstate9) | 是 | 当前播放状态。 | 2841| reason | [StateChangeReason](#statechangereason9) | 是 | 当前播放状态的切换原因。 | 2842 2843## OnBufferingUpdateHandler<sup>12+</sup> 2844 2845type OnBufferingUpdateHandler = (infoType: BufferingInfoType, value: number) => void 2846 2847播放缓存事件回调方法。 2848 2849**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2850 2851**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2852 2853| 参数名 | 类型 | 必填 | 说明 | 2854| ------ | ------ | ------ | ------------------------------------------------------------ | 2855| infoType | [BufferingInfoType](#bufferinginfotype8) | 是 | 缓存时间类型。 | 2856| value | number | 是 | value值固定为0。 | 2857 2858## OnVideoSizeChangeHandler<sup>12+</sup> 2859 2860type OnVideoSizeChangeHandler = (width: number, height: number) => void 2861 2862视频播放宽高变化事件回调方法。 2863 2864**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2865 2866**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2867 2868| 参数名 | 类型 | 必填 | 说明 | 2869| ------ | ------ | ------ | ------------------------------------------------------------ | 2870| width | number | 是 | 视频宽度。 | 2871| height | number | 是 | 视频高度。 | 2872 2873## AVFileDescriptor<sup>9+</sup> 2874 2875音视频文件资源描述,一种特殊资源的播放方式,使用场景:应用中的音频资源被连续存储在同一个文件中,需要根据偏移量和长度进行播放。 2876 2877**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2878 2879**系统能力:** SystemCapability.Multimedia.Media.Core 2880 2881| 名称 | 类型 | 必填 | 说明 | 2882| ------ | ------ | ---- | ------------------------------------------------------------ | 2883| 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)获取。 | 2884| offset | number | 否 | 资源偏移量,默认值为0,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 | 2885| length | number | 否 | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 | 2886 2887## AVDataSrcDescriptor<sup>10+</sup> 2888 2889音视频文件资源描述,用于DataSource播放方式,使用场景:应用在未获取完整音视频资源时,允许用户创建播放实例并开始播放,达到提前播放的目的。 2890 2891**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2892 2893**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2894 2895| 名称 | 类型 | 必填 | 说明 | 2896| ------ | ------ | ---- | ------------------------------------------------------------ | 2897| fileSize | number | 是 | 待播放文件大小(字节),-1代表大小未知。如果fileSize设置为-1, 播放模式类似于直播,不能进行seek及setSpeed操作,不能设置loop属性,因此不能重新播放。 | 2898| 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类型,返回填充数据的长度,返回-1表示到达流的末尾,返回-2表示遇到不可恢复的错误。| 2899 2900## SubtitleInfo<sup>12+</sup> 2901 2902外挂字幕信息,使用场景:订阅外挂字幕事件,回调返回外挂字幕详细信息。 2903 2904**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2905 2906**系统能力:** SystemCapability.Multimedia.Media.Core 2907 2908| 名称 | 类型 | 必填 | 说明 | 2909| ------ | ------ | ---- | ------------------------------------------------------------ | 2910| text | string | 否 | 字幕文本信息。 | 2911| startTime | number | 否 | 显示当前字幕文本的开始时间(单位:毫秒)。 | 2912| duration | number | 否 | 显示当前字幕文本的持续时间(单位:毫秒)。 | 2913 2914## SeekMode<sup>8+</sup> 2915 2916视频播放的Seek模式枚举,可通过seek方法作为参数传递下去。 2917 2918**系统能力:** SystemCapability.Multimedia.Media.Core 2919 2920| 名称 | 值 | 说明 | 2921| -------------- | ---- | ------------------------------------------------------------ | 2922| SEEK_NEXT_SYNC | 0 | 表示跳转到指定时间点的下一个关键帧,建议向后快进的时候用这个枚举值。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 2923| SEEK_PREV_SYNC | 1 | 表示跳转到指定时间点的上一个关键帧,建议向前快进的时候用这个枚举值。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 2924| SEEK_CLOSEST<sup>12+</sup> | 2 | 表示跳转到距离指定时间点最近的帧,建议精准跳转进度的时候用这个枚举值。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2925 2926## SwitchMode<sup>12+</sup> 2927 2928视频播放的selectTrack模式枚举,可通过selectTrack方法作为参数传递下去,当前仅DASH协议视频轨支持该扩展参数。 2929 2930**系统能力:** SystemCapability.Multimedia.Media.Core 2931 2932| 名称 | 值 | 说明 | 2933| -------------- | ---- | ------------------------------------------------------------ | 2934| SMOOTH | 0 | 表示切换后视频平滑播放,该模式切换存在延迟,不会立即生效。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2935| SEGMENT | 1 | 表示切换后从当前分片开始位置播放,该模式立即切换,会有重复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2936| CLOSEST | 2 | 表示从距离当前播放时间点最近的帧开始播放,该模式立即切换,切换后会卡住3到5s,然后恢复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2937 2938## PlaybackSpeed<sup>8+</sup> 2939 2940视频播放的倍速枚举,可通过setSpeed方法作为参数传递下去。 2941 2942**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2943 2944**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 2945 2946| 名称 | 值 | 说明 | 2947| -------------------- | ---- | ------------------------------ | 2948| SPEED_FORWARD_0_75_X | 0 | 表示视频播放正常播速的0.75倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2949| SPEED_FORWARD_1_00_X | 1 | 表示视频播放正常播速。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2950| SPEED_FORWARD_1_25_X | 2 | 表示视频播放正常播速的1.25倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2951| SPEED_FORWARD_1_75_X | 3 | 表示视频播放正常播速的1.75倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2952| SPEED_FORWARD_2_00_X | 4 | 表示视频播放正常播速的2.00倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2953| SPEED_FORWARD_0_50_X<sup>12+</sup> | 5 | 表示视频播放正常播速的0.50倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2954| SPEED_FORWARD_1_50_X<sup>12+</sup> | 6 | 表示视频播放正常播速的1.50倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2955| SPEED_FORWARD_3_00_X<sup>13+</sup> | 7 | 表示视频播放正常播速的3.00倍。<br>**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 | 2956| SPEED_FORWARD_0_25_X<sup>12+</sup> | 8 | 表示视频播放正常播速的0.25倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2957| SPEED_FORWARD_0_125_X<sup>12+</sup> | 9 | 表示视频播放正常播速的0.125倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2958 2959## VideoScaleType<sup>9+</sup> 2960 2961枚举,视频缩放模式。 2962 2963**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2964 2965**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 2966 2967| 名称 | 值 | 说明 | 2968| ------------------------- | ---- | ------------------------------------------------ | 2969| VIDEO_SCALE_TYPE_FIT | 0 | 默认比例类型,视频拉伸至与窗口等大。 | 2970| VIDEO_SCALE_TYPE_FIT_CROP | 1 | 保持视频宽高比拉伸至填满窗口,内容可能会有裁剪。 | 2971 2972## MediaDescription<sup>8+</sup> 2973 2974通过key-value方式获取媒体信息。 2975 2976**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2977 2978**系统能力:** SystemCapability.Multimedia.Media.Core 2979 2980| 名称 | 类型 | 必填 | 说明 | 2981| ------------- | ------ | ---- | ------------------------------------------------------------ | 2982| [key: string] | Object | 是 | 该键值对支持的key取值范围,请参考[MediaDescriptionKey](#mediadescriptionkey8);每个key值的Object类型和范围,请参考[MediaDescriptionKey](#mediadescriptionkey8)对应Key值的说明 | 2983 2984**示例:** 2985 2986```ts 2987import { BusinessError } from '@kit.BasicServicesKit'; 2988 2989function printfItemDescription(obj: media.MediaDescription, key: string) { 2990 let property: Object = obj[key]; 2991 console.info('audio key is ' + key); // 通过key值获取对应的value。key值具体可见[MediaDescriptionKey] 2992 console.info('audio value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[MediaDescriptionKey] 2993} 2994 2995let avPlayer: media.AVPlayer | undefined = undefined; 2996media.createAVPlayer((err: BusinessError, player: media.AVPlayer) => { 2997 if(player != null) { 2998 avPlayer = player; 2999 console.info(`Succeeded in creating AVPlayer`); 3000 avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 3001 if (arrList != null) { 3002 for (let i = 0; i < arrList.length; i++) { 3003 printfItemDescription(arrList[i], media.MediaDescriptionKey.MD_KEY_TRACK_TYPE); //打印出每条轨道MD_KEY_TRACK_TYPE的值 3004 } 3005 } else { 3006 console.error(`Failed to get TrackDescription, error:${error}`); 3007 } 3008 }); 3009 } else { 3010 console.error(`Failed to create AVPlayer, error message:${err.message}`); 3011 } 3012}); 3013``` 3014 3015## PlaybackInfo<sup>12+</sup> 3016 3017通过key-value方式获取播放信息。 3018 3019**系统能力:** SystemCapability.Multimedia.Media.Core 3020 3021| 名称 | 类型 | 必填 | 说明 | 3022| ------------- | ------ | ---- | ------------------------------------------------------------ | 3023| [key: string] | Object | 是 | 该键值对支持的key取值范围,请参考[PlaybackInfoKey](#playbackinfokey12);每个key值的Object类型和范围,请参考[PlaybackInfoKey](#playbackinfokey12)对应Key值的说明。 | 3024 3025**示例:** 3026 3027```ts 3028import { BusinessError } from '@kit.BasicServicesKit'; 3029 3030function printfPlaybackInfo(obj: media.PlaybackInfo, key: string) { 3031 let property: Object = obj[key]; 3032 console.info('key is ' + key); // 通过key值获取对应的value。key值具体可见[PlaybackInfoKey] 3033 console.info('value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[PlaybackInfoKey] 3034} 3035 3036let avPlayer: media.AVPlayer | undefined = undefined; 3037let playbackInfo: media.PlaybackInfo | undefined = undefined; 3038media.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => { 3039 if (player != null) { 3040 avPlayer = player; 3041 console.info(`Succeeded in creating AVPlayer`); 3042 if (avPlayer) { 3043 try { 3044 playbackInfo = await avPlayer.getPlaybackInfo(); 3045 console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值 3046 printfPlaybackInfo(playbackInfo, media.PlaybackInfoKey.SERVER_IP_ADDRESS); // 打印ip的值 3047 } catch (error) { 3048 console.error(`error = ${error}`); 3049 } 3050 } 3051 } else { 3052 console.error(`Failed to create AVPlayer, error message:${err.message}`); 3053 } 3054}); 3055``` 3056 3057## AVRecorder<sup>9+</sup> 3058 3059音视频录制管理类,用于音视频媒体录制。在调用AVRecorder的方法前,需要先通过[createAVRecorder()](#mediacreateavrecorder9)构建一个AVRecorder实例。 3060 3061音视频录制demo可参考:[音频录制开发指导](../../media/media/using-avrecorder-for-recording.md)、[视频录制开发指导](../../media/media/video-recording.md)。 3062 3063> **说明:** 3064> 3065> 使用相机进行视频录制时,需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。 3066 3067### 属性 3068 3069**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3070 3071| 名称 | 类型 | 只读 | 可选 | 说明 | 3072| ------- | ------------------------------------ | ---- | ---- | ------------------ | 3073| state9+ | [AVRecorderState](#avrecorderstate9) | 是 | 否 | 音视频录制的状态。<br>**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 3074 3075### prepare<sup>9+</sup> 3076 3077prepare(config: AVRecorderConfig, callback: AsyncCallback\<void>): void 3078 3079异步方式进行音视频录制的参数设置。通过注册回调函数获取返回值。 3080 3081**需要权限:** ohos.permission.MICROPHONE 3082 3083不涉及音频录制时,可以不需要获取ohos.permission.MICROPHONE权限。 3084 3085使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。 3086 3087**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3088 3089**参数:** 3090 3091| 参数名 | 类型 | 必填 | 说明 | 3092| -------- | -------------------------------------- | ---- | ------------------------------------- | 3093| config | [AVRecorderConfig](#avrecorderconfig9) | 是 | 配置音视频录制的相关参数。 | 3094| callback | AsyncCallback\<void> | 是 | 回调函数。当prepare方法成功,err为undefined,否则为错误对象。 | 3095 3096**错误码:** 3097 3098以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3099 3100| 错误码ID | 错误信息 | 3101| -------- | --------------------------------------- | 3102| 201 | Permission denied. Return by callback. | 3103| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 3104| 5400102 | Operate not permit. Return by callback. | 3105| 5400105 | Service died. Return by callback. | 3106 3107**示例:** 3108 3109```ts 3110import { BusinessError } from '@kit.BasicServicesKit'; 3111 3112// 配置参数以实际硬件设备支持的范围为准 3113let avRecorderProfile: media.AVRecorderProfile = { 3114 audioBitrate : 48000, 3115 audioChannels : 2, 3116 audioCodec : media.CodecMimeType.AUDIO_AAC, 3117 audioSampleRate : 48000, 3118 fileFormat : media.ContainerFormatType.CFT_MPEG_4, 3119 videoBitrate : 2000000, 3120 videoCodec : media.CodecMimeType.VIDEO_AVC, 3121 videoFrameWidth : 640, 3122 videoFrameHeight : 480, 3123 videoFrameRate : 30 3124} 3125let avRecorderConfig: media.AVRecorderConfig = { 3126 audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 3127 videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 3128 profile : avRecorderProfile, 3129 url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45 3130 rotation : 0, // 合理值0、90、180、270,非合理值prepare接口将报错 3131 location : { latitude : 30, longitude : 130 } 3132} 3133 3134avRecorder.prepare(avRecorderConfig, (err: BusinessError) => { 3135 if (err) { 3136 console.error('Failed to prepare and error is ' + err.message); 3137 } else { 3138 console.info('Succeeded in preparing'); 3139 } 3140}) 3141``` 3142 3143### prepare<sup>9+</sup> 3144 3145prepare(config: AVRecorderConfig): Promise\<void> 3146 3147异步方式进行音视频录制的参数设置。通过Promise获取返回值。 3148 3149**需要权限:** ohos.permission.MICROPHONE 3150 3151不涉及音频录制时,可以不需要获ohos.permission.MICROPHONE权限。 3152 3153使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。 3154 3155**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3156 3157**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3158 3159**参数:** 3160 3161| 参数名 | 类型 | 必填 | 说明 | 3162| ------ | -------------------------------------- | ---- | -------------------------- | 3163| config | [AVRecorderConfig](#avrecorderconfig9) | 是 | 配置音视频录制的相关参数。 | 3164 3165**返回值:** 3166 3167| 类型 | 说明 | 3168| -------------- | ------------------------------------------ | 3169| Promise\<void> | 异步音视频录制prepare方法的Promise返回值。 | 3170 3171**错误码:** 3172 3173以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3174 3175| 错误码ID | 错误信息 | 3176| -------- | -------------------------------------- | 3177| 201 | Permission denied. Return by promise. | 3178| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 3179| 5400102 | Operate not permit. Return by promise. | 3180| 5400105 | Service died. Return by promise. | 3181 3182**示例:** 3183 3184```ts 3185import { BusinessError } from '@kit.BasicServicesKit'; 3186 3187// 配置参数以实际硬件设备支持的范围为准 3188let avRecorderProfile: media.AVRecorderProfile = { 3189 audioBitrate : 48000, 3190 audioChannels : 2, 3191 audioCodec : media.CodecMimeType.AUDIO_AAC, 3192 audioSampleRate : 48000, 3193 fileFormat : media.ContainerFormatType.CFT_MPEG_4, 3194 videoBitrate : 2000000, 3195 videoCodec : media.CodecMimeType.VIDEO_AVC, 3196 videoFrameWidth : 640, 3197 videoFrameHeight : 480, 3198 videoFrameRate : 30 3199} 3200let avRecorderConfig: media.AVRecorderConfig = { 3201 audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 3202 videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 3203 profile : avRecorderProfile, 3204 url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45 3205 rotation : 0, // 合理值0、90、180、270,非合理值prepare接口报错 3206 location : { latitude : 30, longitude : 130 } 3207} 3208 3209avRecorder.prepare(avRecorderConfig).then(() => { 3210 console.info('Succeeded in preparing'); 3211}).catch((err: BusinessError) => { 3212 console.error('Failed to prepare and catch error is ' + err.message); 3213}); 3214``` 3215 3216### getInputSurface<sup>9+</sup> 3217 3218getInputSurface(callback: AsyncCallback\<string>): void 3219 3220异步方式获得录制需要的surface。通过注册回调函数获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。 3221 3222应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。 3223 3224需在[prepare()](#prepare9-2)事件成功触发后,才能调用getInputSurface()方法。 3225 3226**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3227 3228**参数:** 3229 3230| 参数名 | 类型 | 必填 | 说明 | 3231| -------- | ---------------------- | ---- | --------------------------- | 3232| callback | AsyncCallback\<string> | 是 | 回调函数。当获取surface成功,err为undefined,data为获取到的surfaceId,否则为错误对象。 | 3233 3234**错误码:** 3235 3236以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 3237 3238| 错误码ID | 错误信息 | 3239| -------- | --------------------------------------- | 3240| 5400102 | Operate not permit. Return by callback. | 3241| 5400103 | IO error. Return by callback. | 3242| 5400105 | Service died. Return by callback. | 3243 3244**示例:** 3245 3246```ts 3247import { BusinessError } from '@kit.BasicServicesKit'; 3248let surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput 3249 3250avRecorder.getInputSurface((err: BusinessError, surfaceId: string) => { 3251 if (err) { 3252 console.error('Failed to do getInputSurface and error is ' + err.message); 3253 } else { 3254 console.info('Succeeded in doing getInputSurface'); 3255 surfaceID = surfaceId; 3256 } 3257}); 3258 3259``` 3260 3261### getInputSurface<sup>9+</sup> 3262 3263getInputSurface(): Promise\<string> 3264 3265异步方式获得录制需要的surface。通过Promise获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。 3266 3267应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。 3268 3269需在[prepare()](#prepare9-3)事件成功触发后,才能调用getInputSurface方法。 3270 3271**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3272 3273**返回值:** 3274 3275| 类型 | 说明 | 3276| ---------------- | -------------------------------- | 3277| Promise\<string> | 异步获得surface的Promise返回值。 | 3278 3279**错误码:** 3280 3281以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 3282 3283| 错误码ID | 错误信息 | 3284| -------- | -------------------------------------- | 3285| 5400102 | Operate not permit. Return by promise. | 3286| 5400103 | IO error. Return by promise. | 3287| 5400105 | Service died. Return by promise. | 3288 3289**示例:** 3290 3291```ts 3292import { BusinessError } from '@kit.BasicServicesKit'; 3293let surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput 3294 3295avRecorder.getInputSurface().then((surfaceId: string) => { 3296 console.info('Succeeded in getting InputSurface'); 3297 surfaceID = surfaceId; 3298}).catch((err: BusinessError) => { 3299 console.error('Failed to get InputSurface and catch error is ' + err.message); 3300}); 3301``` 3302 3303### updateRotation<sup>12+</sup> 3304 3305updateRotation(rotation: number): Promise\<void> 3306 3307更新视频旋转角度。通过Promise获取返回值。 3308 3309当且仅当[prepare()](#prepare9-3)事件成功触发后,且在[start()](#start9)之前,才能调用updateRotation方法。 3310 3311**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3312 3313**参数:** 3314 3315| 参数名 | 类型 | 必填 | 说明 | 3316| -------- | -------------------- | ---- | --------------------------- | 3317| rotation | number | 是 | 旋转角度,取值仅支持0、90、180、270度。 | 3318 3319**返回值:** 3320 3321| 类型 | 说明 | 3322| ---------------- | -------------------------------- | 3323| Promise\<void> | 异步返回函数执行结果。 | 3324 3325**错误码:** 3326 3327以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 3328 3329| 错误码ID | 错误信息 | 3330| -------- | -------------------------------------- | 3331| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 3332| 5400102 | Operation not allowed. Return by promise. | 3333| 5400103 | IO error. Return by promise. | 3334| 5400105 | Service died. Return by promise. | 3335 3336**示例:** 3337 3338```ts 3339import { BusinessError } from '@kit.BasicServicesKit'; 3340 3341let rotation = 90 3342 3343avRecorder.updateRotation(rotation).then(() => { 3344 console.info('Succeeded in updateRotation'); 3345}).catch((err: BusinessError) => { 3346 console.error('Failed to updateRotation and catch error is ' + err.message); 3347}); 3348``` 3349 3350### start<sup>9+</sup> 3351 3352start(callback: AsyncCallback\<void>): void 3353 3354异步方式开始视频录制。通过注册回调函数获取返回值。 3355 3356纯音频录制需在[prepare()](#prepare9-2)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9)事件成功触发后,才能调用start方法。 3357 3358**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3359 3360**参数:** 3361 3362| 参数名 | 类型 | 必填 | 说明 | 3363| -------- | -------------------- | ---- | ---------------------------- | 3364| callback | AsyncCallback\<void> | 是 |回调函数。当开始录制视频成功,err为undefined,否则为错误对象。 | 3365 3366**错误码:** 3367 3368以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3369 3370| 错误码ID | 错误信息 | 3371| -------- | --------------------------------------- | 3372| 5400102 | Operate not permit. Return by callback. | 3373| 5400103 | IO error. Return by callback. | 3374| 5400105 | Service died. Return by callback. | 3375 3376**示例:** 3377 3378```ts 3379import { BusinessError } from '@kit.BasicServicesKit'; 3380 3381avRecorder.start((err: BusinessError) => { 3382 if (err) { 3383 console.error('Failed to start AVRecorder and error is ' + err.message); 3384 } else { 3385 console.info('Succeeded in starting AVRecorder'); 3386 } 3387}); 3388``` 3389 3390### start<sup>9+</sup> 3391 3392start(): Promise\<void> 3393 3394异步方式开始视频录制。通过Promise获取返回值。 3395 3396纯音频录制需在[prepare()](#prepare9-3)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9-1)事件成功触发后,才能调用start方法。 3397 3398**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3399 3400**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3401 3402**返回值:** 3403 3404| 类型 | 说明 | 3405| -------------- | ------------------------------------- | 3406| Promise\<void> | 异步开始视频录制方法的Promise返回值。 | 3407 3408**错误码:** 3409 3410以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3411 3412| 错误码ID | 错误信息 | 3413| -------- | -------------------------------------- | 3414| 5400102 | Operate not permit. Return by promise. | 3415| 5400103 | IO error. Return by promise. | 3416| 5400105 | Service died. Return by promise. | 3417 3418**示例:** 3419 3420```ts 3421import { BusinessError } from '@kit.BasicServicesKit'; 3422 3423avRecorder.start().then(() => { 3424 console.info('Succeeded in starting AVRecorder'); 3425}).catch((err: BusinessError) => { 3426 console.error('Failed to start AVRecorder and catch error is ' + err.message); 3427}); 3428``` 3429 3430### pause<sup>9+</sup> 3431 3432pause(callback: AsyncCallback\<void>): void 3433 3434异步方式暂停视频录制。通过注册回调函数获取返回值。 3435 3436需要[start()](#start9)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9)接口来恢复录制。 3437 3438**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3439 3440**参数:** 3441 3442| 参数名 | 类型 | 必填 | 说明 | 3443| -------- | -------------------- | ---- | --------------------------- | 3444| callback | AsyncCallback\<void> | 是 | 回调函数。当暂停视频录制成功,err为undefined,否则为错误对象。 | 3445 3446**错误码:** 3447 3448以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3449 3450| 错误码ID | 错误信息 | 3451| -------- | --------------------------------------- | 3452| 5400102 | Operate not permit. Return by callback. | 3453| 5400103 | IO error. Return by callback. | 3454| 5400105 | Service died. Return by callback. | 3455 3456**示例:** 3457 3458```ts 3459import { BusinessError } from '@kit.BasicServicesKit'; 3460 3461avRecorder.pause((err: BusinessError) => { 3462 if (err) { 3463 console.error('Failed to pause AVRecorder and error is ' + err.message); 3464 } else { 3465 console.info('Succeeded in pausing'); 3466 } 3467}); 3468``` 3469 3470### pause<sup>9+</sup> 3471 3472pause(): Promise\<void> 3473 3474异步方式暂停视频录制。通过Promise获取返回值。 3475 3476需要[start()](#start9-1)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9-1)接口来恢复录制。 3477 3478**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3479 3480**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3481 3482**返回值:** 3483 3484| 类型 | 说明 | 3485| -------------- | ------------------------------------- | 3486| Promise\<void> | 异步暂停视频录制方法的Promise返回值。 | 3487 3488**错误码:** 3489 3490以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3491 3492| 错误码ID | 错误信息 | 3493| -------- | -------------------------------------- | 3494| 5400102 | Operate not permit. Return by promise. | 3495| 5400103 | IO error. Return by promise. | 3496| 5400105 | Service died. Return by promise. | 3497 3498**示例:** 3499 3500```ts 3501import { BusinessError } from '@kit.BasicServicesKit'; 3502 3503avRecorder.pause().then(() => { 3504 console.info('Succeeded in pausing'); 3505}).catch((err: BusinessError) => { 3506 console.error('Failed to pause AVRecorder and catch error is ' + err.message); 3507}); 3508``` 3509 3510### resume<sup>9+</sup> 3511 3512resume(callback: AsyncCallback\<void>): void 3513 3514异步方式恢复视频录制。通过注册回调函数获取返回值。 3515 3516需要在[pause()](#pause9-2)事件成功触发后,才能调用resume方法。 3517 3518**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3519 3520**参数:** 3521 3522| 参数名 | 类型 | 必填 | 说明 | 3523| -------- | -------------------- | ---- | ---------------------------- | 3524| callback | AsyncCallback\<void> | 是 | 回调函数。当恢复视频录制成功,err为undefined,否则为错误对象。 | 3525 3526**错误码:** 3527 3528以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3529 3530| 错误码ID | 错误信息 | 3531| -------- | --------------------------------------- | 3532| 5400102 | Operate not permit. Return by callback. | 3533| 5400103 | IO error. Return by callback. | 3534| 5400105 | Service died. Return by callback. | 3535 3536**示例:** 3537 3538```ts 3539import { BusinessError } from '@kit.BasicServicesKit'; 3540 3541avRecorder.resume((err: BusinessError) => { 3542 if (err) { 3543 console.error('Failed to resume AVRecorder and error is ' + err.message); 3544 } else { 3545 console.info('Succeeded in resuming AVRecorder'); 3546 } 3547}); 3548``` 3549 3550### resume<sup>9+</sup> 3551 3552resume(): Promise\<void> 3553 3554异步方式恢复视频录制。通过Promise获取返回值。 3555 3556需要在[pause()](#pause9-3)事件成功触发后,才能调用resume方法。 3557 3558**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3559 3560**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3561 3562**返回值:** 3563 3564| 类型 | 说明 | 3565| -------------- | ------------------------------------- | 3566| Promise\<void> | 异步恢复视频录制方法的Promise返回值。 | 3567 3568**错误码:** 3569 3570以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3571 3572| 错误码ID | 错误信息 | 3573| -------- | -------------------------------------- | 3574| 5400102 | Operate not permit. Return by promise. | 3575| 5400103 | IO error. Return by promise. | 3576| 5400105 | Service died. Return by promise. | 3577 3578**示例:** 3579 3580```ts 3581import { BusinessError } from '@kit.BasicServicesKit'; 3582 3583avRecorder.resume().then(() => { 3584 console.info('Succeeded in resuming AVRecorder'); 3585}).catch((err: BusinessError) => { 3586 console.error('Failed to resume AVRecorder failed and catch error is ' + err.message); 3587}); 3588``` 3589 3590### stop<sup>9+</sup> 3591 3592stop(callback: AsyncCallback\<void>): void 3593 3594异步方式停止视频录制。通过注册回调函数获取返回值。 3595 3596需要在[start()](#start9)或[pause()](#pause9-2)事件成功触发后,才能调用stop方法。 3597 3598纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。 3599 3600**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3601 3602**参数:** 3603 3604| 参数名 | 类型 | 必填 | 说明 | 3605| -------- | -------------------- | ---- | ---------------------------- | 3606| callback | AsyncCallback\<void> | 是 | 回调函数。当停止视频录制成功,err为undefined,否则为错误对象。 | 3607 3608**错误码:** 3609 3610以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3611 3612| 错误码ID | 错误信息 | 3613| -------- | --------------------------------------- | 3614| 5400102 | Operate not permit. Return by callback. | 3615| 5400103 | IO error. Return by callback. | 3616| 5400105 | Service died. Return by callback. | 3617 3618**示例:** 3619 3620```ts 3621import { BusinessError } from '@kit.BasicServicesKit'; 3622 3623avRecorder.stop((err: BusinessError) => { 3624 if (err) { 3625 console.error('Failed to stop AVRecorder and error is ' + err.message); 3626 } else { 3627 console.info('Succeeded in stopping AVRecorder'); 3628 } 3629}); 3630``` 3631 3632### stop<sup>9+</sup> 3633 3634stop(): Promise\<void> 3635 3636异步方式停止视频录制。通过Promise获取返回值。 3637 3638需要在[start()](#start9-1)或[pause()](#pause9-3)事件成功触发后,才能调用stop方法。 3639 3640纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。 3641 3642**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3643 3644**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3645 3646**返回值:** 3647 3648| 类型 | 说明 | 3649| -------------- | ------------------------------------- | 3650| Promise\<void> | 异步停止视频录制方法的Promise返回值。 | 3651 3652**错误码:** 3653 3654以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3655 3656| 错误码ID | 错误信息 | 3657| -------- | -------------------------------------- | 3658| 5400102 | Operate not permit. Return by promise. | 3659| 5400103 | IO error. Return by promise. | 3660| 5400105 | Service died. Return by promise. | 3661 3662**示例:** 3663 3664```ts 3665import { BusinessError } from '@kit.BasicServicesKit'; 3666 3667avRecorder.stop().then(() => { 3668 console.info('Succeeded in stopping AVRecorder'); 3669}).catch((err: BusinessError) => { 3670 console.error('Failed to stop AVRecorder and catch error is ' + err.message); 3671}); 3672``` 3673 3674### reset<sup>9+</sup> 3675 3676reset(callback: AsyncCallback\<void>): void 3677 3678异步方式重置音视频录制。通过注册回调函数获取返回值。 3679 3680纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。 3681 3682**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3683 3684**参数:** 3685 3686| 参数名 | 类型 | 必填 | 说明 | 3687| -------- | -------------------- | ---- | ------------------------------ | 3688| callback | AsyncCallback\<void> | 是 | 回调函数。当重置音视频录制成功,err为undefined,否则为错误对象。 | 3689 3690**错误码:** 3691 3692以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3693 3694| 错误码ID | 错误信息 | 3695| -------- | --------------------------------- | 3696| 5400103 | IO error. Return by callback. | 3697| 5400105 | Service died. Return by callback. | 3698 3699**示例:** 3700 3701```ts 3702import { BusinessError } from '@kit.BasicServicesKit'; 3703 3704avRecorder.reset((err: BusinessError) => { 3705 if (err) { 3706 console.error('Failed to reset AVRecorder and error is ' + err.message); 3707 } else { 3708 console.info('Succeeded in resetting AVRecorder'); 3709 } 3710}); 3711``` 3712 3713### reset<sup>9+</sup> 3714 3715reset(): Promise\<void> 3716 3717异步方式重置音视频录制。通过Promise获取返回值。 3718 3719纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。 3720 3721**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3722 3723**返回值:** 3724 3725| 类型 | 说明 | 3726| -------------- | --------------------------------------- | 3727| Promise\<void> | 异步重置音视频录制方法的Promise返回值。 | 3728 3729**错误码:** 3730 3731以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3732 3733| 错误码ID | 错误信息 | 3734| -------- | -------------------------------- | 3735| 5400103 | IO error. Return by promise. | 3736| 5400105 | Service died. Return by promise. | 3737 3738**示例:** 3739 3740```ts 3741import { BusinessError } from '@kit.BasicServicesKit'; 3742 3743avRecorder.reset().then(() => { 3744 console.info('Succeeded in resetting AVRecorder'); 3745}).catch((err: BusinessError) => { 3746 console.error('Failed to reset and catch error is ' + err.message); 3747}); 3748``` 3749 3750### release<sup>9+</sup> 3751 3752release(callback: AsyncCallback\<void>): void 3753 3754异步方式释放音视频录制资源。通过注册回调函数获取返回值。 3755 3756释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。 3757 3758**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3759 3760**参数:** 3761 3762| 参数名 | 类型 | 必填 | 说明 | 3763| -------- | -------------------- | ---- | ---------------------------------- | 3764| callback | AsyncCallback\<void> | 是 | 回调函数。当释放音视频录制资源成功,err为undefined,否则为错误对象。 | 3765 3766**错误码:** 3767 3768以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3769 3770| 错误码ID | 错误信息 | 3771| -------- | --------------------------------- | 3772| 5400105 | Service died. Return by callback. | 3773 3774**示例:** 3775 3776```ts 3777import { BusinessError } from '@kit.BasicServicesKit'; 3778 3779avRecorder.release((err: BusinessError) => { 3780 if (err) { 3781 console.error('Failed to release AVRecorder and error is ' + err.message); 3782 } else { 3783 console.info('Succeeded in releasing AVRecorder'); 3784 } 3785}); 3786``` 3787 3788### release<sup>9+</sup> 3789 3790release(): Promise\<void> 3791 3792异步方式释放音视频录制资源。通过Promise获取返回值。 3793 3794释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。 3795 3796**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3797 3798**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3799 3800**返回值:** 3801 3802| 类型 | 说明 | 3803| -------------- | ------------------------------------------- | 3804| Promise\<void> | 异步释放音视频录制资源方法的Promise返回值。 | 3805 3806**错误码:** 3807 3808以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3809 3810| 错误码ID | 错误信息 | 3811| -------- | --------------------------------- | 3812| 5400105 | Service died. Return by callback. | 3813 3814**示例:** 3815 3816```ts 3817import { BusinessError } from '@kit.BasicServicesKit'; 3818 3819avRecorder.release().then(() => { 3820 console.info('Succeeded in releasing AVRecorder'); 3821}).catch((err: BusinessError) => { 3822 console.error('Failed to release AVRecorder and catch error is ' + err.message); 3823}); 3824``` 3825 3826### getCurrentAudioCapturerInfo<sup>11+</sup> 3827 3828getCurrentAudioCapturerInfo(callback: AsyncCallback\<audio.AudioCapturerChangeInfo>): void 3829 3830异步方式获取当前音频采集参数。通过注册回调函数获取返回值。 3831 3832在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3833 3834**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3835 3836**参数**: 3837 3838| 参数名 | 类型 | 必填 | 说明 | 3839| -------- | ------------------------------------------------------------ | ---- | ------------------------------------ | 3840| callback | AsyncCallback\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是 | 回调函数。当获取音频采集参数成功时,err为undefined,data为获取到的audio.AudioCapturerChangeInfo,否则为错误对象。 | 3841 3842**错误码**: 3843 3844以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3845 3846| 错误码ID | 错误信息 | 3847| -------- | ------------------------------------------ | 3848| 5400102 | Operation not allowed. | 3849| 5400103 | I/O error. | 3850| 5400105 | Service died. Return by callback. | 3851 3852**示例**: 3853 3854```ts 3855import { audio } from '@kit.AudioKit'; 3856 3857let currentCapturerInfo: audio.AudioCapturerChangeInfo; 3858 3859avRecorder.getCurrentAudioCapturerInfo((err: BusinessError, capturerInfo: audio.AudioCapturerChangeInfo) => { 3860 if (err) { 3861 console.error('Failed to get CurrentAudioCapturerInfo and error is ' + err.message); 3862 } else { 3863 console.info('Succeeded in getting CurrentAudioCapturerInfo'); 3864 currentCapturerInfo = capturerInfo; 3865 } 3866}); 3867``` 3868 3869### getCurrentAudioCapturerInfo<sup>11+</sup> 3870 3871getCurrentAudioCapturerInfo(): Promise\<audio.AudioCapturerChangeInfo> 3872 3873异步方式获取当前音频采集参数。通过Promise获取返回值。 3874 3875在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3876 3877**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3878 3879**返回值**: 3880 3881| 类型 | 说明 | 3882| ------------------------------------------------------------ | ------------------------------------------------- | 3883| Promise\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | Promise对象,返回获取的当前音频采集参数。 | 3884 3885**错误码**: 3886 3887以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3888 3889| 错误码ID | 错误信息 | 3890| -------- | -------------------------------- | 3891| 5400102 | Operation not allowed. | 3892| 5400103 | I/O error. | 3893| 5400105 | Service died. Return by promise. | 3894 3895**示例**: 3896 3897```ts 3898import { audio } from '@kit.AudioKit'; 3899 3900let currentCapturerInfo: audio.AudioCapturerChangeInfo; 3901 3902avRecorder.getCurrentAudioCapturerInfo().then((capturerInfo: audio.AudioCapturerChangeInfo) => { 3903 console.info('Succeeded in getting CurrentAudioCapturerInfo'); 3904 currentCapturerInfo = capturerInfo; 3905}).catch((err: BusinessError) => { 3906 console.error('Failed to get CurrentAudioCapturerInfo and catch error is ' + err.message); 3907}); 3908``` 3909 3910### getAudioCapturerMaxAmplitude<sup>11+</sup> 3911 3912getAudioCapturerMaxAmplitude(callback: AsyncCallback\<number>): void 3913 3914异步方式获取当前音频最大振幅。通过注册回调函数获取返回值。 3915 3916在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3917 3918调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。 3919 3920**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3921 3922**参数**: 3923 3924| 参数名 | 类型 | 必填 | 说明 | 3925| -------- | ---------------------- | ---- | ------------------------------------ | 3926| callback | AsyncCallback\<number> | 是 | 回调函数。获取当前音频最大振幅成功时,err为undefined,data为获取到的最大振幅,否则为错误对象。 | 3927 3928**错误码**: 3929 3930以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3931 3932| 错误码ID | 错误信息 | 3933| -------- | ------------------------------------------ | 3934| 5400102 | Operation not allowed. | 3935| 5400105 | Service died. Return by callback. | 3936 3937**示例**: 3938 3939```ts 3940let maxAmplitude: number; 3941 3942avRecorder.getAudioCapturerMaxAmplitude((err: BusinessError, amplitude: number) => { 3943 if (err) { 3944 console.error('Failed to get AudioCapturerMaxAmplitude and error is ' + err.message); 3945 } else { 3946 console.info('Succeeded in getting AudioCapturerMaxAmplitude'); 3947 maxAmplitude = amplitude; 3948 } 3949}); 3950``` 3951 3952### getAudioCapturerMaxAmplitude<sup>11+</sup> 3953 3954getAudioCapturerMaxAmplitude(): Promise\<number> 3955 3956异步方式获取当前音频最大振幅参数。通过Promise获取返回值。 3957 3958在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3959 3960调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。 3961 3962**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3963 3964**返回值**: 3965 3966| 类型 | 说明 | 3967| ---------------- | ------------------------------------------------- | 3968| Promise\<number> | Promise对象,返回获取的当前音频最大振幅。 | 3969 3970**错误码**: 3971 3972以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3973 3974| 错误码ID | 错误信息 | 3975| -------- | -------------------------------- | 3976| 5400102 | Operation not allowed. | 3977| 5400105 | Service died. Return by promise. | 3978 3979**示例**: 3980 3981```ts 3982let maxAmplitude: number; 3983 3984avRecorder.getAudioCapturerMaxAmplitude().then((amplitude: number) => { 3985 console.info('Succeeded in getting AudioCapturerMaxAmplitude'); 3986 maxAmplitude = amplitude; 3987}).catch((err: BusinessError) => { 3988 console.error('Failed to get AudioCapturerMaxAmplitude and catch error is ' + err.message); 3989}); 3990``` 3991 3992### getAvailableEncoder<sup>11+</sup> 3993 3994getAvailableEncoder(callback: AsyncCallback\<Array\<EncoderInfo>>): void 3995 3996异步方式获取可用的编码器参数。通过注册回调函数获取返回值。 3997 3998**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3999 4000**参数**: 4001 4002| 参数名 | 类型 | 必填 | 说明 | 4003| -------- | ----------------------------------------------------- | ---- | ------------------------------------ | 4004| callback | AsyncCallback\<Array\<[EncoderInfo](#encoderinfo11)>> | 是 | 回调函数。获取可用的编码器参数成功时,err为undefined,data为获取到的编码器参数,否则为错误对象。 | 4005 4006**错误码**: 4007 4008以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4009 4010| 错误码ID | 错误信息 | 4011| -------- | ------------------------------------------ | 4012| 5400102 | Operation not allowed. | 4013| 5400105 | Service died. Return by callback. | 4014 4015**示例**: 4016 4017```ts 4018let encoderInfo: media.EncoderInfo; 4019 4020avRecorder.getAvailableEncoder((err: BusinessError, info: media.EncoderInfo[]) => { 4021 if (err) { 4022 console.error('Failed to get AvailableEncoder and error is ' + err.message); 4023 } else { 4024 console.info('Succeeded in getting AvailableEncoder'); 4025 encoderInfo = info[0]; 4026 } 4027}); 4028``` 4029 4030### getAvailableEncoder<sup>11+</sup> 4031 4032getAvailableEncoder(): Promise\<Array\<EncoderInfo>> 4033 4034异步方式获取可用的编码器参数。通过注册回调函数获取返回值。 4035 4036**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 4037 4038**返回值**: 4039 4040| 类型 | 说明 | 4041| ----------------------------------------------- | ----------------------------------------------- | 4042| Promise\<Array\<[EncoderInfo](#encoderinfo11)>> | Promise对象,返回获取的可用的编码器参数。 | 4043 4044**错误码**: 4045 4046以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4047 4048| 错误码ID | 错误信息 | 4049| -------- | -------------------------------- | 4050| 5400102 | Operation not allowed. | 4051| 5400105 | Service died. Return by promise. | 4052 4053**示例**: 4054 4055```ts 4056let encoderInfo: media.EncoderInfo; 4057 4058avRecorder.getAvailableEncoder().then((info: media.EncoderInfo[]) => { 4059 console.info('Succeeded in getting AvailableEncoder'); 4060 encoderInfo = info[0]; 4061}).catch((err: BusinessError) => { 4062 console.error('Failed to get AvailableEncoder and catch error is ' + err.message); 4063}); 4064``` 4065 4066### getAVRecorderConfig<sup>11+</sup> 4067 4068getAVRecorderConfig(callback: AsyncCallback\<AVRecorderConfig>): void 4069 4070异步方式获取实时的配置参数。通过注册回调函数获取返回值。 4071 4072只能在[prepare()](#prepare9-2)接口调用后调用。 4073 4074**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4075 4076**参数:** 4077 4078| 参数名 | 类型 | 必填 | 说明 | 4079| -------- | ---------------------- | ---- | --------------------------- | 4080| callback | AsyncCallback\<[AVRecorderConfig](#avrecorderconfig9)> | 是 | 回调函数。获取实时配置的参数成功时,err为undefined,data为获取到的配置参数,否则为错误对象。 | 4081 4082**错误码:** 4083 4084以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 4085 4086| 错误码ID | 错误信息 | 4087| -------- | ------------------------------------------ | 4088| 5400102 | Operate not permit. Return by callback. | 4089| 5400103 | IO error. Return by callback. | 4090| 5400105 | Service died. Return by callback. | 4091 4092**示例:** 4093 4094```ts 4095import { BusinessError } from '@kit.BasicServicesKit'; 4096 4097let avConfig: media.AVRecorderConfig; 4098 4099avRecorder.getAVRecorderConfig((err: BusinessError, config: media.AVRecorderConfig) => { 4100 if (err) { 4101 console.error('Failed to get avConfig and error is ' + err.message); 4102 } else { 4103 console.info('Succeeded in getting AVRecorderConfig'); 4104 avConfig = config; 4105 } 4106}); 4107``` 4108 4109### getAVRecorderConfig<sup>11+</sup> 4110 4111getAVRecorderConfig(): Promise\<AVRecorderConfig>; 4112 4113异步方式获取实时的配置参数。通过Promise获取返回值。 4114 4115只能在[prepare()](#prepare9-3)接口调用后调用。 4116 4117**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4118 4119**返回值:** 4120 4121| 类型 | 说明 | 4122| ---------------- | -------------------------------- | 4123| Promise\<[AVRecorderConfig](#avrecorderconfig9)> | 异步获得实时配置参数的回调方法。 | 4124 4125**错误码:** 4126 4127以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 4128 4129| 错误码ID | 错误信息 | 4130| -------- | ----------------------------------------- | 4131| 5400102 | Operate not permit. Return by promise. | 4132| 5400103 | IO error. Return by promise. | 4133| 5400105 | Service died. Return by promise. | 4134 4135**示例:** 4136 4137```ts 4138import { BusinessError } from '@kit.BasicServicesKit'; 4139 4140let avConfig: media.AVRecorderConfig; 4141 4142avRecorder.getAVRecorderConfig().then((config: media.AVRecorderConfig) => { 4143 console.info('Succeeded in getting AVRecorderConfig'); 4144 avConfig = config; 4145}).catch((err: BusinessError) => { 4146 console.error('Failed to get AVRecorderConfig and catch error is ' + err.message); 4147}); 4148``` 4149 4150### on('stateChange')<sup>9+</sup> 4151 4152on(type: 'stateChange', callback: OnAVRecorderStateChangeHandler): void 4153 4154订阅录制状态机AVRecorderState切换的事件,当 AVRecorderState状态机发生变化时,会通过订阅的回调方法通知用户。用户只能订阅一个状态机切换事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 4155 4156**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4157 4158**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4159 4160**参数:** 4161 4162| 参数名 | 类型 | 必填 | 说明 | 4163| -------- | -------- | ---- | ------------------------------------------------------------ | 4164| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 4165| callback | [OnAVRecorderStateChangeHandler](#onavrecorderstatechangehandler12) | 是 | 状态机切换事件回调方法。 | 4166 4167**错误码:** 4168 4169以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4170 4171| 错误码ID | 错误信息 | 4172| -------- | --------------------------------- | 4173| 5400103 | IO error. Return by callback. | 4174| 5400105 | Service died. Return by callback. | 4175 4176**示例:** 4177 4178```ts 4179avRecorder.on('stateChange', async (state: media.AVRecorderState, reason: media.StateChangeReason) => { 4180 console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason); 4181}); 4182``` 4183 4184### off('stateChange')<sup>9+</sup> 4185 4186off(type: 'stateChange', callback?: OnAVRecorderStateChangeHandler): void 4187 4188取消订阅播放状态机[AVRecorderState](#avrecorderstate9)切换的事件。 4189 4190**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4191 4192**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4193 4194**参数:** 4195 4196| 参数名 | 类型 | 必填 | 说明 | 4197| ------ | ------ | ---- | ------------------------------------------------------------ | 4198| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 4199| callback | [OnAVRecorderStateChangeHandler](#onavrecorderstatechangehandler12) | 否 | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 | 4200 4201**示例:** 4202 4203```ts 4204avRecorder.off('stateChange'); 4205``` 4206 4207### on('error')<sup>9+</sup> 4208 4209on(type: 'error', callback: ErrorCallback): void 4210 4211订阅AVRecorder的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVRecorderState](#avrecorderstate9)也切至error状态,用户需要通过[reset()](#reset9-2)或者[release()](#release9-2)退出录制操作。 4212 4213用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 4214 4215**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4216 4217**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4218 4219**参数:** 4220 4221| 参数名 | 类型 | 必填 | 说明 | 4222| -------- | ------------- | ---- | ------------------------------------------------------------ | 4223| type | string | 是 | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 4224| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录制错误事件回调方法。 | 4225 4226**错误码:** 4227 4228以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4229 4230| 错误码ID | 错误信息 | 4231| -------- | ------------------------------------------ | 4232| 201 | Permission denied. | 4233| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 4234| 801 | Capability not supported. | 4235| 5400101 | No memory. | 4236| 5400102 | Operation not allowed. | 4237| 5400103 | I/O error. | 4238| 5400104 | Time out. | 4239| 5400105 | Service died. | 4240| 5400106 | Unsupported format. | 4241| 5400107 | Audio interrupted. | 4242 4243**示例:** 4244 4245```ts 4246import { BusinessError } from '@kit.BasicServicesKit'; 4247 4248avRecorder.on('error', (err: BusinessError) => { 4249 console.info('case avRecorder.on(error) called, errMessage is ' + err.message); 4250}); 4251``` 4252 4253### off('error')<sup>9+</sup> 4254 4255off(type: 'error', callback?: ErrorCallback): void 4256 4257取消订阅录制错误事件,取消后不再接收到AVRecorder的错误事件。 4258 4259**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4260 4261**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4262 4263**参数:** 4264 4265| 参数名 | 类型 | 必填 | 说明 | 4266| ------ | ------ | ---- | ------------------------------------------------------------ | 4267| type | string | 是 | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 4268| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 录制错误事件回调方法。<br/>从API version 12开始支持此参数。 | 4269 4270**示例:** 4271 4272```ts 4273avRecorder.off('error'); 4274``` 4275 4276### on('audioCapturerChange')<sup>11+</sup> 4277 4278on(type: 'audioCapturerChange', callback: Callback<audio.AudioCapturerChangeInfo>): void 4279 4280订阅录音配置变化的回调,任意录音配置的变化会触发变化后的录音配置全量信息回调。 4281 4282当用户重复订阅时,以最后一次订阅的回调接口为准。 4283 4284**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4285 4286**参数:** 4287 4288| 参数名 | 类型 | 必填 | 说明 | 4289| -------- | -------- | ---- | ------------------------------------------------------------ | 4290| type | string | 是 |录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 | 4291| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是 | 变化后的录音配置全量信息。| 4292 4293**错误码:** 4294 4295| 错误码ID | 错误信息 | 4296| -------- | ------------------------------------------ | 4297| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 4298 4299**示例:** 4300 4301```ts 4302import { audio } from '@kit.AudioKit' 4303 4304let capturerChangeInfo: audio.AudioCapturerChangeInfo; 4305 4306avRecorder.on('audioCapturerChange', (audioCapturerChangeInfo: audio.AudioCapturerChangeInfo) => { 4307 console.info('audioCapturerChange called'); 4308 capturerChangeInfo = audioCapturerChangeInfo; 4309}); 4310``` 4311 4312### off('audioCapturerChange')<sup>11+</sup> 4313 4314off(type: 'audioCapturerChange', callback?: Callback<audio.AudioCapturerChangeInfo>): void 4315 4316取消订阅录音变化的回调事件。 4317 4318**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4319 4320**参数:** 4321 4322| 参数名 | 类型 | 必填 | 说明 | 4323| ------ | ------ | ---- | ------------------------------------------------------------ | 4324| type | string | 是 | 录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 | 4325| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 否 | 变化后的录音配置全量信息。<br/>从API version 12开始支持此参数。| 4326 4327**示例:** 4328 4329```ts 4330avRecorder.off('audioCapturerChange'); 4331``` 4332 4333### on('photoAssetAvailable')<sup>12+</sup> 4334 4335on(type: 'photoAssetAvailable', callback: Callback\<photoAccessHelper.PhotoAsset>): void 4336 4337订阅媒体资源回调事件,当[FileGenerationMode](#filegenerationmode12)枚举设置为系统创建媒体文件时,会在[stop](#stop9-2)操作结束后把[PhotoAsset](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoasset)对象回调给应用。 4338 4339当用户重复订阅时,以最后一次订阅的回调接口为准。 4340 4341**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4342 4343**参数:** 4344 4345| 参数名 | 类型 | 必填 | 说明 | 4346| -------- | -------- | ---- | ------------------------------------------------------------ | 4347| type | string | 是 |录像资源的回调类型,支持的事件:'photoAssetAvailable'。 | 4348| callback | Callback<[photoAccessHelper.PhotoAsset](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoasset)> | 是 | 系统创建的资源文件对应的PhotoAsset对象| 4349 4350**错误码:** 4351 4352| 错误码ID | 错误信息 | 4353| -------- | ------------------------------------------ | 4354| 5400103 | IO error. Return by callback. | 4355| 5400105 | Service died. Return by callback. | 4356 4357**示例:** 4358 4359<!--code_no_check--> 4360```ts 4361import { photoAccessHelper } from '@kit.MediaLibraryKit'; 4362import { common } from '@kit.AbilityKit' 4363let photoAsset: photoAccessHelper.PhotoAsset; 4364let context = getContext(this) as common.UIAbilityContext 4365 4366// 例:处理photoAsset回调,保存video 4367async function saveVideo(asset: photoAccessHelper.PhotoAsset) { 4368 console.info("saveVideo called"); 4369 try { 4370 let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); 4371 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 4372 assetChangeRequest.saveCameraPhoto(); 4373 await phAccessHelper.applyChanges(assetChangeRequest); 4374 console.info('apply saveVideo successfully'); 4375 } catch (err) { 4376 console.error(`apply saveVideo failed with error: ${err.code}, ${err.message}`); 4377 } 4378} 4379// 注册photoAsset监听 4380avRecorder.on('photoAssetAvailable', (asset: photoAccessHelper.PhotoAsset) => { 4381 console.info('photoAssetAvailable called'); 4382 if (asset != undefined) { 4383 photoAsset = asset; 4384 // 处理photoAsset回调 4385 // 例: this.saveVideo(asset); 4386 } else { 4387 console.error('photoAsset is undefined'); 4388 } 4389}); 4390``` 4391 4392### off('photoAssetAvailable')<sup>12+</sup> 4393 4394off(type: 'photoAssetAvailable', callback?: Callback<photoAccessHelper.PhotoAsset>): void 4395 4396取消订阅媒体资源的回调类型。 4397 4398**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4399 4400**参数:** 4401 4402| 参数名 | 类型 | 必填 | 说明 | 4403| ------ | ------ | ---- | ------------------------------------------------------------ | 4404| type | string | 是 | 录音配置变化的回调类型,支持的事件:'photoAssetAvailable'。 | 4405 4406**示例:** 4407 4408```ts 4409avRecorder.off('photoAssetAvailable'); 4410``` 4411 4412## AVRecorderState<sup>9+</sup> 4413 4414type AVRecorderState = 'idle' | 'prepared' | 'started' | 'paused' | 'stopped' | 'released' | 'error' 4415 4416音视频录制的状态机。可通过state属性获取当前状态。 4417 4418**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 4419 4420**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4421 4422| 类型 | 说明 | 4423| -------- | ------------------------------------------------------------ | 4424| 'idle' | 闲置状态。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,进入prepared状态。AVRecorder刚被创建,或者在任何非released状态下调用[AVRecorder.reset()](#reset9-2)方法,均进入idle状态。 | 4425| 'prepared' | 参数设置完成。此时可以调用[AVRecorder.start()](#start9)方法开始录制,进入started状态。 | 4426| 'started' | 正在录制。此时可以调用[AVRecorder.pause()](#pause9-2)方法暂停录制,进入paused状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 | 4427| 'paused' | 录制暂停。此时可以调用[AVRecorder.resume()](#resume9)方法继续录制,进入started状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 | 4428| 'stopped' | 录制停止。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,重新进入prepared状态。 | 4429| 'released' | 录制资源释放。此时不能再进行任何操作。在任何其他状态下,均可以通过调用[AVRecorder.release()](#release9-2)方法进入released状态。 | 4430| 'error' | 错误状态。当AVRecorder实例发生不可逆错误,会转换至当前状态。切换至error状态时会伴随[AVRecorder.on('error')事件](#onerror9-1),该事件会上报详细错误原因。在error状态时,用户需要调用[AVRecorder.reset()](#reset9-2)方法重置AVRecorder实例,或者调用[AVRecorder.release()](#release9-2)方法释放资源。 | 4431 4432## OnAVRecorderStateChangeHandler<sup>12+</sup> 4433 4434type OnAVRecorderStateChangeHandler = (state: AVRecorderState, reason: StateChangeReason) => void 4435 4436状态机切换事件回调方法。 4437 4438**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4439 4440**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 4441 4442| 参数名 | 类型 | 必填 | 说明 | 4443| ------ | ------ | ------ | ------------------------------------------------------------ | 4444| state | [AVRecorderState](#avrecorderstate9) | 必填 | 当前播放状态。 | 4445| reason | [StateChangeReason](#statechangereason9) | 必填 | 当前播放状态的切换原因。 | 4446 4447## AVRecorderConfig<sup>9+</sup> 4448 4449表示音视频录制的参数设置。 4450 4451通过audioSourceType和videoSourceType区分纯音频录制、纯视频录制或音视频录制。纯音频录制时,仅需要设置audioSourceType;纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。 4452 4453**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4454 4455| 名称 | 类型 | 必填 | 说明 | 4456| --------------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | 4457| audioSourceType | [AudioSourceType](#audiosourcetype9) | 否 | 选择录制的音频源类型。选择音频录制时必填。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。| 4458| videoSourceType | [VideoSourceType](#videosourcetype9) | 否 | 选择录制的视频源类型。选择视频录制时必填。 | 4459| profile | [AVRecorderProfile](#avrecorderprofile9) | 是 | 录制的profile,必要参数。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。| 4460| url | string | 是 | 录制输出URL:fd://xx (fd number) ,必要参数。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4461|fileGenerationMode<sup>12+</sup> | [FileGenerationMode](#filegenerationmode12) | 否 | 创建媒体文件的模式,配合[on('photoAssetAvailable')](#onphotoassetavailable12)监听使用。| 4462| rotation<sup>(deprecated)</sup> | number | 否 | 录制的视频旋转角度,mp4格式支持0,90,180,270,默认值为0。<br>从API version 6开始支持,从API version 12开始废弃。建议使用[AVMetadata](#avmetadata11).videoOrientation替代。如果同时设置两个值,将会采用[AVMetadata](#avmetadata11).videoOrientation。 | 4463| location<sup>(deprecated)</sup> | [Location](#location) | 否 | 录制的地理位置,默认不记录地理位置信息。<br>从API version 6开始支持,从API version 12开始废弃。建议使用 [AVMetadata](#avmetadata11).location。如果同时设置两个值,将会采用[AVMetadata](#avmetadata11).location。 | 4464| metadata<sup>12+</sup> | [AVMetadata](#avmetadata11) | 否 | 设置元数据信息。详情见 [AVMetadata](#avmetadata11)。 | 4465 4466## AVRecorderProfile<sup>9+</sup> 4467 4468音视频录制的配置文件。 4469 4470**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4471 4472| 名称 | 类型 | 必填 | 说明 | 4473| ---------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | 4474| 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 开始,该接口支持在原子化服务中使用。 | 4475| audioChannels | number | 否 | 音频采集声道数,选择音频录制时必填。<br>- AAC编码格式支持范围[1 - 8]。<br>- G711-mulaw编码格式支持范围[1 - 1]。<br>- MP3编码格式支持范围[1 - 2]。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4476| audioCodec | [CodecMimeType](#codecmimetype8) | 否 | 音频编码格式,选择音频录制时必填。当前支持AUDIO_AAC,AUDIO_MP3,AUDIO_G711MU。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4477| 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 开始,该接口支持在原子化服务中使用。 | 4478| fileFormat | [ContainerFormatType](#containerformattype8) | 是 | 文件的容器格式,必要参数。当前支持MP4、M4A、MP3、WAV封装格式,不支持在MP4封装格式下使用AUDIO_MP3编码格式。<br>**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。| 4479| videoBitrate | number | 否 | 视频编码比特率,选择视频录制时必填,支持范围[10000 - 100000000]。 | 4480| videoCodec | [CodecMimeType](#codecmimetype8) | 否 | 视频编码格式,选择视频录制时必填。当前支持VIDEO_AVC。| 4481| videoFrameWidth | number | 否 | 视频帧的宽,选择视频录制时必填,支持范围[176 - 4096]。 | 4482| videoFrameHeight | number | 否 | 视频帧的高,选择视频录制时必填,支持范围[144 - 4096]。 | 4483| videoFrameRate | number | 否 | 视频帧率,选择视频录制时必填,支持范围[1 - 60]。 | 4484| isHdr<sup>11+</sup> | boolean | 否 | HDR编码,选择视频录制时选填,isHdr默认为false,对应编码格式没有要求,isHdr为true时,对应的编码格式必须为video/hevc。| 4485| enableTemporalScale<sup>12+</sup> | boolean | 否 | 视频录制是否支持时域分层编码功能,选择视频录制时选填,enableTemporalScale默认为false。设置为true时,编码输出的码流中部分帧可以支持跳过不编码。| 4486 4487## AudioSourceType<sup>9+</sup> 4488 4489表示视频录制中音频源类型的枚举。 4490 4491**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4492 4493| 名称 | 值 | 说明 | 4494| ------------------------- | ---- | ---------------------- | 4495| AUDIO_SOURCE_TYPE_DEFAULT | 0 | 默认的音频输入源类型。 | 4496| AUDIO_SOURCE_TYPE_MIC | 1 | 表示MIC的音频输入源。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4497| AUDIO_SOURCE_TYPE_VOICE_RECOGNITION<sup>12+</sup> | 2 | 表示语音识别场景的音频源。 | 4498| AUDIO_SOURCE_TYPE_VOICE_COMMUNICATION<sup>12+</sup> | 7 | 表示语音通话场景的音频源。 | 4499| AUDIO_SOURCE_TYPE_VOICE_MESSAGE<sup>12+</sup> | 10 | 表示短语音消息的音频源。 | 4500| AUDIO_SOURCE_TYPE_CAMCORDER<sup>12+</sup> | 13 | 表示相机录像的音频源。 | 4501 4502## VideoSourceType<sup>9+</sup> 4503 4504表示视频录制中视频源类型的枚举。 4505 4506**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4507 4508| 名称 | 值 | 说明 | 4509| ----------------------------- | ---- | ------------------------------- | 4510| VIDEO_SOURCE_TYPE_SURFACE_YUV | 0 | 输入surface中携带的是raw data。 | 4511| VIDEO_SOURCE_TYPE_SURFACE_ES | 1 | 输入surface中携带的是ES data。 | 4512 4513## ContainerFormatType<sup>8+</sup> 4514 4515表示容器格式类型的枚举,缩写为CFT。 4516 4517**系统能力:** SystemCapability.Multimedia.Media.Core 4518 4519| 名称 | 值 | 说明 | 4520| ----------- | ----- | --------------------- | 4521| CFT_MPEG_4 | 'mp4' | 视频的容器格式,MP4。 | 4522| CFT_MPEG_4A | 'm4a' | 音频的容器格式,M4A。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4523| CFT_MP3<sup>12+</sup> | 'mp3' | 音频的容器格式,MP3。 | 4524| CFT_WAV<sup>12+</sup> | 'wav' | 音频的容器格式,WAV。 | 4525 4526## Location 4527 4528视频录制的地理位置。 4529 4530**系统能力:** SystemCapability.Multimedia.Media.Core 4531 4532| 名称 | 类型 | 必填 | 说明 | 4533| --------- | ------ | ---- | ---------------- | 4534| latitude | number | 是 | 地理位置的纬度。 | 4535| longitude | number | 是 | 地理位置的经度。 | 4536 4537## EncoderInfo<sup>11+</sup> 4538 4539编码器和规格参数 4540 4541系统能力:SystemCapability.Multimedia.Media.AVRecorder 4542 4543| 名称 | 类型 | 可读 | 可写 | 说明 | 4544| ---------- | -------------------------------- | ---- | ---- | ------------------------------------------------------------ | 4545| mimeType | [CodecMimeType](#codecmimetype8) | 是 | 否 | 编码器MIME类型名称 | 4546| type | string | 是 | 否 | 编码器类型,audio表示音频编码器,video表示视频编码器 | 4547| bitRate | [Range](#range11) | 是 | 否 | 比特率,包含该编码器的最大和最小值 | 4548| frameRate | [Range](#range11) | 是 | 否 | 视频帧率,包含帧率的最大和最小值,仅视频编码器拥有 | 4549| width | [Range](#range11) | 是 | 否 | 视频帧的宽度,包含宽度的最大和最小值,仅视频编码器拥有 | 4550| height | [Range](#range11) | 是 | 否 | 视频帧的高度,包含高度的最大和最小值,仅视频编码器拥有 | 4551| channels | [Range](#range11) | 是 | 否 | 音频采集声道数,包含声道数的最大和最小值,仅音频编码器拥有 | 4552| sampleRate | Array\<number> | 是 | 否 | 音频采样率,包含所有可以使用的音频采样率值,仅音频编码器拥有 | 4553 4554## Range<sup>11+</sup> 4555 4556表示一个类型的范围 4557 4558系统能力:SystemCapability.Multimedia.Media.AVRecorder 4559 4560| 名称 | 类型 | 可读 | 可写 | 说明 | 4561| ---- | ------ | ---- | ---- | ------------ | 4562| min | number | 是 | 否 | 范围的最小值 | 4563| max | number | 是 | 否 | 范围的最大值 | 4564 4565## FileGenerationMode<sup>12+</sup> 4566 4567表示创建媒体文件模式的枚举。 4568 4569**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4570 4571| 名称 | 值 | 说明 | 4572| ----------------------------- | ---- | ------------------------------- | 4573| APP_CREATE | 0 | 由应用自行在沙箱创建媒体文件。 | 4574| AUTO_CREATE_CAMERA_SCENE | 1 | 由系统创建媒体文件,当前仅在相机录制场景下生效,会忽略应用设置的url。 | 4575 4576## AVTranscoder<sup>12+</sup> 4577 4578视频转码管理类,用于视频转码。在调用AVTranscoder的方法前,需要先通过createAVTranscoder()构建一个AVTranscoder实例。 4579 4580视频转码demo可参考:[视频转码开发指导](../../media/media/using-avtranscoder-for-transcodering.md) 4581 4582### 属性 4583 4584**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4585 4586| 名称 | 类型 | 只读 | 可选 | 说明 | 4587| ------- | ------------------------------------ | ---- | ---- | ------------------ | 4588| fdSrc<sup>12+</sup> | [AVFileDescriptor](#avfiledescriptor9) | 否 | 否 | 源媒体文件描述,通过该属性设置数据源。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。 | 4589| fdDst<sup>12+</sup> | number | 否 | 否 | 目标媒体文件描述,通过该属性设置数据输出。在创建AVTranscoder实例后,必须设置fdSrc和fdDst属性。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。 | 4590 4591### prepare<sup>12+</sup> 4592 4593prepare(config: AVTranscoderConfig): Promise\<void> 4594 4595异步方式进行视频转码的参数设置。通过Promise获取返回值。 4596 4597**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4598 4599**参数:** 4600 4601| 参数名 | 类型 | 必填 | 说明 | 4602| ------ | -------------------------------------- | ---- | -------------------------- | 4603| config | [AVTranscoderConfig](#avtranscoderconfig12) | 是 | 配置视频转码的相关参数。 | 4604 4605**返回值:** 4606 4607| 类型 | 说明 | 4608| -------------- | ------------------------------------------ | 4609| Promise\<void> | 异步视频转码prepare方法的Promise返回值。 | 4610 4611**错误码:** 4612 4613以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4614 4615| 错误码ID | 错误信息 | 4616| -------- | -------------------------------------- | 4617| 401 | The parameter check failed. Return by promise. | 4618| 5400102 | Operation not allowed. Return by promise. | 4619| 5400105 | Service died. Return by promise. | 4620| 5400106 | Unsupported format. Returned by promise. | 4621 4622**示例:** 4623 4624```ts 4625import { BusinessError } from '@kit.BasicServicesKit'; 4626 4627// 配置参数以实际硬件设备支持的范围为准 4628let avTranscoderConfig: media.AVTranscoderConfig = { 4629 audioBitrate : 200000, 4630 audioCodec : media.CodecMimeType.AUDIO_AAC, 4631 fileFormat : media.ContainerFormatType.CFT_MPEG_4, 4632 videoBitrate : 3000000, 4633 videoCodec : media.CodecMimeType.VIDEO_AVC, 4634 videoFrameWidth : 1280, 4635 videoFrameHeight : 720, 4636} 4637 4638avTranscoder.prepare(avTranscoderConfig).then(() => { 4639 console.info('prepare success'); 4640}).catch((err: BusinessError) => { 4641 console.error('prepare failed and catch error is ' + err.message); 4642}); 4643``` 4644 4645### start<sup>12+</sup> 4646 4647start(): Promise\<void> 4648 4649异步方式开始视频转码。通过Promise获取返回值。 4650 4651需要[prepare()](#prepare12)事件成功触发后,才能调用start方法。 4652 4653**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4654 4655**返回值:** 4656 4657| 类型 | 说明 | 4658| -------------- | ------------------------------------- | 4659| Promise\<void> | 异步开始视频转码方法的Promise返回值。 | 4660 4661**错误码:** 4662 4663以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4664 4665| 错误码ID | 错误信息 | 4666| -------- | -------------------------------------- | 4667| 5400102 | Operation not allowed. Return by promise. | 4668| 5400103 | IO error. Return by promise. | 4669| 5400105 | Service died. Return by promise. | 4670 4671**示例:** 4672 4673```ts 4674import { BusinessError } from '@kit.BasicServicesKit'; 4675 4676avTranscoder.start().then(() => { 4677 console.info('start AVTranscoder success'); 4678}).catch((err: BusinessError) => { 4679 console.error('start AVTranscoder failed and catch error is ' + err.message); 4680}); 4681``` 4682 4683### pause<sup>12+</sup> 4684 4685pause(): Promise\<void> 4686 4687异步方式暂停视频转码。通过Promise获取返回值。 4688 4689需要[start()](#start12)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume12)接口来恢复转码。 4690 4691**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4692 4693**返回值:** 4694 4695| 类型 | 说明 | 4696| -------------- | ------------------------------------- | 4697| Promise\<void> | 异步暂停视频转码方法的Promise返回值。 | 4698 4699**错误码:** 4700 4701以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4702 4703| 错误码ID | 错误信息 | 4704| -------- | -------------------------------------- | 4705| 5400102 | Operation not allowed. Return by promise. | 4706| 5400103 | IO error. Return by promise. | 4707| 5400105 | Service died. Return by promise. | 4708 4709**示例:** 4710 4711```ts 4712import { BusinessError } from '@kit.BasicServicesKit'; 4713 4714avTranscoder.pause().then(() => { 4715 console.info('pause AVTranscoder success'); 4716}).catch((err: BusinessError) => { 4717 console.error('pause AVTranscoder failed and catch error is ' + err.message); 4718}); 4719``` 4720 4721### resume<sup>12+</sup> 4722 4723resume(): Promise\<void> 4724 4725异步方式恢复视频转码。通过Promise获取返回值。 4726 4727需要在[pause()](#pause12)事件成功触发后,才能调用resume方法。 4728 4729**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4730 4731**返回值:** 4732 4733| 类型 | 说明 | 4734| -------------- | ------------------------------------- | 4735| Promise\<void> | 异步恢复视频转码方法的Promise返回值。 | 4736 4737**错误码:** 4738 4739以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4740 4741| 错误码ID | 错误信息 | 4742| -------- | -------------------------------------- | 4743| 5400102 | Operation not allowed. Return by promise. | 4744| 5400103 | IO error. Return by promise. | 4745| 5400105 | Service died. Return by promise. | 4746 4747**示例:** 4748 4749```ts 4750import { BusinessError } from '@kit.BasicServicesKit'; 4751 4752avTranscoder.resume().then(() => { 4753 console.info('resume AVTranscoder success'); 4754}).catch((err: BusinessError) => { 4755 console.error('resume AVTranscoder failed and catch error is ' + err.message); 4756}); 4757``` 4758 4759### cancel<sup>12+</sup> 4760 4761cancel(): Promise\<void> 4762 4763异步方式取消视频转码。通过Promise获取返回值。 4764 4765需要在[prepare()](#prepare12)、[start()](#start12)、[pause()](#pause12)或[resume()](#resume12)事件成功触发后,才能调用cancel方法。 4766 4767**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4768 4769**返回值:** 4770 4771| 类型 | 说明 | 4772| -------------- | ------------------------------------- | 4773| Promise\<void> | 异步取消视频转码方法的Promise返回值。 | 4774 4775**错误码:** 4776 4777以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4778 4779| 错误码ID | 错误信息 | 4780| -------- | -------------------------------------- | 4781| 5400102 | Operation not allowed. Return by promise. | 4782| 5400103 | IO error. Return by promise. | 4783| 5400105 | Service died. Return by promise. | 4784 4785**示例:** 4786 4787```ts 4788import { BusinessError } from '@kit.BasicServicesKit'; 4789 4790avTranscoder.cancel().then(() => { 4791 console.info('cancel AVTranscoder success'); 4792}).catch((err: BusinessError) => { 4793 console.error('cancel AVTranscoder failed and catch error is ' + err.message); 4794}); 4795``` 4796 4797### release<sup>12+</sup> 4798 4799release(): Promise\<void> 4800 4801异步方式释放视频转码资源。通过Promise获取返回值。 4802 4803释放视频转码资源之后,该AVTranscoder实例不能再进行任何操作。 4804 4805**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4806 4807**返回值:** 4808 4809| 类型 | 说明 | 4810| -------------- | ------------------------------------------- | 4811| Promise\<void> | 异步释放视频转码资源方法的Promise返回值。 | 4812 4813**错误码:** 4814 4815以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4816 4817| 错误码ID | 错误信息 | 4818| -------- | --------------------------------- | 4819| 5400102 | Operation not allowed. Return by promise. | 4820| 5400105 | Service died. Return by promise. | 4821 4822**示例:** 4823 4824```ts 4825import { BusinessError } from '@kit.BasicServicesKit'; 4826 4827avTranscoder.release().then(() => { 4828 console.info('release AVTranscoder success'); 4829}).catch((err: BusinessError) => { 4830 console.error('release AVTranscoder failed and catch error is ' + err.message); 4831}); 4832``` 4833 4834### on('progressUpdate')<sup>12+</sup> 4835 4836on(type: 'progressUpdate', callback: Callback\<number>): void 4837 4838注册转码进度更新事件,并通过注册的回调方法通知用户。用户只能注册一个进度更新事件的回调方法,当用户重复注册时,以最后一次注册的回调接口为准。 4839 4840**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4841 4842**参数:** 4843 4844| 参数名 | 类型 | 必填 | 说明 | 4845| -------- | -------- | ---- | ------------------------------------------------------------ | 4846| type | string | 是 | 进度更新事件回调类型,支持的事件:'progressUpdate',在转码过程中系统会自动触发此事件。 | 4847| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 是 | 进度更新事件回调方法,progress: number,表示当前转码进度 | 4848 4849**示例:** 4850 4851```ts 4852avTranscoder.on('progressUpdate', (progress: number) => { 4853 console.info('avTranscoder progressUpdate = ' + progress); 4854}); 4855``` 4856 4857### off('progressUpdate')<sup>12+</sup> 4858 4859off(type:'progressUpdate', callback?: Callback\<number>): void 4860 4861取消注册转码进度更新事件。 4862 4863**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4864 4865**参数:** 4866 4867| 参数名 | 类型 | 必填 | 说明 | 4868| ------ | ------ | ---- | ------------------------------------------------------------ | 4869| type | string | 是 | 进度更新事件回调类型,支持的事件:'progressUpdate',用户操作和系统都会触发此事件。 | 4870| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 否 | 已注册的进度更新事件回调。由于当前回调注册时,仅会保留最后一次注册的回调,建议此参数缺省。 | 4871 4872**示例:** 4873 4874```ts 4875avTranscoder.off('progressUpdate'); 4876``` 4877 4878### on('error')<sup>12+</sup> 4879 4880on(type: 'error', callback: ErrorCallback): void 4881 4882注册AVtranscoder的错误事件,该事件仅用于错误提示。如果AVTranscoder上报error事件,用户需要通过[release()](#release12)退出转码操作。 4883 4884用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 4885 4886**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4887 4888**参数:** 4889 4890| 参数名 | 类型 | 必填 | 说明 | 4891| -------- | ------------- | ---- | ------------------------------------------------------------ | 4892| type | string | 是 | 转码错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 4893| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 转码错误事件回调方法。 | 4894 4895**错误码:** 4896 4897以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4898 4899| 错误码ID | 错误信息 | 4900| -------- | ------------------------------------------ | 4901| 401 | The parameter check failed. | 4902| 801 | Capability not supported. | 4903| 5400101 | No memory. | 4904| 5400102 | Operation not allowed. | 4905| 5400103 | I/O error. | 4906| 5400104 | Time out. | 4907| 5400105 | Service died. | 4908| 5400106 | Unsupported format. | 4909 4910**示例:** 4911 4912```ts 4913import { BusinessError } from '@kit.BasicServicesKit'; 4914 4915avTranscoder.on('error', (err: BusinessError) => { 4916 console.info('case avTranscoder.on(error) called, errMessage is ' + err.message); 4917}); 4918``` 4919 4920### off('error')<sup>12+</sup> 4921 4922off(type:'error', callback?: ErrorCallback): void 4923 4924取消注册转码错误事件,取消后不再接收到AVTranscoder的错误事件。 4925 4926**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4927 4928**参数:** 4929 4930| 参数名 | 类型 | 必填 | 说明 | 4931| ------ | ------ | ---- | ------------------------------------------------------------ | 4932| type | string | 是 | 转码错误事件回调类型'error'。 <br>- 'error':转码过程中发生错误,触发该事件。 | 4933| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 错误事件回调方法 | 4934 4935**示例:** 4936 4937```ts 4938avTranscoder.off('error'); 4939``` 4940 4941### on('complete')<sup>12+</sup> 4942 4943on(type: 'complete', callback: Callback\<void>): void 4944 4945注册转码完成事件,并通过注册的回调方法通知用户。用户只能注册一个进度更新事件的回调方法,当用户重复注册时,以最后一次注册的回调接口为准。 4946 4947当AVTranscoder上报complete事件时,当前转码操作已完成,用户可通过[release()](#release12)退出转码操作。 4948 4949**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4950 4951**参数:** 4952 4953| 参数名 | 类型 | 必填 | 说明 | 4954| -------- | -------- | ---- | ------------------------------------------------------------ | 4955| type | string | 是 | 完成事件回调类型,支持的事件:'complete',在转码过程中系统会自动触发此事件。 | 4956| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 是 | 完成事件回调方法 | 4957 4958**示例:** 4959 4960```ts 4961avTranscoder.on('complete', () => { 4962 console.info('avTranscoder complete'); 4963}); 4964``` 4965 4966### off('complete')<sup>12+</sup> 4967 4968off(type:'complete', callback?: Callback\<void>): void 4969 4970取消注册转码完成事件。 4971 4972**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4973 4974**参数:** 4975 4976| 参数名 | 类型 | 必填 | 说明 | 4977| ------ | ------ | ---- | ------------------------------------------------------------ | 4978| type | string | 是 | 转码完成事件回调类型,支持的事件:'complete',用户操作和系统都会触发此事件。 | 4979| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 否 | 完成事件回调方法 | 4980 4981**示例:** 4982 4983```ts 4984avTranscoder.off('complete'); 4985``` 4986 4987## AVTranscoderConfig<sup>12+</sup> 4988 4989表示视频转码的参数设置。 4990 4991**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4992 4993| 名称 | 类型 | 只读 | 可选 | 说明 | 4994| --------------- | ---------------------------------------- |---- | ---- | ------------------------------------------------------------ | 4995| audioBitrate | number | 否 | 是 | 输出音频的码率,单位为比特率(bps)。用户不设置,则默认设置为48Kbps| 4996| audioCodec | [CodecMimeType](#codecmimetype8) | 否 | 是 | 输出音频的编码格式,当前仅支持AAC。 | 4997| fileFormat | [ContainerFormatType](#containerformattype8) | 否 | 否 | 输出视频文件的封装格式,当前视频文件仅支持MP4。| 4998| videoBitrate | number | 否 | 是 | 输出视频的码率,单位为比特率(bps)。用户不设置,则默认码率按输出视频的分辨率设置,[240p,480P]默认码率值为1Mbps,(480P,720P]默认码率值为2Mbps,(720P,1080P]默认码率值为4Mbps,1080P及以上默认值为8Mbps。| 4999| videoCodec | [CodecMimeType](#codecmimetype8) | 否 | 是 | 输出视频的编码格式,当前仅支持AVC和HEVC。| 5000| videoFrameWidth | number | 否 | 是 | 输出视频帧的宽,单位为像素(px)。用户不设置,则默认设置为源视频帧的宽| 5001| videoFrameHeight | number | 否 | 是 | 输出视频帧的高,单位为像素(px)。用户不设置,则默认设置为源视频帧的高| 5002 5003 5004 5005## AVMetadataExtractor<sup>11+</sup> 5006 5007元数据获取类,用于从媒体资源中获取元数据。在调用AVMetadataExtractor的方法前,需要先通过[createAVMetadataExtractor()](#mediacreateavmetadataextractor11)构建一个AVMetadataExtractor实例。 5008 5009获取音频或视频元数据的demo可参考:[获取音视频元数据开发指导](../../media/media/avmetadataextractor.md)。 5010 5011### 属性 5012 5013**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5014 5015| 名称 | 类型 | 可读 | 可写 | 说明 | 5016| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 5017| 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。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致音视频元数据获取异常。 | 5018| dataSrc<sup>11+</sup> | [AVDataSrcDescriptor](#avdatasrcdescriptor10) | 是 | 是 | 流式媒体资源描述,通过该属性设置数据源。在获取元数据之前,必须设置数据源属性,只能设置fdSrc和dataSrc的其中一个。<br/> 当应用从远端获取音视频媒体文件,在应用未下载完整音视频资源时,可以设置dataSrc提前获取该资源的元数据。| 5019 5020### fetchMetadata<sup>11+</sup> 5021 5022fetchMetadata(callback: AsyncCallback\<AVMetadata>): void 5023 5024异步方式获取媒体元数据。通过注册回调函数获取返回值。 5025 5026**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5027 5028**参数:** 5029 5030| 参数名 | 类型 | 必填 | 说明 | 5031| -------- | -------------------------------------------- | ---- | ----------------------------------- | 5032| callback | AsyncCallback\<[AVMetadata](#avmetadata11)> | 是 | 回调函数。异步返回音视频元数据对象(AVMetadata)。| 5033 5034**错误码:** 5035 5036以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5037 5038| 错误码ID | 错误信息 | 5039| -------- | ------------------------------------------ | 5040| 5400102 | Operation not allowed. Returned by callback. | 5041| 5400106 | Unsupported format. Returned by callback. | 5042 5043**示例:** 5044 5045```ts 5046import { BusinessError } from '@kit.BasicServicesKit'; 5047 5048avMetadataExtractor.fetchMetadata((error: BusinessError, metadata: media.AVMetadata) => { 5049 if (error) { 5050 console.error(`Failed to fetch Metadata, err = ${JSON.stringify(error)}`); 5051 return; 5052 } 5053 console.info(`Succeeded in fetching Metadata, genre: ${metadata.genre}`); 5054}); 5055``` 5056 5057### fetchMetadata<sup>11+</sup> 5058 5059fetchMetadata(): Promise\<AVMetadata> 5060 5061异步方式获取媒体元数据。通过Promise获取返回值。 5062 5063**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5064 5065**返回值:** 5066 5067| 类型 | 说明 | 5068| -------------- | ---------------------------------------- | 5069| Promise\<[AVMetadata](#avmetadata11)> | Promise对象。异步返回音视频元数据对象(AVMetadata)。 | 5070 5071**错误码:** 5072 5073以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5074 5075| 错误码ID | 错误信息 | 5076| -------- | ----------------------------------------- | 5077| 5400102 | Operation not allowed. Returned by promise. | 5078| 5400106 | Unsupported format. Returned by promise. | 5079 5080**示例:** 5081 5082```ts 5083import { BusinessError } from '@kit.BasicServicesKit'; 5084 5085avMetadataExtractor.fetchMetadata().then((metadata: media.AVMetadata) => { 5086 console.info(`Succeeded in fetching Metadata, genre: ${metadata.genre}`) 5087}).catch((error: BusinessError) => { 5088 console.error(`Failed to fetch Metadata, error message:${error.message}`); 5089}); 5090``` 5091 5092### fetchAlbumCover<sup>11+</sup> 5093 5094fetchAlbumCover(callback: AsyncCallback\<image.PixelMap>): void 5095 5096异步方式获取音频专辑封面。通过注册回调函数获取返回值。 5097 5098**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5099 5100**参数:** 5101 5102| 参数名 | 类型 | 必填 | 说明 | 5103| -------- | -------------------------------------------- | ---- | ----------------------------------- | 5104| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | 是 | 回调函数。异步返回专辑封面。 | 5105 5106**错误码:** 5107 5108以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5109 5110| 错误码ID | 错误信息 | 5111| -------- | ------------------------------------------ | 5112| 5400102 | Operation not allowed. Return by callback. | 5113| 5400106 | Unsupported format. Returned by callback. | 5114 5115**示例:** 5116 5117```ts 5118import { BusinessError } from '@kit.BasicServicesKit'; 5119import { image } from '@kit.ImageKit'; 5120 5121let pixel_map : image.PixelMap | undefined = undefined; 5122 5123avMetadataExtractor.fetchAlbumCover((error: BusinessError, pixelMap: image.PixelMap) => { 5124 if (error) { 5125 console.error(`Failed to fetch AlbumCover, error = ${JSON.stringify(error)}`); 5126 return; 5127 } 5128 pixel_map = pixelMap; 5129}); 5130``` 5131 5132### fetchAlbumCover<sup>11+</sup> 5133 5134fetchAlbumCover(): Promise\<image.PixelMap> 5135 5136异步方式获取专辑封面。通过Promise获取返回值。 5137 5138**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5139 5140**返回值:** 5141 5142| 类型 | 说明 | 5143| -------------- | ---------------------------------------- | 5144| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise对象。异步返回专辑封面。 | 5145 5146**错误码:** 5147 5148以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5149 5150| 错误码ID | 错误信息 | 5151| -------- | ----------------------------------------- | 5152| 5400102 | Operation not allowed. Returned by promise. | 5153| 5400106 | Unsupported format. Returned by promise. | 5154 5155**示例:** 5156 5157```ts 5158import { BusinessError } from '@kit.BasicServicesKit'; 5159import { image } from '@kit.ImageKit'; 5160 5161let pixel_map : image.PixelMap | undefined = undefined; 5162 5163avMetadataExtractor.fetchAlbumCover().then((pixelMap: image.PixelMap) => { 5164 pixel_map = pixelMap; 5165}).catch((error: BusinessError) => { 5166 console.error(`Failed to fetch AlbumCover, error message:${error.message}`); 5167}); 5168``` 5169 5170### release<sup>11+</sup> 5171 5172release(callback: AsyncCallback\<void>): void 5173 5174异步方式释放资源。通过注册回调函数获取返回值。 5175 5176**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5177 5178**参数:** 5179 5180| 参数名 | 类型 | 必填 | 说明 | 5181| -------- | -------------------------------------------- | ---- | ----------------------------------- | 5182| callback | AsyncCallback\<void> | 是 |回调函数。当释放资源成功,err为undefined,否则为错误对象。 | 5183 5184**错误码:** 5185 5186以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5187 5188| 错误码ID | 错误信息 | 5189| -------- | ------------------------------------------ | 5190| 5400102 | Operation not allowed. Returned by callback. | 5191 5192**示例:** 5193 5194```ts 5195import { BusinessError } from '@kit.BasicServicesKit'; 5196 5197avMetadataExtractor.release((error: BusinessError) => { 5198 if (error) { 5199 console.error(`Failed to release, err = ${JSON.stringify(error)}`); 5200 return; 5201 } 5202 console.info(`Succeeded in releasing.`); 5203}); 5204``` 5205 5206### release<sup>11+</sup> 5207 5208release(): Promise\<void> 5209 5210异步方式释放资源。通过Promise获取返回值。 5211 5212**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5213 5214**返回值:** 5215 5216| 类型 | 说明 | 5217| -------------- | ---------------------------------------- | 5218| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 | 5219 5220**错误码:** 5221 5222以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5223 5224| 错误码ID | 错误信息 | 5225| -------- | ----------------------------------------- | 5226| 5400102 | Operation not allowed. Returned by promise. | 5227 5228**示例:** 5229 5230```ts 5231import { BusinessError } from '@kit.BasicServicesKit'; 5232 5233avMetadataExtractor.release().then(() => { 5234 console.info(`Succeeded in releasing.`); 5235}).catch((error: BusinessError) => { 5236 console.error(`Failed to release, error message:${error.message}`); 5237}); 5238``` 5239 5240## AVMetadata<sup>11+</sup> 5241 5242音视频元数据,包含各个元数据字段。在[AVRecorderConfig](#avrecorderconfig9)中使用时未声明为当前版本只读的参数可以作为使用[AVRecorder](#avrecorder9)录制时的入参。 5243 5244**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5245 5246| 名称 | 类型 | 必填 | 说明 | 5247| ------ | ------ | ---- | ------------------------------------------------------------ | 5248| album | string | 否 | 专辑的标题。当前版本为只读参数。 | 5249| albumArtist | string | 否 | 专辑的艺术家。当前版本为只读参数。 | 5250| artist | string | 否 | 媒体资源的艺术家。当前版本为只读参数。 | 5251| author | string | 否 | 媒体资源的作者。当前版本为只读参数。 | 5252| dateTime | string | 否 | 媒体资源的创建时间。当前版本为只读参数。 | 5253| dateTimeFormat | string | 否 | 媒体资源的创建时间,按YYYY-MM-DD HH:mm:ss格式输出。当前版本为只读参数。 | 5254| composer | string | 否 | 媒体资源的作曲家。当前版本为只读参数。 | 5255| duration | string | 否 | 媒体资源的时长。当前版本为只读参数。 | 5256| genre | string | 否 | 媒体资源的类型或体裁。| 5257| hasAudio | string | 否 | 媒体资源是否包含音频。当前版本为只读参数。 | 5258| hasVideo | string | 否 | 媒体资源是否包含视频。当前版本为只读参数。 | 5259| mimeType | string | 否 | 媒体资源的mime类型。当前版本为只读参数。 | 5260| trackCount | string | 否 | 媒体资源的轨道数量。当前版本为只读参数。 | 5261| sampleRate | string | 否 | 音频的采样率,单位为赫兹(Hz)。当前版本为只读参数。 | 5262| title | string | 否 | 媒体资源的标题。当前版本为只读参数。当前版本为只读参数。 | 5263| videoHeight | string | 否 | 视频的高度,单位为像素。当前版本为只读参数。 | 5264| videoWidth | string | 否 | 视频的宽度,单位为像素。当前版本为只读参数。 | 5265| videoOrientation | string | 否 | 视频的旋转方向,单位为度(°)。| 5266| hdrType<sup>12+</sup> | [HdrType](#hdrtype12) | 否 | 媒体资源的HDR类型。当前版本为只读参数。 | 5267| location<sup>12+</sup> | [Location](#location) | 否 | 视频的地理位置信息。 | 5268| customInfo<sup>12+</sup> | Record<string, string> | 否 | 从moov.meta.list 获取的自定义参数键值映射。| 5269 5270## HdrType<sup>12+</sup> 5271 5272表示视频HDR类型的枚举。 5273 5274**系统能力:** SystemCapability.Multimedia.Media.Core 5275 5276| 名称 | 值 | 说明 | 5277| ------------------------- | ---- | ---------------------- | 5278| AV_HDR_TYPE_NONE | 0 | 表示无HDR类型。 | 5279| AV_HDR_TYPE_VIVID | 1 | 表示为HDR VIVID类型。 | 5280 5281## media.createAudioPlayer<sup>(deprecated)</sup> 5282 5283createAudioPlayer(): AudioPlayer 5284 5285同步方式创建音频播放实例。 5286 5287> **说明:** 5288> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。 5289 5290**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5291 5292**返回值:** 5293 5294| 类型 | 说明 | 5295| --------------------------- | ------------------------------------------------------------ | 5296| [AudioPlayer](#audioplayerdeprecated) | 返回AudioPlayer类实例,失败时返回null。可用于音频播放、暂停、停止等操作。 | 5297 5298**示例:** 5299 5300```ts 5301let audioPlayer: media.AudioPlayer = media.createAudioPlayer(); 5302``` 5303 5304## media.createVideoPlayer<sup>(deprecated)</sup> 5305 5306createVideoPlayer(callback: AsyncCallback\<VideoPlayer>): void 5307 5308异步方式创建视频播放实例,通过注册回调函数获取返回值。 5309 5310> **说明:** 5311> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。 5312 5313**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5314 5315**参数:** 5316 5317| 参数名 | 类型 | 必填 | 说明 | 5318| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ | 5319| callback | AsyncCallback<[VideoPlayer](#videoplayerdeprecated)> | 是 | 回调函数。创建VideoPlayer实例成功时,err为undefined,data为获取到的VideoPlayer实例,否则为错误对象。 | 5320 5321**示例:** 5322 5323```ts 5324import { BusinessError } from '@kit.BasicServicesKit'; 5325 5326let videoPlayer: media.VideoPlayer; 5327media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 5328 if (video != null) { 5329 videoPlayer = video; 5330 console.info('Succeeded in creating VideoPlayer'); 5331 } else { 5332 console.error(`Failed to create VideoPlayer, error:${error}`); 5333 } 5334}); 5335``` 5336 5337## media.createVideoPlayer<sup>(deprecated)</sup> 5338 5339createVideoPlayer(): Promise\<VideoPlayer> 5340 5341异步方式创建视频播放实例,通过Promise获取返回值。 5342 5343> **说明:** 5344> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9-1)替代。 5345 5346**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5347 5348**返回值:** 5349 5350| 类型 | 说明 | 5351| ------------------------------------ | ------------------------------------------------------------ | 5352| Promise<[VideoPlayer](#videoplayerdeprecated)> | Promise对象。异步返回VideoPlayer实例,失败时返回null。可用于管理和播放视频媒体。 | 5353 5354**示例:** 5355 5356```ts 5357import { BusinessError } from '@kit.BasicServicesKit'; 5358 5359let videoPlayer: media.VideoPlayer; 5360media.createVideoPlayer().then((video: media.VideoPlayer) => { 5361 if (video != null) { 5362 videoPlayer = video; 5363 console.info('Succeeded in creating VideoPlayer'); 5364 } else { 5365 console.error('Failed to create VideoPlayer'); 5366 } 5367}).catch((error: BusinessError) => { 5368 console.error(`Failed to create VideoPlayer, error:${error}`); 5369}); 5370``` 5371 5372## media.createAudioRecorder<sup>(deprecated)</sup> 5373 5374createAudioRecorder(): AudioRecorder 5375 5376创建音频录制的实例来控制音频的录制。 5377一台设备只允许创建一个录制实例。 5378 5379> **说明:** 5380> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVRecorder](#mediacreateavrecorder9)替代。 5381 5382**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 5383 5384**返回值:** 5385 5386| 类型 | 说明 | 5387| ------------------------------- | ------------------------------------------------------------ | 5388| [AudioRecorder](#audiorecorderdeprecated) | 返回AudioRecorder类实例,失败时返回null。可用于录制音频媒体。 | 5389 5390**示例:** 5391 5392```ts 5393let audioRecorder: media.AudioRecorder = media.createAudioRecorder(); 5394``` 5395 5396## MediaErrorCode<sup>(deprecated)</sup> 5397 5398媒体服务错误类型枚举。 5399 5400> **说明:** 5401> 从API version 8开始支持,从API version 11开始废弃,建议使用[媒体错误码](#averrorcode9)替代。 5402 5403**系统能力:** SystemCapability.Multimedia.Media.Core 5404 5405| 名称 | 值 | 说明 | 5406| -------------------------- | ---- | -------------------------------------- | 5407| MSERR_OK | 0 | 表示操作成功。 | 5408| MSERR_NO_MEMORY | 1 | 表示申请内存失败,系统可能无可用内存。 | 5409| MSERR_OPERATION_NOT_PERMIT | 2 | 表示无权限执行此操作。 | 5410| MSERR_INVALID_VAL | 3 | 表示传入入参无效。 | 5411| MSERR_IO | 4 | 表示发生IO错误。 | 5412| MSERR_TIMEOUT | 5 | 表示操作超时。 | 5413| MSERR_UNKNOWN | 6 | 表示未知错误。 | 5414| MSERR_SERVICE_DIED | 7 | 表示服务端失效。 | 5415| MSERR_INVALID_STATE | 8 | 表示在当前状态下,不允许执行此操作。 | 5416| MSERR_UNSUPPORTED | 9 | 表示在当前版本下,不支持此操作。 | 5417 5418## AudioPlayer<sup>(deprecated)</sup> 5419 5420> **说明:** 5421> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。 5422 5423音频播放管理类,用于管理和播放音频媒体。在调用AudioPlayer的方法前,需要先通过[createAudioPlayer()](#mediacreateaudioplayerdeprecated)构建一个AudioPlayer实例。 5424 5425### 属性<sup>(deprecated)</sup> 5426 5427**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5428 5429| 名称 | 类型 | 只读 | 可选 | 说明 | 5430| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 5431| 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。 | 5432| 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/> | 5433| loop | boolean | 否 | 否 | 音频循环播放属性,设置为'true'表示循环播放。 | 5434| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 是 | 是 | 音频焦点模型。 | 5435| currentTime | number | 是 | 否 | 音频的当前播放位置,单位为毫秒(ms)。 | 5436| duration | number | 是 | 否 | 音频时长,单位为毫秒(ms)。 | 5437| state | [AudioState](#audiostatedeprecated) | 是 | 否 | 可以查询音频播放的状态,该状态不可作为调用play/pause/stop等状态切换的触发条件。 | 5438 5439### play<sup>(deprecated)</sup> 5440 5441play(): void 5442 5443开始播放音频资源,需在'dataLoad'事件成功触发后,才能调用。 5444 5445> **说明:** 5446> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。 5447 5448**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5449 5450**示例:** 5451 5452```ts 5453audioPlayer.on('play', () => { //设置'play'事件回调 5454 console.info('audio play called'); 5455}); 5456audioPlayer.play(); 5457``` 5458 5459### pause<sup>(deprecated)</sup> 5460 5461pause(): void 5462 5463暂停播放音频资源。 5464 5465> **说明:** 5466> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。 5467 5468**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5469 5470**示例:** 5471 5472```ts 5473audioPlayer.on('pause', () => { //设置'pause'事件回调 5474 console.info('audio pause called'); 5475}); 5476audioPlayer.pause(); 5477``` 5478 5479### stop<sup>(deprecated)</sup> 5480 5481stop(): void 5482 5483停止播放音频资源。 5484 5485> **说明:** 5486> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。 5487 5488**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5489 5490**示例:** 5491 5492```ts 5493audioPlayer.on('stop', () => { //设置'stop'事件回调 5494 console.info('audio stop called'); 5495}); 5496audioPlayer.stop(); 5497``` 5498 5499### reset<sup>(deprecated)</sup> 5500 5501reset(): void 5502 5503重置播放音频资源。 5504 5505> **说明:** 5506> 从API version 7开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。 5507 5508**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5509 5510**示例:** 5511 5512```ts 5513audioPlayer.on('reset', () => { //设置'reset'事件回调 5514 console.info('audio reset called'); 5515}); 5516audioPlayer.reset(); 5517``` 5518 5519### seek<sup>(deprecated)</sup> 5520 5521seek(timeMs: number): void 5522 5523跳转到指定播放位置。 5524 5525> **说明:** 5526> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 5527 5528**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5529 5530**参数:** 5531 5532| 参数名 | 类型 | 必填 | 说明 | 5533| ------ | ------ | ---- | ----------------------------------------------------------- | 5534| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围[0, duration]。 | 5535 5536**示例:** 5537 5538```ts 5539audioPlayer.on('timeUpdate', (seekDoneTime: number) => { //设置'timeUpdate'事件回调 5540 if (seekDoneTime == null) { 5541 console.error('Failed to seek'); 5542 return; 5543 } 5544 console.info('Succeeded in seek. seekDoneTime: ' + seekDoneTime); 5545}); 5546audioPlayer.seek(30000); //seek到30000ms的位置 5547``` 5548 5549### setVolume<sup>(deprecated)</sup> 5550 5551setVolume(vol: number): void 5552 5553设置音量。 5554 5555> **说明:** 5556> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。 5557 5558**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5559 5560**参数:** 5561 5562| 参数名 | 类型 | 必填 | 说明 | 5563| ------ | ------ | ---- | ------------------------------------------------------------ | 5564| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 5565 5566**示例:** 5567 5568```ts 5569audioPlayer.on('volumeChange', () => { //设置'volumeChange'事件回调 5570 console.info('audio volumeChange called'); 5571}); 5572audioPlayer.setVolume(1); //设置音量到100% 5573``` 5574 5575### release<sup>(deprecated)</sup> 5576 5577release(): void 5578 5579释放音频资源。 5580 5581> **说明:** 5582> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。 5583 5584**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5585 5586**示例:** 5587 5588```ts 5589audioPlayer.release(); 5590audioPlayer = undefined; 5591``` 5592 5593### getTrackDescription<sup>(deprecated)</sup> 5594 5595getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void 5596 5597获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。通过回调函数获取返回值。 5598 5599> **说明:** 5600> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。 5601 5602**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5603 5604**参数:** 5605 5606| 参数名 | 类型 | 必填 | 说明 | 5607| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ | 5608| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是 | 回调函数。获取音频轨道信息成功时,err为undefined,data为获取到的MediaDescription数组,否则为错误对象。 | 5609 5610**示例:** 5611 5612```ts 5613import { BusinessError } from '@kit.BasicServicesKit'; 5614 5615audioPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 5616 if (arrList != null) { 5617 console.info('Succeeded in getting TrackDescription'); 5618 } else { 5619 console.error(`Failed to get TrackDescription, error:${error}`); 5620 } 5621}); 5622``` 5623 5624### getTrackDescription<sup>(deprecated)</sup> 5625 5626getTrackDescription(): Promise\<Array\<MediaDescription>> 5627 5628获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。通过Promise获取返回值。 5629 5630> **说明:** 5631> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。 5632 5633**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5634 5635**返回值:** 5636 5637| 类型 | 说明 | 5638| ------------------------------------------------------ | ----------------------------------------------- | 5639| Promise<Array<[MediaDescription](#mediadescription8)>> | 音频轨道信息MediaDescription数组Promise返回值。 | 5640 5641**示例:** 5642 5643```ts 5644import { BusinessError } from '@kit.BasicServicesKit'; 5645 5646audioPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => { 5647 console.info('Succeeded in getting TrackDescription'); 5648}).catch((error: BusinessError) => { 5649 console.error(`Failed to get TrackDescription, error:${error}`); 5650}); 5651``` 5652 5653### on('bufferingUpdate')<sup>(deprecated)</sup> 5654 5655on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void 5656 5657开始订阅音频缓存更新事件。仅网络播放支持该订阅事件。 5658 5659> **说明:** 5660> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。 5661 5662**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5663 5664**参数:** 5665 5666| 参数名 | 类型 | 必填 | 说明 | 5667| -------- | -------- | ---- | ------------------------------------------------------------ | 5668| type | string | 是 | 音频缓存事件回调类型,支持的事件:'bufferingUpdate'。 | 5669| callback | function | 是 | 音频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)value值固定为0。 | 5670 5671**示例:** 5672 5673```ts 5674audioPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => { 5675 console.info('audio bufferingInfo type: ' + infoType); 5676 console.info('audio bufferingInfo value: ' + value); 5677}); 5678``` 5679 5680### on('play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange')<sup>(deprecated)</sup> 5681 5682on(type: 'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange', callback: () => void): void 5683 5684开始订阅音频播放事件。 5685 5686> **说明:** 5687> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。 5688 5689**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5690 5691**参数:** 5692 5693| 参数名 | 类型 | 必填 | 说明 | 5694| -------- | ---------- | ---- | ------------------------------------------------------------ | 5695| 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)调用,播放音量改变后触发该事件。 | 5696| callback | () => void | 是 | 播放事件回调方法。 | 5697 5698**示例:** 5699 5700```ts 5701import { fileIo as fs } from '@kit.CoreFileKit'; 5702import { BusinessError } from '@kit.BasicServicesKit'; 5703 5704let audioPlayer: media.AudioPlayer = media.createAudioPlayer(); //创建一个音频播放实例 5705audioPlayer.on('dataLoad', () => { //设置'dataLoad'事件回调,src属性设置成功后,触发此回调 5706 console.info('audio set source called'); 5707 audioPlayer.play(); //开始播放,并触发'play'事件回调 5708}); 5709audioPlayer.on('play', () => { //设置'play'事件回调 5710 console.info('audio play called'); 5711 audioPlayer.seek(30000); //调用seek方法,并触发'timeUpdate'事件回调 5712}); 5713audioPlayer.on('pause', () => { //设置'pause'事件回调 5714 console.info('audio pause called'); 5715 audioPlayer.stop(); //停止播放,并触发'stop'事件回调 5716}); 5717audioPlayer.on('reset', () => { //设置'reset'事件回调 5718 console.info('audio reset called'); 5719 audioPlayer.release(); //释放播放实例资源 5720 audioPlayer = undefined; 5721}); 5722audioPlayer.on('timeUpdate', (seekDoneTime: number) => { //设置'timeUpdate'事件回调 5723 if (seekDoneTime == null) { 5724 console.error('Failed to seek'); 5725 return; 5726 } 5727 console.info('Succeeded in seek, and seek time is ' + seekDoneTime); 5728 audioPlayer.setVolume(0.5); //设置音量为50%,并触发'volumeChange'事件回调 5729}); 5730audioPlayer.on('volumeChange', () => { //设置'volumeChange'事件回调 5731 console.info('audio volumeChange called'); 5732 audioPlayer.pause(); //暂停播放,并触发'pause'事件回调 5733}); 5734audioPlayer.on('finish', () => { //设置'finish'事件回调 5735 console.info('audio play finish'); 5736 audioPlayer.stop(); //停止播放,并触发'stop'事件回调 5737}); 5738audioPlayer.on('error', (error: BusinessError) => { //设置'error'事件回调 5739 console.error(`audio error called, error: ${error}`); 5740}); 5741 5742// 用户选择音频设置fd(本地播放) 5743let fdPath = 'fd://'; 5744// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" 命令,将其推送到设备上 5745let path = '/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3'; 5746fs.open(path).then((file) => { 5747 fdPath = fdPath + '' + file.fd; 5748 console.info('Succeeded in opening fd, fd is' + fdPath); 5749 audioPlayer.src = fdPath; //设置src属性,并触发'dataLoad'事件回调 5750}, (err: BusinessError) => { 5751 console.error('Failed to open fd, err is' + err); 5752}).catch((err: BusinessError) => { 5753 console.error('Failed to open fd, err is' + err); 5754}); 5755``` 5756 5757### on('timeUpdate')<sup>(deprecated)</sup> 5758 5759on(type: 'timeUpdate', callback: Callback\<number>): void 5760 5761开始订阅音频播放时间更新事件。处于播放状态时,每隔1s上报一次该事件。 5762 5763> **说明:** 5764> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('timeUpdate')](#ontimeupdate9)替代。 5765 5766**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5767 5768**参数:** 5769 5770| 参数名 | 类型 | 必填 | 说明 | 5771| -------- | ----------------- | ---- | ------------------------------------------------------------ | 5772| type | string | 是 | 播放事件回调类型,支持的事件包括:'timeUpdate'。<br>- 'timeUpdate':音频播放时间戳更新,开始播放后自动触发该事件。 | 5773| callback | Callback\<number> | 是 | 播放事件回调方法。回调方法入参为更新后的时间戳。 | 5774 5775**示例:** 5776 5777```ts 5778audioPlayer.on('timeUpdate', (newTime: number) => { //设置'timeUpdate'事件回调 5779 if (newTime == null) { 5780 console.error('Failed to do timeUpadate'); 5781 return; 5782 } 5783 console.info('Succeeded in doing timeUpadate. seekDoneTime: ' + newTime); 5784}); 5785audioPlayer.play(); //开始播放后,自动触发时间戳更新事件 5786``` 5787 5788### on('audioInterrupt')<sup>(deprecated)</sup> 5789 5790on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void 5791 5792监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。 5793 5794> **说明:** 5795> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。 5796 5797**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5798 5799**参数:** 5800 5801| 参数名 | 类型 | 必填 | 说明 | 5802| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | 5803| type | string | 是 | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 | 5804| callback | function | 是 | 音频焦点变化事件回调方法。 | 5805 5806**示例:** 5807 5808```ts 5809import { audio } from '@kit.AudioKit'; 5810 5811audioPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => { 5812 console.info('audioInterrupt called,and InterruptEvent info is:' + info) 5813}) 5814``` 5815 5816### on('error')<sup>(deprecated)</sup> 5817 5818on(type: 'error', callback: ErrorCallback): void 5819 5820开始订阅音频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。 5821 5822> **说明:** 5823> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。 5824 5825**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5826 5827**参数:** 5828 5829| 参数名 | 类型 | 必填 | 说明 | 5830| -------- | ------------- | ---- | ------------------------------------------------------------ | 5831| type | string | 是 | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':音频播放中发生错误,触发该事件。 | 5832| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 播放错误事件回调方法。 | 5833 5834**示例:** 5835 5836```ts 5837import { BusinessError } from '@kit.BasicServicesKit'; 5838 5839audioPlayer.on('error', (error: BusinessError) => { //设置'error'事件回调 5840 console.error(`audio error called, error: ${error}`); 5841}); 5842audioPlayer.setVolume(3); //设置volume为无效值,触发'error'事件 5843``` 5844 5845## AudioState<sup>(deprecated)</sup> 5846 5847type AudioState = 'idle' | 'playing' | 'paused' | 'stopped' | 'error' 5848 5849音频播放的状态机。可通过state属性获取当前状态。 5850 5851> **说明:** 5852> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。 5853 5854**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5855 5856| 类型 | 说明 | 5857| ------- | ---------------------------------------------- | 5858| 'idle' | 音频播放空闲,dataload/reset成功后处于此状态。 | 5859| 'playing' | 音频正在播放,play成功后处于此状态。 | 5860| 'paused' | 音频暂停播放,pause成功后处于此状态。 | 5861| 'stopped' | 音频播放停止,stop/播放结束后处于此状态。 | 5862| 'error' | 错误状态。 | 5863 5864## VideoPlayer<sup>(deprecated)</sup> 5865 5866> **说明:** 5867> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。 5868 5869视频播放管理类,用于管理和播放视频媒体。在调用VideoPlayer的方法前,需要先通过[createVideoPlayer()](#mediacreatevideoplayerdeprecated)构建一个VideoPlayer实例。 5870 5871### 属性 5872 5873**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5874 5875| 名称 | 类型 | 只读 | 可选 | 说明 | 5876| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 5877| 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。 | 5878| 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/> | 5879| loop<sup>8+</sup> | boolean | 否 | 否 | 视频循环播放属性,设置为'true'表示循环播放。 | 5880| videoScaleType<sup>9+</sup> | [VideoScaleType](#videoscaletype9) | 否 | 是 | 视频缩放模式。默认值为VIDEO_SCALE_TYPE_FIT。 | 5881| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 否 | 是 | 音频焦点模型。 | 5882| currentTime<sup>8+</sup> | number | 是 | 否 | 视频的当前播放位置,单位为毫秒(ms)。 | 5883| duration<sup>8+</sup> | number | 是 | 否 | 视频时长,单位为毫秒(ms),返回-1表示直播模式。 | 5884| state<sup>8+</sup> | [VideoPlayState](#videoplaystatedeprecated) | 是 | 否 | 视频播放的状态。 | 5885| width<sup>8+</sup> | number | 是 | 否 | 视频宽,单位为像素(px)。 | 5886| height<sup>8+</sup> | number | 是 | 否 | 视频高,单位为像素(px)。 | 5887 5888### setDisplaySurface<sup>(deprecated)</sup> 5889 5890setDisplaySurface(surfaceId: string, callback: AsyncCallback\<void>): void 5891 5892设置SurfaceId。通过回调函数获取返回值。 5893 5894*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。 5895 5896> **说明:** 5897> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。 5898 5899**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5900 5901**参数:** 5902 5903| 参数名 | 类型 | 必填 | 说明 | 5904| --------- | -------------------- | ---- | ------------------------- | 5905| surfaceId | string | 是 | SurfaceId | 5906| callback | AsyncCallback\<void> | 是 | 回调函数。当设置SurfaceId成功,err为undefined,否则为错误对象。 | 5907 5908**示例:** 5909 5910```ts 5911import { BusinessError } from '@kit.BasicServicesKit'; 5912 5913let surfaceId: string = ''; 5914videoPlayer.setDisplaySurface(surfaceId, (err: BusinessError) => { 5915 if (err) { 5916 console.error('Failed to set DisplaySurface!'); 5917 } else { 5918 console.info('Succeeded in setting DisplaySurface!'); 5919 } 5920}); 5921``` 5922 5923### setDisplaySurface<sup>(deprecated)</sup> 5924 5925setDisplaySurface(surfaceId: string): Promise\<void> 5926 5927设置SurfaceId。通过Promise获取返回值。 5928 5929*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。 5930 5931> **说明:** 5932> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。 5933 5934**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5935 5936**参数:** 5937 5938| 参数名 | 类型 | 必填 | 说明 | 5939| --------- | ------ | ---- | --------- | 5940| surfaceId | string | 是 | SurfaceId | 5941 5942**返回值:** 5943 5944| 类型 | 说明 | 5945| -------------- | ------------------------------ | 5946| Promise\<void> | 设置SurfaceId的Promise返回值。 | 5947 5948**示例:** 5949 5950```ts 5951import { BusinessError } from '@kit.BasicServicesKit'; 5952 5953let surfaceId: string = ''; 5954videoPlayer.setDisplaySurface(surfaceId).then(() => { 5955 console.info('Succeeded in setting DisplaySurface'); 5956}).catch((error: BusinessError) => { 5957 console.error(`video catchCallback, error:${error}`); 5958}); 5959``` 5960 5961### prepare<sup>(deprecated)</sup> 5962 5963prepare(callback: AsyncCallback\<void>): void 5964 5965准备播放视频。通过回调函数获取返回值。 5966 5967> **说明:** 5968> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9)替代。 5969 5970**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5971 5972**参数:** 5973 5974| 参数名 | 类型 | 必填 | 说明 | 5975| -------- | -------------------- | ---- | ------------------------ | 5976| callback | AsyncCallback\<void> | 是 | 回调函数。当准备播放视频成功,err为undefined,否则为错误对象。| 5977 5978**示例:** 5979 5980```ts 5981import { BusinessError } from '@kit.BasicServicesKit'; 5982 5983videoPlayer.prepare((err: BusinessError) => { 5984 if (err) { 5985 console.error('Failed to prepare!'); 5986 } else { 5987 console.info('Succeeded in preparing!'); 5988 } 5989}); 5990``` 5991 5992### prepare<sup>(deprecated)</sup> 5993 5994prepare(): Promise\<void> 5995 5996准备播放视频。通过Promise获取返回值。 5997 5998> **说明:** 5999> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9-1)替代。 6000 6001**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6002 6003**返回值:** 6004 6005| 类型 | 说明 | 6006| -------------- | ----------------------------- | 6007| Promise\<void> | 准备播放视频的Promise返回值。 | 6008 6009**示例:** 6010 6011```ts 6012import { BusinessError } from '@kit.BasicServicesKit'; 6013 6014videoPlayer.prepare().then(() => { 6015 console.info('Succeeded in preparing'); 6016}).catch((error: BusinessError) => { 6017 console.error(`video catchCallback, error:${error}`); 6018}); 6019``` 6020 6021### play<sup>(deprecated)</sup> 6022 6023play(callback: AsyncCallback\<void>): void 6024 6025开始播放视频。通过回调函数获取返回值。 6026 6027> **说明:** 6028> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。 6029 6030**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6031 6032**参数:** 6033 6034| 参数名 | 类型 | 必填 | 说明 | 6035| -------- | -------------------- | ---- | ------------------------ | 6036| callback | AsyncCallback\<void> | 是 | 回调函数。当开始播放视频成功,err为undefined,否则为错误对象。 | 6037 6038**示例:** 6039 6040```ts 6041import { BusinessError } from '@kit.BasicServicesKit'; 6042 6043videoPlayer.play((err: BusinessError) => { 6044 if (err) { 6045 console.error('Failed to play!'); 6046 } else { 6047 console.info('Succeeded in playing!'); 6048 } 6049}); 6050``` 6051 6052### play<sup>(deprecated)</sup> 6053 6054play(): Promise\<void> 6055 6056开始播放视频。通过Promise获取返回值。 6057 6058> **说明:** 6059> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9-1)替代。 6060 6061**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6062 6063**返回值:** 6064 6065| 类型 | 说明 | 6066| -------------- | ----------------------------- | 6067| Promise\<void> | 开始播放视频的Promise返回值。 | 6068 6069**示例:** 6070 6071```ts 6072import { BusinessError } from '@kit.BasicServicesKit'; 6073 6074videoPlayer.play().then(() => { 6075 console.info('Succeeded in playing'); 6076}).catch((error: BusinessError) => { 6077 console.error(`video catchCallback, error:${error}`); 6078}); 6079``` 6080 6081### pause<sup>(deprecated)</sup> 6082 6083pause(callback: AsyncCallback\<void>): void 6084 6085通过回调方式暂停播放视频。通过回调函数获取返回值。 6086 6087> **说明:** 6088> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。 6089 6090**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6091 6092**参数:** 6093 6094| 参数名 | 类型 | 必填 | 说明 | 6095| -------- | -------------------- | ---- | ------------------------ | 6096| callback | AsyncCallback\<void> | 是 | 回调函数。当暂停播放视频成功,err为undefined,否则为错误对象。 | 6097 6098**示例:** 6099 6100```ts 6101import { BusinessError } from '@kit.BasicServicesKit'; 6102 6103videoPlayer.pause((err: BusinessError) => { 6104 if (err) { 6105 console.error('Failed to pause!'); 6106 } else { 6107 console.info('Succeeded in pausing!'); 6108 } 6109}); 6110``` 6111 6112### pause<sup>(deprecated)</sup> 6113 6114pause(): Promise\<void> 6115 6116暂停播放视频。通过Promise获取返回值。 6117 6118> **说明:** 6119> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9-1)替代。 6120 6121**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6122 6123**返回值:** 6124 6125| 类型 | 说明 | 6126| -------------- | ----------------------------- | 6127| Promise\<void> | 暂停播放视频的Promise返回值。 | 6128 6129**示例:** 6130 6131```ts 6132import { BusinessError } from '@kit.BasicServicesKit'; 6133 6134videoPlayer.pause().then(() => { 6135 console.info('Succeeded in pausing'); 6136}).catch((error: BusinessError) => { 6137 console.error(`video catchCallback, error:${error}`); 6138}); 6139``` 6140 6141### stop<sup>(deprecated)</sup> 6142 6143stop(callback: AsyncCallback\<void>): void 6144 6145通过回调方式停止播放视频。通过回调函数获取返回值。 6146 6147> **说明:** 6148> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。 6149 6150**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6151 6152**参数:** 6153 6154| 参数名 | 类型 | 必填 | 说明 | 6155| -------- | -------------------- | ---- | ------------------------ | 6156| callback | AsyncCallback\<void> | 是 | 回调函数。当停止播放视频成功,err为undefined,否则为错误对象。 | 6157 6158**示例:** 6159 6160```ts 6161import { BusinessError } from '@kit.BasicServicesKit'; 6162 6163videoPlayer.stop((err: BusinessError) => { 6164 if (err) { 6165 console.error('Failed to stop!'); 6166 } else { 6167 console.info('Succeeded in stopping!'); 6168 } 6169}); 6170``` 6171 6172### stop<sup>(deprecated)</sup> 6173 6174stop(): Promise\<void> 6175 6176停止播放视频。通过Promise获取返回值。 6177 6178> **说明:** 6179> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9-1)替代。 6180 6181**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6182 6183**返回值:** 6184 6185| 类型 | 说明 | 6186| -------------- | ----------------------------- | 6187| Promise\<void> | 停止播放视频的Promise返回值。 | 6188 6189**示例:** 6190 6191```ts 6192import { BusinessError } from '@kit.BasicServicesKit'; 6193 6194videoPlayer.stop().then(() => { 6195 console.info('Succeeded in stopping'); 6196}).catch((error: BusinessError) => { 6197 console.error(`video catchCallback, error:${error}`); 6198}); 6199``` 6200 6201### reset<sup>(deprecated)</sup> 6202 6203reset(callback: AsyncCallback\<void>): void 6204 6205重置播放视频。通过回调函数获取返回值。 6206 6207> **说明:** 6208> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。 6209 6210**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6211 6212**参数:** 6213 6214| 参数名 | 类型 | 必填 | 说明 | 6215| -------- | -------------------- | ---- | ------------------------ | 6216| callback | AsyncCallback\<void> | 是 | 回调函数。当重置播放视频成功,err为undefined,否则为错误对象。 | 6217 6218**示例:** 6219 6220```ts 6221import { BusinessError } from '@kit.BasicServicesKit'; 6222 6223videoPlayer.reset((err: BusinessError) => { 6224 if (err) { 6225 console.error('Failed to reset!'); 6226 } else { 6227 console.info('Succeeded in resetting!'); 6228 } 6229}); 6230``` 6231 6232### reset<sup>(deprecated)</sup> 6233 6234reset(): Promise\<void> 6235 6236重置播放视频。通过Promise获取返回值。 6237 6238> **说明:** 6239> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9-1)替代。 6240 6241**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6242 6243**返回值:** 6244 6245| 类型 | 说明 | 6246| -------------- | ----------------------------- | 6247| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 6248 6249**示例:** 6250 6251```ts 6252import { BusinessError } from '@kit.BasicServicesKit'; 6253 6254videoPlayer.reset().then(() => { 6255 console.info('Succeeded in resetting'); 6256}).catch((error: BusinessError) => { 6257 console.error(`video catchCallback, error:${error}`); 6258}); 6259``` 6260 6261### seek<sup>(deprecated)</sup> 6262 6263seek(timeMs: number, callback: AsyncCallback\<number>): void 6264 6265跳转到指定播放位置,默认跳转到指定时间点的上一个关键帧。通过回调函数获取返回值。 6266 6267> **说明:** 6268> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 6269 6270**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6271 6272**参数:** 6273 6274| 参数名 | 类型 | 必填 | 说明 | 6275| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 6276| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 6277| callback | AsyncCallback\<number> | 是 | 回调函数。跳转到指定播放位置成功时,err为undefined,data为获取到的跳转到的播放位置,否则为错误对象。 | 6278 6279**示例:** 6280 6281```ts 6282import { BusinessError } from '@kit.BasicServicesKit'; 6283 6284let videoPlayer: media.VideoPlayer; 6285media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6286 if (video != null) { 6287 videoPlayer = video; 6288 console.info('Succeeded in creating VideoPlayer'); 6289 } else { 6290 console.error(`Failed to create VideoPlayer, error:${error}`); 6291 } 6292}); 6293 6294let seekTime: number = 5000; 6295videoPlayer.seek(seekTime, (err: BusinessError, result: number) => { 6296 if (err) { 6297 console.error('Failed to do seek!'); 6298 } else { 6299 console.info('Succeeded in doing seek!'); 6300 } 6301}); 6302``` 6303 6304### seek<sup>(deprecated)</sup> 6305 6306seek(timeMs: number, mode:SeekMode, callback: AsyncCallback\<number>): void 6307 6308跳转到指定播放位置。通过回调函数获取返回值。 6309 6310> **说明:** 6311> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 6312 6313**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6314 6315**参数:** 6316 6317| 参数名 | 类型 | 必填 | 说明 | 6318| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 6319| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 6320| mode | [SeekMode](#seekmode8) | 是 | 跳转模式。 | 6321| callback | AsyncCallback\<number> | 是 | 回调函数。跳转到指定播放位置成功时,err为undefined,data为获取到的跳转到的播放位置,否则为错误对象。 | 6322 6323**示例:** 6324 6325```ts 6326import { BusinessError } from '@kit.BasicServicesKit'; 6327 6328let videoPlayer: media.VideoPlayer | null = null; 6329media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6330 if (video != null) { 6331 videoPlayer = video; 6332 console.info('Succeeded in creating VideoPlayer'); 6333 } else { 6334 console.error(`Failed to create VideoPlayer, error:${error}`); 6335 } 6336}); 6337let seekTime: number = 5000; 6338if (videoPlayer) { 6339 (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC, (err: BusinessError, result: number) => { 6340 if (err) { 6341 console.error('Failed to do seek!'); 6342 } else { 6343 console.info('Succeeded in doing seek!'); 6344 } 6345 }); 6346} 6347``` 6348 6349### seek<sup>(deprecated)</sup> 6350 6351seek(timeMs: number, mode?:SeekMode): Promise\<number> 6352 6353跳转到指定播放位置,如果没有设置mode则跳转到指定时间点的上一个关键帧。通过Promise获取返回值。 6354 6355> **说明:** 6356> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 6357 6358**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6359 6360**参数:** 6361 6362| 参数名 | 类型 | 必填 | 说明 | 6363| ------ | ---------------------- | ---- | ------------------------------------------------------------ | 6364| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 6365| mode | [SeekMode](#seekmode8) | 否 | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式。 | 6366 6367**返回值:** 6368 6369| 类型 | 说明 | 6370| ---------------- | ------------------------------------------- | 6371| Promise\<number> | 跳转到指定播放位置的Promise返回值,单位ms。 | 6372 6373**示例:** 6374 6375```ts 6376import { BusinessError } from '@kit.BasicServicesKit'; 6377 6378let videoPlayer: media.VideoPlayer | null = null; 6379media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6380 if (video != null) { 6381 videoPlayer = video; 6382 console.info('Succeeded in creating VideoPlayer'); 6383 } else { 6384 console.error(`Failed to create VideoPlayer, error:${error}`); 6385 } 6386}); 6387let seekTime: number = 5000; 6388if (videoPlayer) { 6389 (videoPlayer as media.VideoPlayer).seek(seekTime).then((seekDoneTime: number) => { // seekDoneTime表示seek完成后的时间点 6390 console.info('Succeeded in doing seek'); 6391 }).catch((error: BusinessError) => { 6392 console.error(`video catchCallback, error:${error}`); 6393 }); 6394 6395 (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime: number) => { 6396 console.info('Succeeded in doing seek'); 6397 }).catch((error: BusinessError) => { 6398 console.error(`video catchCallback, error:${error}`); 6399 }); 6400} 6401``` 6402 6403### setVolume<sup>(deprecated)</sup> 6404 6405setVolume(vol: number, callback: AsyncCallback\<void>): void 6406 6407设置音量。通过回调函数获取返回值。 6408 6409> **说明:** 6410> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。 6411 6412**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6413 6414**参数:** 6415 6416| 参数名 | 类型 | 必填 | 说明 | 6417| -------- | -------------------- | ---- | ------------------------------------------------------------ | 6418| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 6419| callback | AsyncCallback\<void> | 是 | 回调函数。当设置音量成功,err为undefined,否则为错误对象。 | 6420 6421**示例:** 6422 6423```ts 6424import { BusinessError } from '@kit.BasicServicesKit'; 6425 6426let vol: number = 0.5; 6427videoPlayer.setVolume(vol, (err: BusinessError) => { 6428 if (err) { 6429 console.error('Failed to set Volume!'); 6430 } else { 6431 console.info('Succeeded in setting Volume!'); 6432 } 6433}); 6434``` 6435 6436### setVolume<sup>(deprecated)</sup> 6437 6438setVolume(vol: number): Promise\<void> 6439 6440设置音量。通过Promise获取返回值。 6441 6442> **说明:** 6443> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。 6444 6445**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6446 6447**参数:** 6448 6449| 参数名 | 类型 | 必填 | 说明 | 6450| ------ | ------ | ---- | ------------------------------------------------------------ | 6451| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 6452 6453**返回值:** 6454 6455| 类型 | 说明 | 6456| -------------- | ------------------------- | 6457| Promise\<void> | 设置音量的Promise返回值。 | 6458 6459**示例:** 6460 6461```ts 6462import { BusinessError } from '@kit.BasicServicesKit'; 6463 6464let vol: number = 0.5; 6465videoPlayer.setVolume(vol).then(() => { 6466 console.info('Succeeded in setting Volume'); 6467}).catch((error: BusinessError) => { 6468 console.error(`video catchCallback, error:${error}`); 6469}); 6470``` 6471 6472### release<sup>(deprecated)</sup> 6473 6474release(callback: AsyncCallback\<void>): void 6475 6476释放视频资源。通过回调函数获取返回值。 6477 6478> **说明:** 6479> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。 6480 6481**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6482 6483**参数:** 6484 6485| 参数名 | 类型 | 必填 | 说明 | 6486| -------- | -------------------- | ---- | ------------------------ | 6487| callback | AsyncCallback\<void> | 是 | 回调函数。当释放视频资源成功,err为undefined,否则为错误对象。 | 6488 6489**示例:** 6490 6491```ts 6492import { BusinessError } from '@kit.BasicServicesKit'; 6493 6494videoPlayer.release((err: BusinessError) => { 6495 if (err) { 6496 console.error('Failed to release!'); 6497 } else { 6498 console.info('Succeeded in releasing!'); 6499 } 6500}); 6501``` 6502 6503### release<sup>(deprecated)</sup> 6504 6505release(): Promise\<void> 6506 6507释放视频资源。通过Promise获取返回值。 6508 6509> **说明:** 6510> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9-1)替代。 6511 6512**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6513 6514**返回值:** 6515 6516| 类型 | 说明 | 6517| -------------- | ----------------------------- | 6518| Promise\<void> | 释放视频资源的Promise返回值。 | 6519 6520**示例:** 6521 6522```ts 6523import { BusinessError } from '@kit.BasicServicesKit'; 6524 6525videoPlayer.release().then(() => { 6526 console.info('Succeeded in releasing'); 6527}).catch((error: BusinessError) => { 6528 console.error(`video catchCallback, error:${error}`); 6529}); 6530``` 6531 6532### getTrackDescription<sup>(deprecated)</sup> 6533 6534getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void 6535 6536获取视频轨道信息。通过回调函数获取返回值。 6537 6538> **说明:** 6539> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。 6540 6541**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6542 6543**参数:** 6544 6545| 参数名 | 类型 | 必填 | 说明 | 6546| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ | 6547| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是 | 回调函数。获取视频轨道信息成功时,err为undefined,data为获取到的视频轨道信息MediaDescription数组,否则为错误对象。 | 6548 6549**示例:** 6550 6551```ts 6552import { BusinessError } from '@kit.BasicServicesKit'; 6553 6554videoPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 6555 if ((arrList) != null) { 6556 console.info('Succeeded in getting TrackDescription'); 6557 } else { 6558 console.error(`Failed to get TrackDescription, error:${error}`); 6559 } 6560}); 6561``` 6562 6563### getTrackDescription<sup>(deprecated)</sup> 6564 6565getTrackDescription(): Promise\<Array\<MediaDescription>> 6566 6567获取视频轨道信息。通过Promise获取返回值。 6568 6569> **说明:** 6570> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。 6571 6572**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6573 6574**返回值:** 6575 6576| 类型 | 说明 | 6577| ------------------------------------------------------ | ----------------------------------------------- | 6578| Promise<Array<[MediaDescription](#mediadescription8)>> | Promise对象,返回获取的视频轨道信息MediaDescription数组。 | 6579 6580**示例:** 6581 6582```ts 6583import { BusinessError } from '@kit.BasicServicesKit'; 6584 6585videoPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => { 6586 if (arrList != null) { 6587 console.info('Succeeded in getting TrackDescription'); 6588 } else { 6589 console.error('Failed to get TrackDescription'); 6590 } 6591}).catch((error: BusinessError) => { 6592 console.error(`video catchCallback, error:${error}`); 6593}); 6594``` 6595 6596### setSpeed<sup>(deprecated)</sup> 6597 6598setSpeed(speed: number, callback: AsyncCallback\<number>): void 6599 6600设置播放速度。通过回调函数获取返回值。 6601 6602> **说明:** 6603> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。 6604 6605**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6606 6607**参数:** 6608 6609| 参数名 | 类型 | 必填 | 说明 | 6610| -------- | ---------------------- | ---- | ---------------------------------------------------------- | 6611| speed | number | 是 | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 6612| callback | AsyncCallback\<number> | 是 | 回调函数。设置播放速度成功时,err为undefined,data为设置的播放速度,否则为错误对象。 | 6613 6614**示例:** 6615 6616```ts 6617import { BusinessError } from '@kit.BasicServicesKit'; 6618 6619let videoPlayer: media.VideoPlayer | null = null; 6620media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6621 if (video != null) { 6622 videoPlayer = video; 6623 console.info('Succeeded in creating VideoPlayer'); 6624 } else { 6625 console.error(`Failed to create VideoPlayer, error:${error}`); 6626 } 6627}); 6628let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X; 6629if (videoPlayer) { 6630 (videoPlayer as media.VideoPlayer).setSpeed(speed, (err: BusinessError, result: number) => { 6631 if (err) { 6632 console.error('Failed to set Speed!'); 6633 } else { 6634 console.info('Succeeded in setting Speed!'); 6635 } 6636 }); 6637} 6638``` 6639 6640### setSpeed<sup>(deprecated)</sup> 6641 6642setSpeed(speed: number): Promise\<number> 6643 6644设置播放速度。通过Promise获取返回值。 6645 6646> **说明:** 6647> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。 6648 6649**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6650 6651**参数:** 6652 6653| 参数名 | 类型 | 必填 | 说明 | 6654| ------ | ------ | ---- | ---------------------------------------------------------- | 6655| speed | number | 是 | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 6656 6657**返回值:** 6658 6659| 类型 | 说明 | 6660| ---------------- | ------------------------------------------------------------ | 6661| Promise\<number> | Promise对象,返回设置的播放速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 6662 6663**示例:** 6664 6665```ts 6666import { BusinessError } from '@kit.BasicServicesKit'; 6667 6668let videoPlayer: media.VideoPlayer | null = null; 6669media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6670 if (video != null) { 6671 videoPlayer = video; 6672 console.info('Succeeded in creating VideoPlayer'); 6673 } else { 6674 console.error(`Failed to create VideoPlayer, error:${error}`); 6675 } 6676}); 6677let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X; 6678if (videoPlayer) { 6679 (videoPlayer as media.VideoPlayer).setSpeed(speed).then((result: number) => { 6680 console.info('Succeeded in setting Speed'); 6681 }).catch((error: BusinessError) => { 6682 console.error(`Failed to set Speed, error:${error}`);//todo:: error 6683 }); 6684} 6685``` 6686 6687### on('playbackCompleted')<sup>(deprecated)</sup> 6688 6689on(type: 'playbackCompleted', callback: Callback\<void>): void 6690 6691开始监听视频播放完成事件。 6692 6693> **说明:** 6694> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。 6695 6696**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6697 6698**参数:** 6699 6700| 参数名 | 类型 | 必填 | 说明 | 6701| -------- | -------- | ---- | ----------------------------------------------------------- | 6702| type | string | 是 | 视频播放完成事件回调类型,支持的事件:'playbackCompleted'。 | 6703| callback | Callback\<void> | 是 | 视频播放完成事件回调方法。 | 6704 6705**示例:** 6706 6707```ts 6708videoPlayer.on('playbackCompleted', () => { 6709 console.info('playbackCompleted called!'); 6710}); 6711``` 6712 6713### on('bufferingUpdate')<sup>(deprecated)</sup> 6714 6715on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void 6716 6717开始监听视频缓存更新事件。仅网络播放支持该订阅事件。 6718 6719> **说明:** 6720> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。 6721 6722**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6723 6724**参数:** 6725 6726| 参数名 | 类型 | 必填 | 说明 | 6727| -------- | -------- | ---- | ------------------------------------------------------------ | 6728| type | string | 是 | 视频缓存事件回调类型,支持的事件:'bufferingUpdate'。 | 6729| callback | function | 是 | 视频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)value值固定为0。 | 6730 6731**示例:** 6732 6733```ts 6734videoPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => { 6735 console.info('video bufferingInfo type: ' + infoType); 6736 console.info('video bufferingInfo value: ' + value); 6737}); 6738``` 6739 6740### on('startRenderFrame')<sup>(deprecated)</sup> 6741 6742on(type: 'startRenderFrame', callback: Callback\<void>): void 6743 6744开始监听视频播放首帧送显上报事件。 6745 6746> **说明:** 6747> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('startRenderFrame')](#onstartrenderframe9)替代。 6748 6749**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6750 6751**参数:** 6752 6753| 参数名 | 类型 | 必填 | 说明 | 6754| -------- | --------------- | ---- | ------------------------------------------------------------ | 6755| type | string | 是 | 视频播放首帧送显上报事件回调类型,支持的事件:'startRenderFrame'。 | 6756| callback | Callback\<void> | 是 | 视频播放首帧送显上报事件回调方法。 | 6757 6758**示例:** 6759 6760```ts 6761videoPlayer.on('startRenderFrame', () => { 6762 console.info('startRenderFrame called!'); 6763}); 6764``` 6765 6766### on('videoSizeChanged')<sup>(deprecated)</sup> 6767 6768on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void 6769 6770开始监听视频播放宽高变化事件。 6771 6772> **说明:** 6773> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('videoSizeChange')](#onvideosizechange9)替代。 6774 6775**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6776 6777**参数:** 6778 6779| 参数名 | 类型 | 必填 | 说明 | 6780| -------- | -------- | ---- | ------------------------------------------------------------ | 6781| type | string | 是 | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChanged'。 | 6782| callback | function | 是 | 视频播放宽高变化事件回调方法,width表示宽,height表示高。 | 6783 6784**示例:** 6785 6786```ts 6787videoPlayer.on('videoSizeChanged', (width: number, height: number) => { 6788 console.info('video width is: ' + width); 6789 console.info('video height is: ' + height); 6790}); 6791``` 6792### on('audioInterrupt')<sup>(deprecated)</sup> 6793 6794on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void 6795 6796监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。 6797 6798> **说明:** 6799> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。 6800 6801**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6802 6803**参数:** 6804 6805| 参数名 | 类型 | 必填 | 说明 | 6806| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | 6807| type | string | 是 | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 | 6808| callback | function | 是 | 音频焦点变化事件回调方法。 | 6809 6810**示例:** 6811 6812```ts 6813import { audio } from '@kit.AudioKit'; 6814 6815videoPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => { 6816 console.info('audioInterrupt called,and InterruptEvent info is:' + info) 6817}) 6818``` 6819 6820### on('error')<sup>(deprecated)</sup> 6821 6822on(type: 'error', callback: ErrorCallback): void 6823 6824开始监听视频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。 6825 6826> **说明:** 6827> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。 6828 6829**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6830 6831**参数:** 6832 6833| 参数名 | 类型 | 必填 | 说明 | 6834| -------- | ------------- | ---- | ------------------------------------------------------------ | 6835| type | string | 是 | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':视频播放中发生错误,触发该事件。 | 6836| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 播放错误事件回调方法。 | 6837 6838**示例:** 6839 6840```ts 6841import { BusinessError } from '@kit.BasicServicesKit'; 6842 6843videoPlayer.on('error', (error: BusinessError) => { // 设置'error'事件回调 6844 console.error(`video error called, error: ${error}`); 6845}); 6846videoPlayer.url = 'fd://error'; //设置错误的播放地址,触发'error'事件 6847``` 6848 6849## VideoPlayState<sup>(deprecated)</sup> 6850 6851type VideoPlayState = 'idle' | 'prepared' | 'playing' | 'paused' | 'stopped' | 'error' 6852 6853视频播放的状态机,可通过state属性获取当前状态。 6854 6855> **说明:** 6856> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。 6857 6858**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6859 6860| 类型 | 说明 | 6861| -------- | -------------- | 6862| 'idle' | 视频播放空闲。 | 6863| 'prepared' | 视频播放准备。 | 6864| 'playing' | 视频正在播放。 | 6865| 'paused' | 视频暂停播放。 | 6866| 'stopped' | 视频播放停止。 | 6867| 'error' | 错误状态。 | 6868 6869## AudioRecorder<sup>(deprecated)</sup> 6870 6871> **说明:** 6872> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder](#avrecorder9)替代。 6873 6874音频录制管理类,用于录制音频媒体。在调用AudioRecorder的方法前,需要先通过[createAudioRecorder()](#mediacreateaudiorecorderdeprecated) 构建一个AudioRecorder实例。 6875 6876### prepare<sup>(deprecated)</sup> 6877 6878prepare(config: AudioRecorderConfig): void 6879 6880录音准备。 6881 6882> **说明:** 6883> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.prepare](#prepare9-2)替代。 6884 6885**需要权限:** ohos.permission.MICROPHONE 6886 6887**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6888 6889**参数:** 6890 6891| 参数名 | 类型 | 必填 | 说明 | 6892| ------ | ------------------------------------------- | ---- | ------------------------------------------------------------ | 6893| config | [AudioRecorderConfig](#audiorecorderconfigdeprecated) | 是 | 配置录音的相关参数,包括音频输出URI、编码格式、采样率、声道数、输出格式等。 | 6894 6895**错误码:** 6896 6897以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 6898 6899| 错误码ID | 错误信息 | 6900| -------- | --------------------- | 6901| 201 | permission denied | 6902 6903**示例:** 6904 6905```ts 6906let audioRecorderConfig: media.AudioRecorderConfig = { 6907 audioEncoder : media.AudioEncoder.AAC_LC, 6908 audioEncodeBitRate : 22050, 6909 audioSampleRate : 22050, 6910 numberOfChannels : 2, 6911 format : media.AudioOutputFormat.AAC_ADTS, 6912 uri : 'fd://1', // 文件需先由调用者创建,并给予适当的权限 6913 location : { latitude : 30, longitude : 130}, 6914} 6915audioRecorder.on('prepare', () => { //设置'prepare'事件回调 6916 console.info('prepare called'); 6917}); 6918audioRecorder.prepare(audioRecorderConfig); 6919``` 6920 6921### start<sup>(deprecated)</sup> 6922 6923start(): void 6924 6925开始录制,需在'prepare'事件成功触发后,才能调用start方法。 6926 6927> **说明:** 6928> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.start](#start9)替代。 6929 6930**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6931 6932**示例:** 6933 6934```ts 6935audioRecorder.on('start', () => { //设置'start'事件回调 6936 console.info('audio recorder start called'); 6937}); 6938audioRecorder.start(); 6939``` 6940 6941### pause<sup>(deprecated)</sup> 6942 6943pause():void 6944 6945暂停录制,需要在'start'事件成功触发后,才能调用pause方法。 6946 6947> **说明:** 6948> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.pause](#pause9-2)替代。 6949 6950**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6951 6952**示例:** 6953 6954```ts 6955audioRecorder.on('pause', () => { //设置'pause'事件回调 6956 console.info('audio recorder pause called'); 6957}); 6958audioRecorder.pause(); 6959``` 6960 6961### resume<sup>(deprecated)</sup> 6962 6963resume():void 6964 6965恢复录制,需要在'pause'事件成功触发后,才能调用resume方法。 6966 6967> **说明:** 6968> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.resume](#resume9)替代。 6969 6970**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6971 6972**示例:** 6973 6974```ts 6975audioRecorder.on('resume', () => { //设置'resume'事件回调 6976 console.info('audio recorder resume called'); 6977}); 6978audioRecorder.resume(); 6979``` 6980 6981### stop<sup>(deprecated)</sup> 6982 6983stop(): void 6984 6985停止录音。 6986 6987> **说明:** 6988> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.stop](#stop9-2)替代。 6989 6990**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6991 6992**示例:** 6993 6994```ts 6995audioRecorder.on('stop', () => { //设置'stop'事件回调 6996 console.info('audio recorder stop called'); 6997}); 6998audioRecorder.stop(); 6999``` 7000 7001### release<sup>(deprecated)</sup> 7002 7003release(): void 7004 7005释放录音资源。 7006 7007> **说明:** 7008> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.release](#release9-2)替代。 7009 7010**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7011 7012**示例:** 7013 7014```ts 7015audioRecorder.on('release', () => { //设置'release'事件回调 7016 console.info('audio recorder release called'); 7017}); 7018audioRecorder.release(); 7019audioRecorder = undefined; 7020``` 7021 7022### reset<sup>(deprecated)</sup> 7023 7024reset(): void 7025 7026重置录音。 7027 7028进行重置录音之前,需要先调用stop()停止录音。重置录音之后,需要调用prepare()设置录音参数项,才能再次进行录音。 7029 7030> **说明:** 7031> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.reset](#reset9-2)替代。 7032 7033**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7034 7035**示例:** 7036 7037```ts 7038audioRecorder.on('reset', () => { //设置'reset'事件回调 7039 console.info('audio recorder reset called'); 7040}); 7041audioRecorder.reset(); 7042``` 7043 7044### on('prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset')<sup>(deprecated)</sup> 7045 7046on(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset', callback: () => void): void 7047 7048开始订阅音频录制事件。 7049 7050> **说明:** 7051> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('stateChange')](#onstatechange9-1)替代。 7052 7053**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7054 7055**参数:** 7056 7057| 参数名 | 类型 | 必填 | 说明 | 7058| -------- | -------- | ---- | ------------------------------------------------------------ | 7059| 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调用,音频重置为初始状态,触发该事件。 | 7060| callback | ()=>void | 是 | 录制事件回调方法。 | 7061 7062**示例:** 7063 7064```ts 7065import { BusinessError } from '@kit.BasicServicesKit'; 7066 7067let audioRecorder: media.AudioRecorder = media.createAudioRecorder(); // 创建一个音频录制实例 7068let audioRecorderConfig: media.AudioRecorderConfig = { 7069 audioEncoder : media.AudioEncoder.AAC_LC, 7070 audioEncodeBitRate : 22050, 7071 audioSampleRate : 22050, 7072 numberOfChannels : 2, 7073 format : media.AudioOutputFormat.AAC_ADTS, 7074 uri : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限 7075 location : { latitude : 30, longitude : 130} 7076} 7077audioRecorder.on('error', (error: BusinessError) => { // 设置'error'事件回调 7078 console.error(`audio error called, error: ${error}`); 7079}); 7080audioRecorder.on('prepare', () => { // 设置'prepare'事件回调 7081 console.info('prepare called'); 7082 audioRecorder.start(); // 开始录制,并触发'start'事件回调 7083}); 7084audioRecorder.on('start', () => { // 设置'start'事件回调 7085 console.info('audio recorder start called'); 7086}); 7087audioRecorder.on('pause', () => { // 设置'pause'事件回调 7088 console.info('audio recorder pause called'); 7089}); 7090audioRecorder.on('resume', () => { // 设置'resume'事件回调 7091 console.info('audio recorder resume called'); 7092}); 7093audioRecorder.on('stop', () => { // 设置'stop'事件回调 7094 console.info('audio recorder stop called'); 7095}); 7096audioRecorder.on('release', () => { // 设置'release'事件回调 7097 console.info('audio recorder release called'); 7098}); 7099audioRecorder.on('reset', () => { // 设置'reset'事件回调 7100 console.info('audio recorder reset called'); 7101}); 7102audioRecorder.prepare(audioRecorderConfig) // 设置录制参数 ,并触发'prepare'事件回调 7103``` 7104 7105### on('error')<sup>(deprecated)</sup> 7106 7107on(type: 'error', callback: ErrorCallback): void 7108 7109开始订阅音频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。 7110 7111> **说明:** 7112> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('error')](#onerror9-1)替代。 7113 7114**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7115 7116**参数:** 7117 7118| 参数名 | 类型 | 必填 | 说明 | 7119| -------- | ------------- | ---- | ------------------------------------------------------------ | 7120| type | string | 是 | 录制错误事件回调类型'error'。<br/>- 'error':音频录制过程中发生错误,触发该事件。 | 7121| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录制错误事件回调方法。 | 7122 7123**示例:** 7124 7125```ts 7126import { BusinessError } from '@kit.BasicServicesKit'; 7127 7128let audioRecorderConfig: media.AudioRecorderConfig = { 7129 audioEncoder : media.AudioEncoder.AAC_LC, 7130 audioEncodeBitRate : 22050, 7131 audioSampleRate : 22050, 7132 numberOfChannels : 2, 7133 format : media.AudioOutputFormat.AAC_ADTS, 7134 uri : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限 7135 location : { latitude : 30, longitude : 130} 7136} 7137audioRecorder.on('error', (error: BusinessError) => { // 设置'error'事件回调 7138 console.error(`audio error called, error: ${error}`); 7139}); 7140audioRecorder.prepare(audioRecorderConfig); // prepare不设置参数,触发'error'事件 7141``` 7142 7143## AudioRecorderConfig<sup>(deprecated)</sup> 7144 7145> **说明:** 7146> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorderConfig](#avrecorderconfig9)替代。 7147 7148表示音频的录音配置。 7149 7150**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7151 7152| 名称 | 类型 | 必填 | 说明 | 7153| ----------------------------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | 7154| audioEncoder | [AudioEncoder](#audioencoderdeprecated) | 否 | 音频编码格式,默认设置为AAC_LC。<br/>**说明:** 从API version 8开始废弃,建议使用audioEncoderMime替代。 | 7155| audioEncodeBitRate | number | 否 | 音频编码比特率,默认值为48000。 | 7156| audioSampleRate | number | 否 | 音频采集采样率,默认值为48000。<br>可变比特率模式,码率仅作参考。 | 7157| numberOfChannels | number | 否 | 音频采集声道数,默认值为2。 | 7158| format | [AudioOutputFormat](#audiooutputformatdeprecated) | 否 | 音频输出封装格式,默认设置为MPEG_4。<br/>**说明:** 从API version 8开始废弃,建议使用fileFormat替代。 | 7159| location | [Location](#location) | 否 | 音频采集的地理位置。 | 7160| uri | string | 是 | 音频输出URI:fd://xx (fd number)<br/> <br/>文件需要由调用者创建,并赋予适当的权限。 | 7161| audioEncoderMime<sup>8+</sup> | [CodecMimeType](#codecmimetype8) | 否 | 容器编码格式。 | 7162| fileFormat<sup>8+</sup> | [ContainerFormatType](#containerformattype8) | 否 | 音频编码格式。 | 7163 7164## AudioEncoder<sup>(deprecated)</sup> 7165 7166> **说明:** 7167> 从API version 6开始支持,从API version 8开始废弃,建议使用[CodecMimeType](#codecmimetype8)替代。 7168 7169表示音频编码格式的枚举。 7170 7171**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7172 7173| 名称 | 值 | 说明 | 7174| ------- | ---- | ------------------------------------------------------------ | 7175| DEFAULT | 0 | 默认编码格式。<br/>仅做接口定义,暂不支持使用。 | 7176| AMR_NB | 1 | AMR-NB(Adaptive Multi Rate-Narrow Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 | 7177| AMR_WB | 2 | AMR-WB(Adaptive Multi Rate-Wide Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 | 7178| AAC_LC | 3 | AAC-LC(Advanced Audio Coding Low Complexity)编码格式。 | 7179| HE_AAC | 4 | HE_AAC(High-Efficiency Advanced Audio Coding)编码格式。<br/>仅做接口定义,暂不支持使用。 | 7180 7181## AudioOutputFormat<sup>(deprecated)</sup> 7182 7183> **说明:** 7184> 从API version 6开始支持,从API version 8 开始废弃,建议使用[ContainerFormatType](#containerformattype8)替代。 7185 7186表示音频封装格式的枚举。 7187 7188**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7189 7190| 名称 | 值 | 说明 | 7191| -------- | ---- | ------------------------------------------------------------ | 7192| DEFAULT | 0 | 默认封装格式。<br/>仅做接口定义,暂不支持使用。 | 7193| MPEG_4 | 2 | 封装为MPEG-4格式。 | 7194| AMR_NB | 3 | 封装为AMR_NB格式。<br/>仅做接口定义,暂不支持使用。 | 7195| AMR_WB | 4 | 封装为AMR_WB格式。<br/>仅做接口定义,暂不支持使用。 | 7196| AAC_ADTS | 6 | 封装为ADTS(Audio Data Transport Stream)格式,是AAC音频的传输流格式。 | 7197 7198 7199## media.createAVImageGenerator<sup>12+</sup> 7200 7201createAVImageGenerator(callback: AsyncCallback\<AVImageGenerator>): void 7202 7203创建AVImageGenerator实例,通过回调函数获取返回值。 7204 7205**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7206 7207**参数:** 7208 7209| 参数名 | 类型 | 必填 | 说明 | 7210| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | 7211| callback | AsyncCallback\<[AVImageGenerator](#avimagegenerator12)> | 是 | 回调函数。异步返回AVImageGenerator实例,失败时返回null。可用于获取视频缩略图。 | 7212 7213**错误码:** 7214 7215以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7216 7217| 错误码ID | 错误信息 | 7218| -------- | ------------------------------ | 7219| 5400101 | No memory. Returned by callback. | 7220 7221**示例:** 7222 7223```ts 7224import { BusinessError } from '@kit.BasicServicesKit'; 7225 7226let avImageGenerator: media.AVImageGenerator; 7227media.createAVImageGenerator((error: BusinessError, generator: media.AVImageGenerator) => { 7228 if (generator != null) { 7229 avImageGenerator = generator; 7230 console.info('Succeeded in creating AVImageGenerator'); 7231 } else { 7232 console.error(`Failed to creat AVImageGenerator, error message:${error.message}`); 7233 } 7234}); 7235``` 7236 7237## media.createAVImageGenerator<sup>12+</sup> 7238 7239createAVImageGenerator(): Promise\<AVImageGenerator> 7240 7241创建AVImageGenerator对象,通过Promise获取返回值。 7242 7243**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7244 7245**返回值:** 7246 7247| 类型 | 说明 | 7248| ------------------------------- | ------------------------------------------------------------ | 7249| Promise\<[AVImageGenerator](#avimagegenerator12)> | Promise对象。异步返回AVImageGenerator实例,失败时返回null。可用于获取视频缩略图。 | 7250 7251**错误码:** 7252 7253以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7254 7255| 错误码ID | 错误信息 | 7256| -------- | ----------------------------- | 7257| 5400101 | No memory. Returned by promise. | 7258 7259**示例:** 7260 7261```ts 7262import { BusinessError } from '@kit.BasicServicesKit'; 7263 7264let avImageGenerator: media.AVImageGenerator; 7265media.createAVImageGenerator().then((generator: media.AVImageGenerator) => { 7266 if (generator != null) { 7267 avImageGenerator = generator; 7268 console.info('Succeeded in creating AVImageGenerator'); 7269 } else { 7270 console.error('Failed to creat AVImageGenerator'); 7271 } 7272}).catch((error: BusinessError) => { 7273 console.error(`Failed to creat AVImageGenerator, error message:${error.message}`); 7274}); 7275``` 7276 7277## AVImageGenerator<sup>12+</sup> 7278 7279视频缩略图获取类,用于从视频资源中获取缩略图。在调用AVImageGenerator的方法前,需要先通过[createAVImageGenerator()](#mediacreateavimagegenerator12)构建一个AVImageGenerator实例。 7280 7281获取视频缩略图的demo可参考:[获取视频缩略图开发指导](../../media/media/avimagegenerator.md)。 7282 7283### 属性 7284 7285**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7286 7287| 名称 | 类型 | 可读 | 可写 | 说明 | 7288| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 7289| 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。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频缩略图数据获取异常。 | 7290 7291### fetchFrameByTime<sup>12+</sup> 7292 7293fetchFrameByTime(timeUs: number, options: AVImageQueryOptions, param: PixelMapParams, callback: AsyncCallback\<image.PixelMap>): void 7294 7295异步方式获取视频缩略图。通过注册回调函数获取返回值。 7296 7297**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7298 7299**参数:** 7300 7301| 参数名 | 类型 | 必填 | 说明 | 7302| -------- | -------------------------------------------- | ---- | ----------------------------------- | 7303| timeUs | number | 是 | 需要获取的缩略图在视频中的时间点,单位为微秒(μs)。 | 7304| options | [AVImageQueryOptions](#avimagequeryoptions12) | 是 | 需要获取的缩略图时间点与视频帧的对应关系。 | 7305| param | [PixelMapParams](#pixelmapparams12) | 是 | 需要获取的缩略图的格式参数。 | 7306| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | 是 | 回调函数。获取缩略图成功时,err为undefined,data为PixelMap实例,否则为错误对象。 | 7307 7308**错误码:** 7309 7310以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7311 7312| 错误码ID | 错误信息 | 7313| -------- | ------------------------------------------ | 7314| 5400102 | Operation not allowed. Returned by callback. | 7315| 5400106 | Unsupported format. Returned by callback. | 7316 7317**示例:** 7318 7319```ts 7320import { BusinessError } from '@kit.BasicServicesKit'; 7321import { image } from '@kit.ImageKit'; 7322 7323let avImageGenerator: media.AVImageGenerator | undefined = undefined; 7324let pixel_map : image.PixelMap | undefined = undefined; 7325 7326// 初始化入参 7327let timeUs: number = 0 7328 7329let queryOption: media.AVImageQueryOptions = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC 7330 7331let param: media.PixelMapParams = { 7332 width : 300, 7333 height : 300, 7334} 7335 7336// 获取缩略图 7337media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7338 if(generator != null){ 7339 avImageGenerator = generator; 7340 console.info(`Succeeded in creating AVImageGenerator`); 7341 avImageGenerator.fetchFrameByTime(timeUs, queryOption, param, (error: BusinessError, pixelMap) => { 7342 if (error) { 7343 console.error(`Failed to fetch FrameByTime, err = ${JSON.stringify(error)}`) 7344 return 7345 } 7346 pixel_map = pixelMap; 7347 }); 7348 } else { 7349 console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7350 }; 7351}); 7352``` 7353 7354### fetchFrameByTime<sup>12+</sup> 7355 7356fetchFrameByTime(timeUs: number, options: AVImageQueryOptions, param: PixelMapParams): Promise<image.PixelMap> 7357 7358异步方式获取视频缩略图。通过Promise获取返回值。 7359 7360**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7361 7362**参数:** 7363 7364| 参数名 | 类型 | 必填 | 说明 | 7365| -------- | -------------------------------------------- | ---- | ----------------------------------- | 7366| timeUs | number | 是 | 需要获取的缩略图在视频中的时间点,单位为微秒(μs)。 | 7367| options | [AVImageQueryOptions](#avimagequeryoptions12) | 是 | 需要获取的缩略图时间点与视频帧的对应关系。 | 7368| param | [PixelMapParams](#pixelmapparams12) | 是 | 需要获取的缩略图的格式参数。 | 7369 7370**返回值:** 7371 7372| 类型 | 说明 | 7373| -------------- | ---------------------------------------- | 7374| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise对象,返回视频缩略图对象。 | 7375 7376**错误码:** 7377 7378以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7379 7380| 错误码ID | 错误信息 | 7381| -------- | ----------------------------------------- | 7382| 5400102 | Operation not allowed. Returned by promise. | 7383| 5400106 | Unsupported format. Returned by promise. | 7384 7385**示例:** 7386 7387```ts 7388import { BusinessError } from '@kit.BasicServicesKit'; 7389import { image } from '@kit.ImageKit'; 7390 7391let avImageGenerator: media.AVImageGenerator | undefined = undefined; 7392let pixel_map : image.PixelMap | undefined = undefined; 7393 7394// 初始化入参 7395let timeUs: number = 0 7396 7397let queryOption: media.AVImageQueryOptions = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC 7398 7399let param: media.PixelMapParams = { 7400 width : 300, 7401 height : 300, 7402} 7403 7404// 获取缩略图 7405media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7406 if(generator != null){ 7407 avImageGenerator = generator; 7408 console.info(`Succeeded in creating AVImageGenerator`); 7409 avImageGenerator.fetchFrameByTime(timeUs, queryOption, param).then((pixelMap: image.PixelMap) => { 7410 pixel_map = pixelMap; 7411 }).catch((error: BusinessError) => { 7412 console.error(`Failed to fetch FrameByTime, error message:${error.message}`); 7413 }); 7414 } else { 7415 console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7416 }; 7417}); 7418``` 7419 7420### release<sup>12+</sup> 7421 7422release(callback: AsyncCallback\<void>): void 7423 7424异步方式释放资源。通过注册回调函数获取返回值。 7425 7426**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7427 7428**参数:** 7429 7430| 参数名 | 类型 | 必填 | 说明 | 7431| -------- | -------------------------------------------- | ---- | ----------------------------------- | 7432| callback | AsyncCallback\<void> | 是 | 回调函数。当释放资源成功,err为undefined,否则为错误对象。 | 7433 7434**错误码:** 7435 7436以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7437 7438| 错误码ID | 错误信息 | 7439| -------- | ------------------------------------------ | 7440| 5400102 | Operation not allowed. Returned by callback. | 7441 7442**示例:** 7443 7444```ts 7445import { BusinessError } from '@kit.BasicServicesKit'; 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((error: BusinessError) => { 7455 if (error) { 7456 console.error(`Failed to release, err = ${JSON.stringify(error)}`); 7457 return; 7458 } 7459 console.info(`Succeeded in releasing`); 7460 }); 7461 } else { 7462 console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7463 }; 7464}); 7465``` 7466 7467### release<sup>12+</sup> 7468 7469release(): Promise\<void> 7470 7471异步方式释放资源。通过Promise获取返回值。 7472 7473**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7474 7475**返回值:** 7476 7477| 类型 | 说明 | 7478| -------------- | ---------------------------------------- | 7479| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 | 7480 7481**错误码:** 7482 7483以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7484 7485| 错误码ID | 错误信息 | 7486| -------- | ----------------------------------------- | 7487| 5400102 | Operation not allowed. Returned by promise. | 7488 7489**示例:** 7490 7491```ts 7492import { BusinessError } from '@kit.BasicServicesKit'; 7493 7494let avImageGenerator: media.AVImageGenerator | undefined = undefined; 7495 7496//释放资源 7497media.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7498 if(generator != null){ 7499 avImageGenerator = generator; 7500 console.info(`Succeeded in creating AVImageGenerator`); 7501 avImageGenerator.release().then(() => { 7502 console.info(`Succeeded in releasing.`); 7503 }).catch((error: BusinessError) => { 7504 console.error(`Failed to release, error message:${error.message}`); 7505 }); 7506 } else { 7507 console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7508 }; 7509}); 7510``` 7511 7512## AVImageQueryOptions<sup>12+</sup> 7513 7514需要获取的缩略图时间点与视频帧的对应关系。 7515 7516在获取视频缩略图时,传入的时间点与实际取得的视频帧所在时间点不一定相等,需要指定传入的时间点与实际取得的视频帧的时间关系。 7517 7518**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7519 7520| 名称 | 值 | 说明 | 7521| ------------------------ | --------------- | ------------------------------------------------------------ | 7522| AV_IMAGE_QUERY_NEXT_SYNC | 0 | 表示选取传入时间点或之后的关键帧。 | 7523| AV_IMAGE_QUERY_PREVIOUS_SYNC | 1 | 表示选取传入时间点或之前的关键帧。 | 7524| AV_IMAGE_QUERY_CLOSEST_SYNC | 2 | 表示选取离传入时间点最近的关键帧。 | 7525| AV_IMAGE_QUERY_CLOSEST | 3 | 表示选取离传入时间点最近的帧,该帧不一定是关键帧。 | 7526 7527## PixelMapParams<sup>12+</sup> 7528 7529获取视频缩略图时,输出缩略图的格式参数。 7530 7531**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7532 7533| 名称 | 类型 | 可读 | 可写 | 说明 | 7534|--------|--------|------|------|---------------------------------------------------------------------------------| 7535| width | number | 是 | 是 | 输出的缩略图宽度。应保证大于0且不大于原始视频宽度。否则返回的缩略图不会进行缩放。 | 7536| height | number | 是 | 是 | 输出的缩略图高度。应保证大于0且不大于原始视频高度。否则返回的缩略图不会进行缩放。 | 7537 7538## media.createMediaSourceWithUrl<sup>12+</sup> 7539 7540createMediaSourceWithUrl(url: string, headers?: Record\<string, string>): MediaSource 7541 7542创建流媒体预下载媒体来源实例方法。 7543 7544**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 7545 7546**系统能力:** SystemCapability.Multimedia.Media.Core 7547 7548**参数:** 7549 7550| 参数名 | 类型 | 必填 | 说明 | 7551| -------- | -------- | ---- | -------------------- | 7552| url | string | 是 | - 流媒体预下载媒体来源url,支持的流媒体格式:HLS、HTTP-FLV、Dash、Https。<br> - 本地m3u8的fd路径。 | 7553| headers | Record\<string, string> | 否 | 支持流媒体预下载HttpHeader自定义。 | 7554 7555**返回值:** 7556 7557| 类型 | 说明 | 7558| -------------- | ------------------------------------------ | 7559| [MediaSource](#mediasource12) | MediaSource返回值。 | 7560 7561**错误码:** 7562 7563以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7564 7565| 错误码ID | 错误信息 | 7566| -------- | ----------------------------------------- | 7567| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 7568| 5400101 | No memory. | 7569 7570**示例1:** 7571 7572```ts 7573let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"}; 7574let mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx", headers); 7575``` 7576 7577**示例2:** 7578 7579<!--code_no_check--> 7580```ts 7581import { common } from '@kit.AbilityKit'; 7582import { resourceManager } from '@kit.LocalizationKit'; 7583 7584let context = getContext(this) as common.UIAbilityContext; 7585let mgr = context.resourceManager; 7586let fileDescriptor = await mgr.getRawFd("xxx.m3u8"); 7587 7588let fd:string = fileDescriptor.fd.toString(); 7589let offset:string = fileDescriptor.offset.toString(); 7590let length:string = fileDescriptor.length.toString(); 7591let fdUrl:string = "fd://" + fd + "?offset=" + offset + "&size=" + length; 7592 7593let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"}; 7594let mediaSource : media.MediaSource = media.createMediaSourceWithUrl(fdUrl, headers); 7595 7596let mimeType : media.AVMimeTypes = media.AVMimeTypes.APPLICATION_M3U8; 7597mediaSource.setMimeType(mimeType); 7598 7599``` 7600 7601## MediaSource<sup>12+</sup> 7602 7603媒体数据信息。来源自[createMediaSourceWithUrl](#mediacreatemediasourcewithurl12)。 7604 7605**系统能力:** SystemCapability.Multimedia.Media.Core 7606 7607### setMimeType<sup>12+</sup> 7608 7609setMimeType(mimeType: AVMimeTypes): void 7610 7611设置媒体MIME类型,以帮助播放器处理扩展的媒体源。 7612 7613**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 7614 7615**系统能力:** SystemCapability.Multimedia.Media.Core 7616 7617**参数:** 7618 7619| 参数名 | 类型 | 必填 | 说明 | 7620| -------- | -------- | ---- | -------------------- | 7621| mimeType | [AVMimeTypes](#mediasource12) | 是 | 媒体MIME类型。 | 7622 7623## AVMimeTypes<sup>12+</sup> 7624 7625媒体MIME类型,通过[setMimeType](#setmimetype12)设置。 7626 7627**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 7628 7629**系统能力:** SystemCapability.Multimedia.Media.Core 7630 7631 7632| 名称 | 值 | 说明 | 7633| ---------- | ---- | ------------------------------------------------------------ | 7634| APPLICATION_M3U8 | application/m3u8 | 表示m3u8本地文件。 | 7635 7636 7637## PlaybackStrategy<sup>12+</sup> 7638 7639播放策略。 7640 7641**系统能力:** SystemCapability.Multimedia.Media.Core 7642 7643| 名称 | 类型 | 必填 | 说明 | 7644| -------- | -------- | ---- | -------------------- | 7645| preferredWidth| number | 否 | 播放策略首选宽度,int类型,如1080。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7646| preferredHeight | number | 否 | 播放策略首选高度,int类型,如1920。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7647| preferredBufferDuration | number | 否 | 播放策略首选缓冲持续时间,单位s,取值范围1-20。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7648| preferredHdr | boolean | 否 | 播放策略true是hdr,false非hdr,默认非hdr。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7649| mutedMediaType | [MediaType](#mediatype8) | 否 | 静音播放的媒体类型,仅支持设置 MediaType.MEDIA_TYPE_AUD。 | 7650| preferredAudioLanguage<sup>13+</sup> | string | 否 | 播放策略首选音轨语言。dash场景下应用可按需设置。非dash场景暂不支持,建议缺省。<br>**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 | 7651| preferredSubtitleLanguage<sup>13+</sup> | string | 否 | 播放策略首选字幕语言。dash场景下应用可按需设置。非dash场景暂不支持,建议缺省。<br>**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 | 7652 7653## AVScreenCaptureRecordPreset<sup>12+</sup> 7654 7655进行屏幕录制时的编码、封装格式参数的枚举。 7656 7657**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7658 7659| 名称 | 值 | 说明 | 7660| --------------------------------- | ---- | -------------------------------------------- | 7661| SCREEN_RECORD_PRESET_H264_AAC_MP4 | 0 | 使用视频H264编码,音频AAC编码,MP4封装格式。 | 7662| SCREEN_RECORD_PRESET_H265_AAC_MP4 | 1 | 使用视频H265编码,音频AAC编码,MP4封装格式。 | 7663 7664## AVScreenCaptureStateCode<sup>12+</sup> 7665 7666屏幕录制的状态回调。 7667 7668**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7669 7670| 名称 | 值 | 说明 | 7671| ---------------------------------------- | ---- | ------------------------ | 7672| SCREENCAPTURE_STATE_STARTED | 0 | 录屏已开始。 | 7673| SCREENCAPTURE_STATE_CANCELED | 1 | 录屏被取消。 | 7674| SCREENCAPTURE_STATE_STOPPED_BY_USER | 2 | 录屏被用户手动停止。 | 7675| SCREENCAPTURE_STATE_INTERRUPTED_BY_OTHER | 3 | 录屏被其他录屏打断。 | 7676| SCREENCAPTURE_STATE_STOPPED_BY_CALL | 4 | 录屏被来电打断。 | 7677| SCREENCAPTURE_STATE_MIC_UNAVAILABLE | 5 | 录屏无法使用麦克风收音。 | 7678| SCREENCAPTURE_STATE_MIC_MUTED_BY_USER | 6 | 麦克风被用户关闭。 | 7679| SCREENCAPTURE_STATE_MIC_UNMUTED_BY_USER | 7 | 麦克风被用户打开。 | 7680| SCREENCAPTURE_STATE_ENTER_PRIVATE_SCENE | 8 | 录屏进入隐私页面。 | 7681| SCREENCAPTURE_STATE_EXIT_PRIVATE_SCENE | 9 | 录屏退出隐私页面。 | 7682| SCREENCAPTURE_STATE_STOPPED_BY_USER_SWITCHES | 10 | 系统用户切换,录屏中断。 | 7683 7684## AVScreenCaptureRecordConfig<sup>12+</sup> 7685 7686表示录屏参数配置。 7687 7688**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7689 7690| 名称 | 类型 | 必填 | 说明 | 7691| ----------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 7692| fd | number | 是 | 录制输出的文件fd。 | 7693| frameWidth | number | 否 | 录屏的视频宽度,默认屏幕宽度,根据不同屏幕默认值不同,单位px。 | 7694| frameHeight | number | 否 | 录屏的视频高度,默认屏幕高度,根据不同屏幕默认值不同,单位px。 | 7695| videoBitrate | number | 否 | 录屏的视频比特率,默认10000000。 | 7696| audioSampleRate | number | 否 | 录屏的音频采样率,内录的系统音和外录的麦克风都是用此采样率,默认48000,仅支持设置48000或16000。 | 7697| audioChannelCount | number | 否 | 录屏的音频通道数,内录的系统音和外录的麦克风都是用此通道数,默认2声道,仅支持设置1或2声道。 | 7698| audioBitrate | number | 否 | 录屏的音频比特率,内录的系统音和外录的麦克风都是用此比特率,默认96000。 | 7699| preset | [AVScreenCaptureRecordPreset](#avscreencapturerecordpreset12) | 否 | 录屏使用的编码和封装格式,默认SCREEN_RECORD_PRESET_H264_AAC_MP4格式。 | 7700 7701## AVScreenCaptureRecorder<sup>12+</sup> 7702 7703屏幕录制管理类,用于进行屏幕录制。在调用AVScreenCaptureRecorder的方法前,需要先通过[createAVScreenCaptureRecorder()](#mediacreateavscreencapturerecorder12)创建一个AVScreenCaptureRecorder实例。 7704 7705### init<sup>12+</sup> 7706 7707init(config: AVScreenCaptureRecordConfig): Promise\<void> 7708 7709异步方式进行录屏初始化,设置录屏参数。通过Promise获取返回值。 7710 7711**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7712 7713**参数:** 7714 7715| 参数名 | 类型 | 必填 | 说明 | 7716| ------ | ------------------------------------------------------------ | ---- | ------------------------ | 7717| config | [AVScreenCaptureRecordConfig](#avscreencapturerecordconfig12) | 是 | 配置屏幕录制的相关参数。 | 7718 7719**返回值:** 7720 7721| 类型 | 说明 | 7722| -------------- | ----------------------------------- | 7723| Promise\<void> | 异步录屏初始化方法的Promise返回值。 | 7724 7725**错误码:** 7726 7727| 错误码ID | 错误信息 | 7728| -------- | ---------------------------------------------- | 7729| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. Return by promise. | 7730| 5400103 | IO error. Return by promise. | 7731| 5400105 | Service died. Return by promise. | 7732 7733**示例:** 7734 7735```ts 7736import { BusinessError } from '@kit.BasicServicesKit'; 7737 7738let avCaptureConfig: media.AVScreenCaptureRecordConfig = { 7739 fd: 0, // 文件需要先有调用者创建,赋予写权限,将文件fd传给此参数 7740 frameWidth: 640, 7741 frameHeight: 480 7742 // 补充其他参数 7743} 7744 7745avScreenCaptureRecorder.init(avCaptureConfig).then(() => { 7746 console.info('Succeeded in initing avScreenCaptureRecorder'); 7747}).catch((err: BusinessError) => { 7748 console.info('Failed to init avScreenCaptureRecorder, error: ' + err.message); 7749}) 7750``` 7751 7752### startRecording<sup>12+</sup> 7753 7754startRecording(): Promise\<void> 7755 7756异步方式开始录屏。通过Promise获取返回值。 7757 7758**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7759 7760**返回值:** 7761 7762| 类型 | 说明 | 7763| -------------- | -------------------------------- | 7764| Promise\<void> | 异步开始录屏方法的Promise返回值. | 7765 7766**错误码:** 7767 7768| 错误码ID | 错误信息 | 7769| -------- | -------------------------------- | 7770| 5400103 | IO error. Return by promise. | 7771| 5400105 | Service died. Return by promise. | 7772 7773**示例:** 7774 7775```ts 7776import { BusinessError } from '@kit.BasicServicesKit'; 7777 7778avScreenCaptureRecorder.startRecording().then(() => { 7779 console.info('Succeeded in starting avScreenCaptureRecorder'); 7780}).catch((err: BusinessError) => { 7781 console.info('Failed to start avScreenCaptureRecorder, error: ' + err.message); 7782}) 7783``` 7784 7785### stopRecording<sup>12+</sup> 7786 7787stopRecording(): Promise\<void> 7788 7789异步方式结束录屏。通过Promise获取返回值。 7790 7791**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7792 7793**返回值:** 7794 7795| 类型 | 说明 | 7796| -------------- | --------------------------------- | 7797| Promise\<void> | 异步结束录屏方法的Promise返回值。 | 7798 7799**错误码:** 7800 7801| 错误码ID | 错误信息 | 7802| -------- | -------------------------------- | 7803| 5400103 | IO error. Return by promise. | 7804| 5400105 | Service died. Return by promise. | 7805 7806**示例:** 7807 7808```ts 7809import { BusinessError } from '@kit.BasicServicesKit'; 7810 7811avScreenCaptureRecorder.stopRecording().then(() => { 7812 console.info('Succeeded in stopping avScreenCaptureRecorder'); 7813}).catch((err: BusinessError) => { 7814 console.info('Failed to stop avScreenCaptureRecorder, error: ' + err.message); 7815}) 7816``` 7817 7818### skipPrivacyMode<sup>12+</sup> 7819 7820skipPrivacyMode(windowIDs: Array\<number>): Promise\<void> 7821 7822录屏时,应用可对本应用的隐私窗口做安全豁免。通过Promise获取返回值。 7823如录屏时,用户在本应用进行输入密码等操作,应用不会进行黑屏处理。 7824 7825**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7826 7827**参数:** 7828 7829| 参数名 | 类型 | 必填 | 说明 | 7830| ------ | ------- | ---- | --------------------------------------------------------- | 7831| windowIDs | Array\<number> | 是 | 需要豁免隐私的窗口列表,包括主窗口id和子窗口id,窗口属性获取方法可以参考[窗口API引用](../apis-arkui/js-apis-window.md#getwindowproperties9) | 7832 7833**返回值:** 7834 7835| 类型 | 说明 | 7836| -------------- | -------------------------------- | 7837| Promise\<void> | 豁免隐私窗口的Promise返回值. | 7838 7839**错误码:** 7840 7841| 错误码ID | 错误信息 | 7842| -------- | -------------------------------- | 7843| 5400103 | IO error. Return by promise. | 7844| 5400105 | Service died. Return by promise. | 7845 7846**示例:** 7847 7848```ts 7849import { BusinessError } from '@kit.BasicServicesKit'; 7850 7851let windowIDs = []; 7852avScreenCaptureRecorder.skipPrivacyMode(windowIDs).then(() => { 7853 console.info('Succeeded in skipping privacy mode'); 7854}).catch((err: BusinessError) => { 7855 console.info('Failed to skip privacy mode, error: ' + err.message); 7856}) 7857``` 7858 7859### setMicEnabled<sup>12+</sup> 7860 7861setMicEnabled(enable: boolean): Promise\<void> 7862 7863异步方式设置麦克风开关。通过Promise获取返回值。 7864 7865**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7866 7867**参数:** 7868 7869| 参数名 | 类型 | 必填 | 说明 | 7870| ------ | ------- | ---- | --------------------------------------------------------- | 7871| enable | boolean | 是 | 麦克风开关控制,true代表麦克风打开,false代表麦克风关闭。 | 7872 7873**返回值:** 7874 7875| 类型 | 说明 | 7876| -------------- | --------------------------------------- | 7877| Promise\<void> | 异步设置麦克风开关方法的Promise返回值。 | 7878 7879**错误码:** 7880 7881| 错误码ID | 错误信息 | 7882| -------- | -------------------------------- | 7883| 5400103 | IO error. Return by promise. | 7884| 5400105 | Service died. Return by promise. | 7885 7886**示例:** 7887 7888```ts 7889import { BusinessError } from '@kit.BasicServicesKit'; 7890 7891avScreenCaptureRecorder.setMicEnabled(true).then(() => { 7892 console.info('Succeeded in setMicEnabled avScreenCaptureRecorder'); 7893}).catch((err: BusinessError) => { 7894 console.info('Failed to setMicEnabled avScreenCaptureRecorder, error: ' + err.message); 7895}) 7896``` 7897 7898### release<sup>12+</sup> 7899 7900release(): Promise\<void> 7901 7902异步方式释放录屏。通过Promise获取返回值。 7903 7904**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7905 7906**返回值:** 7907 7908| 类型 | 说明 | 7909| -------------- | --------------------------------- | 7910| Promise\<void> | 异步释放录屏方法的Promise返回值。 | 7911 7912**错误码:** 7913 7914| 错误码ID | 错误信息 | 7915| -------- | -------------------------------- | 7916| 5400103 | IO error. Return by promise. | 7917| 5400105 | Service died. Return by promise. | 7918 7919**示例:** 7920 7921```ts 7922import { BusinessError } from '@kit.BasicServicesKit'; 7923 7924avScreenCaptureRecorder.release().then(() => { 7925 console.info('Succeeded in releasing avScreenCaptureRecorder'); 7926}).catch((err: BusinessError) => { 7927 console.info('Faile to release avScreenCaptureRecorder, error: ' + err.message); 7928}) 7929``` 7930 7931### on('stateChange')<sup>12+</sup> 7932 7933on(type: 'stateChange', callback: Callback\<AVScreenCaptureStateCode>): void 7934 7935订阅录屏状态切换的事件,当状态发生的时候,会通过订阅的回调通知用户。用户只能订阅一个状态切换的回调方法,重复订阅时,以最后一次订阅的回调接口为准。 7936 7937**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7938 7939**参数:** 7940 7941| 参数名 | 类型 | 必填 | 说明 | 7942| -------- | -------- | ---- | ------------------------------------------------------------ | 7943| type | string | 是 | 状态切换事件回调类型,支持的事件:'stateChange'。 | 7944| callback | function | 是 | 状态切换事件回调方法,[AVScreenCaptureStateCode](#avscreencapturestatecode12)表示切换到的状态。 | 7945 7946**示例:** 7947 7948```ts 7949avScreenCaptureRecorder.on('stateChange', (state: media.AVScreenCaptureStateCode) => { 7950 console.info('avScreenCaptureRecorder stateChange to ' + state); 7951}) 7952``` 7953 7954### on('error')<sup>12+</sup> 7955 7956on(type: 'error', callback: ErrorCallback): void 7957 7958订阅AVScreenCaptureRecorder的错误事件,用户可以根据应用自身逻辑对错误事件进行处理。用户只能订阅一个错误事件的回调方法,重复订阅时,以最后一次订阅的回调接口为准。 7959 7960**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7961 7962**参数:** 7963 7964| 参数名 | 类型 | 必填 | 说明 | 7965| -------- | ------------- | ---- | --------------------------------------- | 7966| type | string | 是 | 错误事件回调类型,支持的事件:'error'。 | 7967| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录屏错误事件回调方法。 | 7968 7969**错误码:** 7970 7971| 错误码ID | 错误信息 | 7972| -------- | -------------------------------- | 7973| 201 | permission denied. | 7974| 5400103 | IO error. Return by ErrorCallback. | 7975| 5400105 | Service died. Return by ErrorCallback. | 7976 7977**示例:** 7978 7979```ts 7980avScreenCaptureRecorder.on('error', (err: BusinessError) => { 7981 console.error('avScreenCaptureRecorder error:' + err.message); 7982}) 7983``` 7984 7985### off('stateChange')<sup>12+</sup> 7986 7987 off(type: 'stateChange', callback?: Callback\<AVScreenCaptureStateCode>): void 7988 7989取消订阅状态切换回调事件。用户可以指定填入状态切换的回调方法来取消订阅。 7990 7991**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7992 7993**参数:** 7994 7995| 参数名 | 类型 | 必填 | 说明 | 7996| -------- | -------- | ---- | ------------------------------------------------------------ | 7997| type | string | 是 | 状态切换事件回调类型,支持的事件:'stateChange'。 | 7998| callback | function | 否 | 状态切换事件回调方法,[AVScreenCaptureStateCode](#avscreencapturestatecode12)表示切换到的状态,不填此参数则会取消最后一次订阅事件。 | 7999 8000**示例:** 8001 8002```ts 8003avScreenCaptureRecorder.off('stateChange'); 8004``` 8005 8006### off('error')<sup>12+</sup> 8007 8008off(type: 'error', callback?: ErrorCallback): void 8009 8010取消订阅错误回调事件。用户可以指定填入错误回调方法来取消订阅。 8011 8012**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 8013 8014**参数:** 8015 8016| 参数名 | 类型 | 必填 | 说明 | 8017| -------- | -------- | ---- | ---------------------------------------------------------- | 8018| type | string | 是 | 状态切换事件回调类型,支持的事件:'error'。 | 8019| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 录屏错误事件回调方法,不填此参数则会取消最后一次订阅事件。 | 8020 8021**示例:** 8022 8023```ts 8024avScreenCaptureRecorder.off('error'); 8025```