1e41f4b71Sopenharmony_ci# @ohos.multimedia.media (媒体服务) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci> **说明:** 4e41f4b71Sopenharmony_ci> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统的媒体资源。 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci媒体子系统包含了音视频相关媒体业务,提供以下常用功能: 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci- 音视频播放([AVPlayer](#avplayer9)<sup>9+</sup>) 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci- 音视频录制([AVRecorder](#avrecorder9)<sup>9+</sup>) 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci- 视频转码([AVTranscoder](#avtranscoder12)<sup>12+</sup>) 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci- 获取音视频元数据([AVMetadataExtractor](#avmetadataextractor11)<sup>11+</sup>) 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci- 获取视频缩略图([AVImageGenerator](#avimagegenerator12)<sup>12+</sup>) 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci## 导入模块 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci```ts 23e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 24e41f4b71Sopenharmony_ci``` 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci## media.createAVPlayer<sup>9+</sup> 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_cicreateAVPlayer(callback: AsyncCallback\<AVPlayer>): void 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci异步方式创建音视频播放实例,通过注册回调函数获取返回值。 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci> **说明:** 33e41f4b71Sopenharmony_ci> 34e41f4b71Sopenharmony_ci> - 推荐单个应用创建的音视频播放实例(即音频、视频、音视频三类相加)不超过16个。<!--Del--> 35e41f4b71Sopenharmony_ci> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放实例。<!--DelEnd--> 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci**参数:** 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 44e41f4b71Sopenharmony_ci| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | 45e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVPlayer](#avplayer9)> | 是 | 回调函数。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 | 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci**错误码:** 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 52e41f4b71Sopenharmony_ci| -------- | ------------------------------ | 53e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by callback. | 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ci**示例:** 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci```ts 58e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer; 61e41f4b71Sopenharmony_cimedia.createAVPlayer((error: BusinessError, video: media.AVPlayer) => { 62e41f4b71Sopenharmony_ci if (video != null) { 63e41f4b71Sopenharmony_ci avPlayer = video; 64e41f4b71Sopenharmony_ci console.info('Succeeded in creating AVPlayer'); 65e41f4b71Sopenharmony_ci } else { 66e41f4b71Sopenharmony_ci console.error(`Failed to create AVPlayer, error message:${error.message}`); 67e41f4b71Sopenharmony_ci } 68e41f4b71Sopenharmony_ci}); 69e41f4b71Sopenharmony_ci``` 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci## media.createAVPlayer<sup>9+</sup> 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_cicreateAVPlayer(): Promise\<AVPlayer> 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci异步方式创建音视频播放实例,通过Promise获取返回值。 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci> **说明:** 78e41f4b71Sopenharmony_ci> 79e41f4b71Sopenharmony_ci> - 推荐单个应用创建的音视频播放实例(即音频、视频、音视频三类相加)不超过16个。<!--Del--> 80e41f4b71Sopenharmony_ci> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放实例。<!--DelEnd--> 81e41f4b71Sopenharmony_ci 82e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci**返回值:** 87e41f4b71Sopenharmony_ci 88e41f4b71Sopenharmony_ci| 类型 | 说明 | 89e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 90e41f4b71Sopenharmony_ci| Promise\<[AVPlayer](#avplayer9)> | Promise对象。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 | 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci**错误码:** 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 97e41f4b71Sopenharmony_ci| -------- | ----------------------------- | 98e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by promise. | 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci**示例:** 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci```ts 103e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer; 106e41f4b71Sopenharmony_cimedia.createAVPlayer().then((video: media.AVPlayer) => { 107e41f4b71Sopenharmony_ci if (video != null) { 108e41f4b71Sopenharmony_ci avPlayer = video; 109e41f4b71Sopenharmony_ci console.info('Succeeded in creating AVPlayer'); 110e41f4b71Sopenharmony_ci } else { 111e41f4b71Sopenharmony_ci console.error('Failed to create AVPlayer'); 112e41f4b71Sopenharmony_ci } 113e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 114e41f4b71Sopenharmony_ci console.error(`Failed to create AVPlayer, error message:${error.message}`); 115e41f4b71Sopenharmony_ci}); 116e41f4b71Sopenharmony_ci``` 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci## media.createAVRecorder<sup>9+</sup> 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_cicreateAVRecorder(callback: AsyncCallback\<AVRecorder>): void 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ci异步方式创建音视频录制实例。通过注册回调函数获取返回值。 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci> **说明:** 125e41f4b71Sopenharmony_ci> 126e41f4b71Sopenharmony_ci> - 可创建的音视频录制实例不能超过2个。 127e41f4b71Sopenharmony_ci> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_ci**参数:** 132e41f4b71Sopenharmony_ci 133e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 134e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ | 135e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVRecorder](#avrecorder9)> | 是 | 回调函数。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 | 136e41f4b71Sopenharmony_ci 137e41f4b71Sopenharmony_ci**错误码:** 138e41f4b71Sopenharmony_ci 139e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 142e41f4b71Sopenharmony_ci| -------- | ------------------------------ | 143e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by callback. | 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ci**示例:** 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci```ts 148e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 149e41f4b71Sopenharmony_cilet avRecorder: media.AVRecorder; 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_cimedia.createAVRecorder((error: BusinessError, recorder: media.AVRecorder) => { 152e41f4b71Sopenharmony_ci if (recorder != null) { 153e41f4b71Sopenharmony_ci avRecorder = recorder; 154e41f4b71Sopenharmony_ci console.info('Succeeded in creating AVRecorder'); 155e41f4b71Sopenharmony_ci } else { 156e41f4b71Sopenharmony_ci console.error(`Failed to create AVRecorder, error message:${error.message}`); 157e41f4b71Sopenharmony_ci } 158e41f4b71Sopenharmony_ci}); 159e41f4b71Sopenharmony_ci``` 160e41f4b71Sopenharmony_ci 161e41f4b71Sopenharmony_ci## media.createAVRecorder<sup>9+</sup> 162e41f4b71Sopenharmony_ci 163e41f4b71Sopenharmony_cicreateAVRecorder(): Promise\<AVRecorder> 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci异步方式创建音视频录制实例。通过Promise获取返回值。 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci> **说明:** 168e41f4b71Sopenharmony_ci> 169e41f4b71Sopenharmony_ci> - 可创建的音视频录制实例不能超过2个。 170e41f4b71Sopenharmony_ci> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci**返回值:** 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_ci| 类型 | 说明 | 179e41f4b71Sopenharmony_ci| ------------------------------------ | ------------------------------------------------------------ | 180e41f4b71Sopenharmony_ci| Promise\<[AVRecorder](#avrecorder9)> | Promise对象。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 | 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci**错误码:** 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 187e41f4b71Sopenharmony_ci| -------- | ----------------------------- | 188e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by promise. | 189e41f4b71Sopenharmony_ci 190e41f4b71Sopenharmony_ci**示例:** 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci```ts 193e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_cilet avRecorder: media.AVRecorder; 196e41f4b71Sopenharmony_cimedia.createAVRecorder().then((recorder: media.AVRecorder) => { 197e41f4b71Sopenharmony_ci if (recorder != null) { 198e41f4b71Sopenharmony_ci avRecorder = recorder; 199e41f4b71Sopenharmony_ci console.info('Succeeded in creating AVRecorder'); 200e41f4b71Sopenharmony_ci } else { 201e41f4b71Sopenharmony_ci console.error('Failed to create AVRecorder'); 202e41f4b71Sopenharmony_ci } 203e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 204e41f4b71Sopenharmony_ci console.error(`Failed to create AVRecorder, error message:${error.message}`); 205e41f4b71Sopenharmony_ci}); 206e41f4b71Sopenharmony_ci``` 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci## media.createAVTranscoder<sup>12+</sup> 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_cicreateAVTranscoder(): Promise\<AVTranscoder> 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ci异步方式创建视频转码实例,通过Promise获取返回值。 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci> **说明:** 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci> 可创建的视频转码实例不能超过2个。 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_ci**返回值:** 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci| 类型 | 说明 | 223e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 224e41f4b71Sopenharmony_ci| Promise\<[AVTranscoder](#avtranscoder12)> | Promise对象。异步返回AVTranscoder实例,失败时返回null。可用于视频转码。 | 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci**错误码:** 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 231e41f4b71Sopenharmony_ci| -------- | ----------------------------- | 232e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by promise. | 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci**示例:** 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ci```ts 237e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 238e41f4b71Sopenharmony_ci 239e41f4b71Sopenharmony_cilet avTranscoder: media.AVTranscoder; 240e41f4b71Sopenharmony_cimedia.createAVTranscoder().then((transcoder: media.AVTranscoder) => { 241e41f4b71Sopenharmony_ci if (transcoder != null) { 242e41f4b71Sopenharmony_ci avTranscoder = transcoder; 243e41f4b71Sopenharmony_ci console.info('Succeeded in creating AVTranscoder'); 244e41f4b71Sopenharmony_ci } else { 245e41f4b71Sopenharmony_ci console.error('Failed to create AVTranscoder'); 246e41f4b71Sopenharmony_ci } 247e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 248e41f4b71Sopenharmony_ci console.error(`Failed to create AVTranscoder, error message:${error.message}`); 249e41f4b71Sopenharmony_ci}); 250e41f4b71Sopenharmony_ci``` 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci## media.createAVMetadataExtractor<sup>11+</sup> 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_cicreateAVMetadataExtractor(callback: AsyncCallback\<AVMetadataExtractor>): void 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ci异步方式创建AVMetadataExtractor实例,通过注册回调函数获取返回值。 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci**参数:** 261e41f4b71Sopenharmony_ci 262e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 263e41f4b71Sopenharmony_ci| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | 264e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVMetadataExtractor](#avmetadataextractor11)> | 是 | 回调函数。当创建AVMetadataExtractor实例成功,err为undefined,data为获取到的AVMetadataExtractor实例,否则为错误对象。 | 265e41f4b71Sopenharmony_ci 266e41f4b71Sopenharmony_ci**错误码:** 267e41f4b71Sopenharmony_ci 268e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 269e41f4b71Sopenharmony_ci 270e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 271e41f4b71Sopenharmony_ci| -------- | ------------------------------ | 272e41f4b71Sopenharmony_ci| 5400101 | No memory. Returned by callback. | 273e41f4b71Sopenharmony_ci 274e41f4b71Sopenharmony_ci**示例:** 275e41f4b71Sopenharmony_ci 276e41f4b71Sopenharmony_ci```ts 277e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 278e41f4b71Sopenharmony_ci 279e41f4b71Sopenharmony_cilet avMetadataExtractor: media.AVMetadataExtractor; 280e41f4b71Sopenharmony_cimedia.createAVMetadataExtractor((error: BusinessError, extractor: media.AVMetadataExtractor) => { 281e41f4b71Sopenharmony_ci if (extractor != null) { 282e41f4b71Sopenharmony_ci avMetadataExtractor = extractor; 283e41f4b71Sopenharmony_ci console.info('Succeeded in creating AVMetadataExtractor'); 284e41f4b71Sopenharmony_ci } else { 285e41f4b71Sopenharmony_ci console.error(`Failed to create AVMetadataExtractor, error message:${error.message}`); 286e41f4b71Sopenharmony_ci } 287e41f4b71Sopenharmony_ci}); 288e41f4b71Sopenharmony_ci``` 289e41f4b71Sopenharmony_ci 290e41f4b71Sopenharmony_ci## media.createAVMetadataExtractor<sup>11+</sup> 291e41f4b71Sopenharmony_ci 292e41f4b71Sopenharmony_cicreateAVMetadataExtractor(): Promise\<AVMetadataExtractor> 293e41f4b71Sopenharmony_ci 294e41f4b71Sopenharmony_ci异步方式创建AVMetadataExtractor实例,通过Promise获取返回值。 295e41f4b71Sopenharmony_ci 296e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 297e41f4b71Sopenharmony_ci 298e41f4b71Sopenharmony_ci**错误码:** 299e41f4b71Sopenharmony_ci 300e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 301e41f4b71Sopenharmony_ci 302e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 303e41f4b71Sopenharmony_ci| -------- | ------------------------------ | 304e41f4b71Sopenharmony_ci| 5400101 | No memory. Returned by promise. | 305e41f4b71Sopenharmony_ci 306e41f4b71Sopenharmony_ci**示例:** 307e41f4b71Sopenharmony_ci 308e41f4b71Sopenharmony_ci```ts 309e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 310e41f4b71Sopenharmony_ci 311e41f4b71Sopenharmony_cilet avMetadataExtractor: media.AVMetadataExtractor; 312e41f4b71Sopenharmony_cimedia.createAVMetadataExtractor().then((extractor: media.AVMetadataExtractor) => { 313e41f4b71Sopenharmony_ci if (extractor != null) { 314e41f4b71Sopenharmony_ci avMetadataExtractor = extractor; 315e41f4b71Sopenharmony_ci console.info('Succeeded in creating AVMetadataExtractor'); 316e41f4b71Sopenharmony_ci } else { 317e41f4b71Sopenharmony_ci console.error(`Failed to create AVMetadataExtractor`); 318e41f4b71Sopenharmony_ci } 319e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 320e41f4b71Sopenharmony_ci console.error(`Failed to create AVMetadataExtractor, error message:${error.message}`); 321e41f4b71Sopenharmony_ci}); 322e41f4b71Sopenharmony_ci``` 323e41f4b71Sopenharmony_ci 324e41f4b71Sopenharmony_ci## media.createSoundPool<sup>10+</sup> 325e41f4b71Sopenharmony_ci 326e41f4b71Sopenharmony_cicreateSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo, callback: AsyncCallback\<SoundPool>): void 327e41f4b71Sopenharmony_ci 328e41f4b71Sopenharmony_ci创建音频池实例,使用callback方式异步获取返回值。 329e41f4b71Sopenharmony_ci 330e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.SoundPool 331e41f4b71Sopenharmony_ci 332e41f4b71Sopenharmony_ci**参数:** 333e41f4b71Sopenharmony_ci 334e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 335e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ | 336e41f4b71Sopenharmony_ci| maxStreams | number | 是 | soundPool实例的最大播放的流数 | 337e41f4b71Sopenharmony_ci| 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播放短音时为混音模式,不会打断其他音频播放。 | 338e41f4b71Sopenharmony_ci| callback | AsyncCallback<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | 是 | 回调函数。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 | 339e41f4b71Sopenharmony_ci 340e41f4b71Sopenharmony_ci**错误码:** 341e41f4b71Sopenharmony_ci 342e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 343e41f4b71Sopenharmony_ci 344e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 345e41f4b71Sopenharmony_ci| -------- | ------------------------------ | 346e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by callback. | 347e41f4b71Sopenharmony_ci 348e41f4b71Sopenharmony_ci**示例:** 349e41f4b71Sopenharmony_ci 350e41f4b71Sopenharmony_ci```js 351e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit'; 352e41f4b71Sopenharmony_ci 353e41f4b71Sopenharmony_cilet soundPool: media.SoundPool; 354e41f4b71Sopenharmony_cilet audioRendererInfo: audio.AudioRendererInfo = { 355e41f4b71Sopenharmony_ci usage : audio.StreamUsage.STREAM_USAGE_MUSIC, 356e41f4b71Sopenharmony_ci rendererFlags : 0 357e41f4b71Sopenharmony_ci} 358e41f4b71Sopenharmony_ci 359e41f4b71Sopenharmony_cimedia.createSoundPool(5, audioRendererInfo, (error, soundPool_: media.SoundPool) => { 360e41f4b71Sopenharmony_ci if (error) { 361e41f4b71Sopenharmony_ci console.error(`Failed to createSoundPool`) 362e41f4b71Sopenharmony_ci return; 363e41f4b71Sopenharmony_ci } else { 364e41f4b71Sopenharmony_ci soundPool = soundPool_; 365e41f4b71Sopenharmony_ci console.info(`Succeeded in createSoundPool`) 366e41f4b71Sopenharmony_ci } 367e41f4b71Sopenharmony_ci}); 368e41f4b71Sopenharmony_ci``` 369e41f4b71Sopenharmony_ci 370e41f4b71Sopenharmony_ci## media.createSoundPool<sup>10+</sup> 371e41f4b71Sopenharmony_ci 372e41f4b71Sopenharmony_cicreateSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo): Promise\<SoundPool> 373e41f4b71Sopenharmony_ci 374e41f4b71Sopenharmony_ci创建音频池实例,通过Promise获取返回值。 375e41f4b71Sopenharmony_ci 376e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.SoundPool 377e41f4b71Sopenharmony_ci 378e41f4b71Sopenharmony_ci**参数:** 379e41f4b71Sopenharmony_ci 380e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 381e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ | 382e41f4b71Sopenharmony_ci| maxStreams | number | 是 | soundPool实例的最大播放的流数 | 383e41f4b71Sopenharmony_ci| audioRenderInfo | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8) | 是 | 音频播放参数信息 | 384e41f4b71Sopenharmony_ci 385e41f4b71Sopenharmony_ci**返回值:** 386e41f4b71Sopenharmony_ci 387e41f4b71Sopenharmony_ci| 类型 | 说明 | 388e41f4b71Sopenharmony_ci| ----------------------------------------- | ------------------------------------------------------------ | 389e41f4b71Sopenharmony_ci| Promise<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | Promise对象。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 | 390e41f4b71Sopenharmony_ci 391e41f4b71Sopenharmony_ci**错误码:** 392e41f4b71Sopenharmony_ci 393e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 394e41f4b71Sopenharmony_ci 395e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 396e41f4b71Sopenharmony_ci| -------- | ----------------------------- | 397e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by promise. | 398e41f4b71Sopenharmony_ci 399e41f4b71Sopenharmony_ci**示例:** 400e41f4b71Sopenharmony_ci 401e41f4b71Sopenharmony_ci```js 402e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit'; 403e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 404e41f4b71Sopenharmony_ci 405e41f4b71Sopenharmony_cilet soundPool: media.SoundPool; 406e41f4b71Sopenharmony_cilet audioRendererInfo: audio.AudioRendererInfo = { 407e41f4b71Sopenharmony_ci usage : audio.StreamUsage.STREAM_USAGE_MUSIC, 408e41f4b71Sopenharmony_ci rendererFlags : 0 409e41f4b71Sopenharmony_ci} 410e41f4b71Sopenharmony_ci 411e41f4b71Sopenharmony_cimedia.createSoundPool(5, audioRendererInfo).then((soundpool_: media.SoundPool) => { 412e41f4b71Sopenharmony_ci if (soundpool_ != null) { 413e41f4b71Sopenharmony_ci soundPool = soundpool_; 414e41f4b71Sopenharmony_ci console.info('Succceeded in creating SoundPool'); 415e41f4b71Sopenharmony_ci } else { 416e41f4b71Sopenharmony_ci console.error('Failed to create SoundPool'); 417e41f4b71Sopenharmony_ci } 418e41f4b71Sopenharmony_ci}, (error: BusinessError) => { 419e41f4b71Sopenharmony_ci console.error(`soundpool catchCallback, error message:${error.message}`); 420e41f4b71Sopenharmony_ci}); 421e41f4b71Sopenharmony_ci``` 422e41f4b71Sopenharmony_ci 423e41f4b71Sopenharmony_ci## media.createAVScreenCaptureRecorder<sup>12+</sup> 424e41f4b71Sopenharmony_ci 425e41f4b71Sopenharmony_cicreateAVScreenCaptureRecorder(): Promise\<AVScreenCaptureRecorder> 426e41f4b71Sopenharmony_ci 427e41f4b71Sopenharmony_ci创建屏幕录制实例,通过Promise获取返回值。 428e41f4b71Sopenharmony_ci 429e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 430e41f4b71Sopenharmony_ci 431e41f4b71Sopenharmony_ci**返回值:** 432e41f4b71Sopenharmony_ci 433e41f4b71Sopenharmony_ci| 类型 | 说明 | 434e41f4b71Sopenharmony_ci| ------------------------------------------------------------ | ------------------------------------------------------------ | 435e41f4b71Sopenharmony_ci| Promise\<[AVScreenCaptureRecorder](#avscreencapturerecorder12)> | Promise对象。异步返回AVScreenCaptureRecorder实例,失败时返回null。可用于进行屏幕录制。 | 436e41f4b71Sopenharmony_ci 437e41f4b71Sopenharmony_ci**错误码:** 438e41f4b71Sopenharmony_ci 439e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 440e41f4b71Sopenharmony_ci| -------- | ------------------------------ | 441e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by promise. | 442e41f4b71Sopenharmony_ci 443e41f4b71Sopenharmony_ci**示例:** 444e41f4b71Sopenharmony_ci 445e41f4b71Sopenharmony_ci```ts 446e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 447e41f4b71Sopenharmony_ci 448e41f4b71Sopenharmony_cilet avScreenCaptureRecorder: media.AVScreenCaptureRecorder; 449e41f4b71Sopenharmony_cimedia.createAVScreenCaptureRecorder().then((captureRecorder: media.AVScreenCaptureRecorder) => { 450e41f4b71Sopenharmony_ci if (captureRecorder != null) { 451e41f4b71Sopenharmony_ci avScreenCaptureRecorder = captureRecorder; 452e41f4b71Sopenharmony_ci console.info('Succeeded in createAVScreenCaptureRecorder'); 453e41f4b71Sopenharmony_ci } else { 454e41f4b71Sopenharmony_ci console.error('Failed to createAVScreenCaptureRecorder'); 455e41f4b71Sopenharmony_ci } 456e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 457e41f4b71Sopenharmony_ci console.error(`createAVScreenCaptureRecorder catchCallback, error message:${error.message}`); 458e41f4b71Sopenharmony_ci}); 459e41f4b71Sopenharmony_ci``` 460e41f4b71Sopenharmony_ci 461e41f4b71Sopenharmony_ci## AVErrorCode<sup>9+</sup> 462e41f4b71Sopenharmony_ci 463e41f4b71Sopenharmony_ci[媒体错误码](errorcode-media.md)类型枚举 464e41f4b71Sopenharmony_ci 465e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 466e41f4b71Sopenharmony_ci 467e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 468e41f4b71Sopenharmony_ci 469e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 470e41f4b71Sopenharmony_ci| :------------------------------------ | ------- | ------------------------------------ | 471e41f4b71Sopenharmony_ci| AVERR_OK | 0 | 表示操作成功。 | 472e41f4b71Sopenharmony_ci| AVERR_NO_PERMISSION | 201 | 表示无权限执行此操作。 | 473e41f4b71Sopenharmony_ci| AVERR_INVALID_PARAMETER | 401 | 表示传入入参无效。 | 474e41f4b71Sopenharmony_ci| AVERR_UNSUPPORT_CAPABILITY | 801 | 表示当前版本不支持该API能力。 | 475e41f4b71Sopenharmony_ci| AVERR_NO_MEMORY | 5400101 | 表示系统内存不足或服务数量达到上限。 | 476e41f4b71Sopenharmony_ci| AVERR_OPERATE_NOT_PERMIT | 5400102 | 表示当前状态不允许或无权执行此操作。 | 477e41f4b71Sopenharmony_ci| AVERR_IO | 5400103 | 表示数据流异常信息。 | 478e41f4b71Sopenharmony_ci| AVERR_TIMEOUT | 5400104 | 表示系统或网络响应超时。 | 479e41f4b71Sopenharmony_ci| AVERR_SERVICE_DIED | 5400105 | 表示服务进程死亡。 | 480e41f4b71Sopenharmony_ci| AVERR_UNSUPPORT_FORMAT | 5400106 | 表示不支持当前媒体资源的格式。 | 481e41f4b71Sopenharmony_ci| AVERR_AUDIO_INTERRUPTED<sup>11+</sup> | 5400107 | 表示音频焦点被抢占 | 482e41f4b71Sopenharmony_ci 483e41f4b71Sopenharmony_ci## MediaType<sup>8+</sup> 484e41f4b71Sopenharmony_ci 485e41f4b71Sopenharmony_ci媒体类型枚举。 486e41f4b71Sopenharmony_ci 487e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 488e41f4b71Sopenharmony_ci 489e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 490e41f4b71Sopenharmony_ci| -------------- | --------------------- | ------------------- | 491e41f4b71Sopenharmony_ci| MEDIA_TYPE_AUD | 0 | 表示音频。 <br> **原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 | 492e41f4b71Sopenharmony_ci| MEDIA_TYPE_VID | 1 | 表示视频。 <br> **原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 | 493e41f4b71Sopenharmony_ci| MEDIA_TYPE_SUBTITLE<sup>12+</sup> | 2 | 表示字幕。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ci## CodecMimeType<sup>8+</sup> 496e41f4b71Sopenharmony_ci 497e41f4b71Sopenharmony_ciCodec MIME类型枚举。 498e41f4b71Sopenharmony_ci 499e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 500e41f4b71Sopenharmony_ci 501e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 502e41f4b71Sopenharmony_ci| ------------ | --------------------- | ------------------------ | 503e41f4b71Sopenharmony_ci| VIDEO_H263 | 'video/h263' | 表示视频/h263类型。 | 504e41f4b71Sopenharmony_ci| VIDEO_AVC | 'video/avc' | 表示视频/avc类型。 | 505e41f4b71Sopenharmony_ci| VIDEO_MPEG2 | 'video/mpeg2' | 表示视频/mpeg2类型。 | 506e41f4b71Sopenharmony_ci| VIDEO_MPEG4 | 'video/mp4v-es' | 表示视频/mpeg4类型。 | 507e41f4b71Sopenharmony_ci| VIDEO_VP8 | 'video/x-vnd.on2.vp8' | 表示视频/vp8类型。 | 508e41f4b71Sopenharmony_ci| VIDEO_HEVC<sup>11+</sup> | 'video/hevc' | 表示视频/H265类型。| 509e41f4b71Sopenharmony_ci| AUDIO_AAC | 'audio/mp4a-latm' | 表示音频/mp4a-latm类型。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 510e41f4b71Sopenharmony_ci| AUDIO_VORBIS | 'audio/vorbis' | 表示音频/vorbis类型。 | 511e41f4b71Sopenharmony_ci| AUDIO_FLAC | 'audio/flac' | 表示音频/flac类型。 | 512e41f4b71Sopenharmony_ci| AUDIO_MP3<sup>12+</sup> | 'audio/mpeg' | 表示音频/mpeg类型。 | 513e41f4b71Sopenharmony_ci| AUDIO_G711MU<sup>12+</sup> | 'audio/g711mu' | 表示音频/G711-mulaw类型。 | 514e41f4b71Sopenharmony_ci 515e41f4b71Sopenharmony_ci## MediaDescriptionKey<sup>8+</sup> 516e41f4b71Sopenharmony_ci 517e41f4b71Sopenharmony_ci媒体信息描述枚举。 518e41f4b71Sopenharmony_ci 519e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 520e41f4b71Sopenharmony_ci 521e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 522e41f4b71Sopenharmony_ci| ------------------------ | --------------- | ------------------------------------------------------------ | 523e41f4b71Sopenharmony_ci| MD_KEY_TRACK_INDEX | 'track_index' | 表示轨道序号,其对应键值类型为number。 <br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 524e41f4b71Sopenharmony_ci| MD_KEY_TRACK_TYPE | 'track_type' | 表示轨道类型,其对应键值类型为number,参考[MediaType](#mediatype8)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 525e41f4b71Sopenharmony_ci| MD_KEY_CODEC_MIME | 'codec_mime' | 表示codec_mime类型,其对应键值类型为string。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 526e41f4b71Sopenharmony_ci| MD_KEY_DURATION | 'duration' | 表示媒体时长,其对应键值类型为number,单位为毫秒(ms)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 527e41f4b71Sopenharmony_ci| MD_KEY_BITRATE | 'bitrate' | 表示比特率,其对应键值类型为number,单位为比特率(bps)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 528e41f4b71Sopenharmony_ci| MD_KEY_WIDTH | 'width' | 表示视频宽度,其对应键值类型为number,单位为像素(px)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 529e41f4b71Sopenharmony_ci| MD_KEY_HEIGHT | 'height' | 表示视频高度,其对应键值类型为number,单位为像素(px)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 530e41f4b71Sopenharmony_ci| MD_KEY_FRAME_RATE | 'frame_rate' | 表示视频帧率,其对应键值类型为number,单位为每100秒的帧数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 531e41f4b71Sopenharmony_ci| MD_KEY_AUD_CHANNEL_COUNT | 'channel_count' | 表示声道数,其对应键值类型为number。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 532e41f4b71Sopenharmony_ci| MD_KEY_AUD_SAMPLE_RATE | 'sample_rate' | 表示采样率,其对应键值类型为number,单位为赫兹(Hz)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。| 533e41f4b71Sopenharmony_ci| MD_KEY_AUD_SAMPLE_DEPTH<sup>12+</sup> | 'sample_depth' | 表示位深,其对应键值类型为number,单位为位(bit)。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 534e41f4b71Sopenharmony_ci| MD_KEY_TRACK_NAME<sup>12+</sup> | 'track_name' | 表示track名称,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 535e41f4b71Sopenharmony_ci| MD_KEY_HDR_TYPE<sup>12+</sup> | 'hdr_type' | 表示视频轨类型,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 536e41f4b71Sopenharmony_ci 537e41f4b71Sopenharmony_ci## PlaybackInfoKey<sup>12+</sup> 538e41f4b71Sopenharmony_ci 539e41f4b71Sopenharmony_ci播放信息描述枚举。 540e41f4b71Sopenharmony_ci 541e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 542e41f4b71Sopenharmony_ci 543e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 544e41f4b71Sopenharmony_ci| ------------------------ | --------------- | ------------------------------------------------------------ | 545e41f4b71Sopenharmony_ci| SERVER_IP_ADDRESS | 'server_ip_address' | 表示服务器IP地址,其对应键值类型为string。 | 546e41f4b71Sopenharmony_ci| AVG_DOWNLOAD_RATE | 'average_download_rate'| 表示平均下载速率,其对应键值类型为number,单位为比特率(bps)。 | 547e41f4b71Sopenharmony_ci| DOWNLOAD_RATE | 'download_rate' | 表示1s的下载速率,其对应键值类型为number,单位为比特率(bps)。| 548e41f4b71Sopenharmony_ci| IS_DOWNLOADING | 'is_downloading' | 表示下载状态,1表示在下载状态,0表示非下载状态(下载完成),其对应键值类型为number。| 549e41f4b71Sopenharmony_ci| BUFFER_DURATION | 'buffer_duration' | 表示缓存数据的可播放时长,其对应键值类型为number,单位为秒(s)。| 550e41f4b71Sopenharmony_ci 551e41f4b71Sopenharmony_ci## BufferingInfoType<sup>8+</sup> 552e41f4b71Sopenharmony_ci 553e41f4b71Sopenharmony_ci缓存事件类型枚举。 554e41f4b71Sopenharmony_ci 555e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 556e41f4b71Sopenharmony_ci 557e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 558e41f4b71Sopenharmony_ci 559e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 560e41f4b71Sopenharmony_ci| ----------------- | ---- | -------------------------------- | 561e41f4b71Sopenharmony_ci| BUFFERING_START | 1 | 表示开始缓存。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 562e41f4b71Sopenharmony_ci| BUFFERING_END | 2 | 表示结束缓存。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 563e41f4b71Sopenharmony_ci| BUFFERING_PERCENT | 3 | 表示缓存百分比。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 564e41f4b71Sopenharmony_ci| CACHED_DURATION | 4 | 表示缓存时长,单位为毫秒(ms)。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 565e41f4b71Sopenharmony_ci 566e41f4b71Sopenharmony_ci## StateChangeReason<sup>9+</sup> 567e41f4b71Sopenharmony_ci 568e41f4b71Sopenharmony_ci表示播放或录制实例状态机切换原因的枚举,伴随state一起上报。 569e41f4b71Sopenharmony_ci 570e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 571e41f4b71Sopenharmony_ci 572e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 573e41f4b71Sopenharmony_ci 574e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 575e41f4b71Sopenharmony_ci| ---------- | ---- | ------------------------------------------------------------ | 576e41f4b71Sopenharmony_ci| USER | 1 | 表示用户行为造成的状态切换,由用户或客户端主动调用接口产生。 | 577e41f4b71Sopenharmony_ci| BACKGROUND | 2 | 表示后台系统行为造成的状态切换,比如应用未注册播控中心权限,退到后台时被系统强制暂停或停止。 | 578e41f4b71Sopenharmony_ci 579e41f4b71Sopenharmony_ci## AVPlayer<sup>9+</sup> 580e41f4b71Sopenharmony_ci 581e41f4b71Sopenharmony_ci播放管理类,用于管理和播放媒体资源。在调用AVPlayer的方法前,需要先通过[createAVPlayer()](#mediacreateavplayer9)构建一个AVPlayer实例。 582e41f4b71Sopenharmony_ci 583e41f4b71Sopenharmony_ciAudio/Video播放demo可参考:[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)、[视频播放开发指导](../../media/media/video-playback.md)。 584e41f4b71Sopenharmony_ci 585e41f4b71Sopenharmony_ci> **说明:** 586e41f4b71Sopenharmony_ci> 587e41f4b71Sopenharmony_ci> 在使用AVPlayer实例的方法时,建议开发者注册相关回调,主动获取当前状态变化。 588e41f4b71Sopenharmony_ci> - [on('stateChange')](#onstatechange9):监听播放状态机AVPlayerState切换。 589e41f4b71Sopenharmony_ci> - [on('error')](#onerror9):监听错误事件。 590e41f4b71Sopenharmony_ci 591e41f4b71Sopenharmony_ci### 属性 592e41f4b71Sopenharmony_ci 593e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 594e41f4b71Sopenharmony_ci 595e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 596e41f4b71Sopenharmony_ci| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 597e41f4b71Sopenharmony_ci| 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开始,该接口支持在原子化服务中使用。 | 598e41f4b71Sopenharmony_ci| 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开始,该接口支持在原子化服务中使用。 | 599e41f4b71Sopenharmony_ci| 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开始,该接口支持在原子化服务中使用。 | 600e41f4b71Sopenharmony_ci| 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开始,该接口支持在原子化服务中使用。 | 601e41f4b71Sopenharmony_ci| loop<sup>9+</sup> | boolean | 否 | 否 | 视频循环播放属性,默认'false',设置为'true'表示循环播放,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>直播场景不支持loop设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 602e41f4b71Sopenharmony_ci| videoScaleType<sup>9+</sup> | [VideoScaleType](#videoscaletype9) | 否 | 是 | 视频缩放模式,默认VIDEO_SCALE_TYPE_FIT,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 603e41f4b71Sopenharmony_ci| 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开始,该接口支持在原子化服务中使用。| 604e41f4b71Sopenharmony_ci| 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开始,该接口支持在原子化服务中使用。| 605e41f4b71Sopenharmony_ci| 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开始,该接口支持在原子化服务中使用。| 606e41f4b71Sopenharmony_ci| state<sup>9+</sup> | [AVPlayerState](#avplayerstate9) | 是 | 否 | 音视频播放的状态,全状态有效,可查询参数。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 607e41f4b71Sopenharmony_ci| currentTime<sup>9+</sup> | number | 是 | 否 | 视频的当前播放位置,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 608e41f4b71Sopenharmony_ci| duration<sup>9+</sup> | number | 是 | 否 | 视频时长,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 609e41f4b71Sopenharmony_ci| width<sup>9+</sup> | number | 是 | 否 | 视频宽,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 610e41f4b71Sopenharmony_ci| height<sup>9+</sup> | number | 是 | 否 | 视频高,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 611e41f4b71Sopenharmony_ci 612e41f4b71Sopenharmony_ci### on('stateChange')<sup>9+</sup> 613e41f4b71Sopenharmony_ci 614e41f4b71Sopenharmony_cion(type: 'stateChange', callback: OnAVPlayerStateChangeHandle): void 615e41f4b71Sopenharmony_ci 616e41f4b71Sopenharmony_ci监听播放状态机AVPlayerState切换的事件。 617e41f4b71Sopenharmony_ci 618e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 619e41f4b71Sopenharmony_ci 620e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 621e41f4b71Sopenharmony_ci 622e41f4b71Sopenharmony_ci**参数:** 623e41f4b71Sopenharmony_ci 624e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 625e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 626e41f4b71Sopenharmony_ci| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 627e41f4b71Sopenharmony_ci| callback | [OnAVPlayerStateChangeHandle](#onavplayerstatechangehandle12) | 是 | 状态机切换事件回调方法。 | 628e41f4b71Sopenharmony_ci 629e41f4b71Sopenharmony_ci**示例:** 630e41f4b71Sopenharmony_ci 631e41f4b71Sopenharmony_ci```ts 632e41f4b71Sopenharmony_ciavPlayer.on('stateChange', async (state: string, reason: media.StateChangeReason) => { 633e41f4b71Sopenharmony_ci switch (state) { 634e41f4b71Sopenharmony_ci case 'idle': 635e41f4b71Sopenharmony_ci console.info('state idle called'); 636e41f4b71Sopenharmony_ci break; 637e41f4b71Sopenharmony_ci case 'initialized': 638e41f4b71Sopenharmony_ci console.info('initialized prepared called'); 639e41f4b71Sopenharmony_ci break; 640e41f4b71Sopenharmony_ci case 'prepared': 641e41f4b71Sopenharmony_ci console.info('state prepared called'); 642e41f4b71Sopenharmony_ci break; 643e41f4b71Sopenharmony_ci case 'playing': 644e41f4b71Sopenharmony_ci console.info('state playing called'); 645e41f4b71Sopenharmony_ci break; 646e41f4b71Sopenharmony_ci case 'paused': 647e41f4b71Sopenharmony_ci console.info('state paused called'); 648e41f4b71Sopenharmony_ci break; 649e41f4b71Sopenharmony_ci case 'completed': 650e41f4b71Sopenharmony_ci console.info('state completed called'); 651e41f4b71Sopenharmony_ci break; 652e41f4b71Sopenharmony_ci case 'stopped': 653e41f4b71Sopenharmony_ci console.info('state stopped called'); 654e41f4b71Sopenharmony_ci break; 655e41f4b71Sopenharmony_ci case 'released': 656e41f4b71Sopenharmony_ci console.info('state released called'); 657e41f4b71Sopenharmony_ci break; 658e41f4b71Sopenharmony_ci case 'error': 659e41f4b71Sopenharmony_ci console.info('state error called'); 660e41f4b71Sopenharmony_ci break; 661e41f4b71Sopenharmony_ci default: 662e41f4b71Sopenharmony_ci console.info('unknown state :' + state); 663e41f4b71Sopenharmony_ci break; 664e41f4b71Sopenharmony_ci } 665e41f4b71Sopenharmony_ci}) 666e41f4b71Sopenharmony_ci``` 667e41f4b71Sopenharmony_ci 668e41f4b71Sopenharmony_ci### off('stateChange')<sup>9+</sup> 669e41f4b71Sopenharmony_ci 670e41f4b71Sopenharmony_cioff(type: 'stateChange', callback?: OnAVPlayerStateChangeHandle): void 671e41f4b71Sopenharmony_ci 672e41f4b71Sopenharmony_ci取消监听播放状态机[AVPlayerState](#avplayerstate9)切换的事件。 673e41f4b71Sopenharmony_ci 674e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 675e41f4b71Sopenharmony_ci 676e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 677e41f4b71Sopenharmony_ci 678e41f4b71Sopenharmony_ci**参数:** 679e41f4b71Sopenharmony_ci 680e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 681e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----------------------------------------------------- | 682e41f4b71Sopenharmony_ci| type | string | 是 | 状态机切换事件回调类型,取消注册的事件:'stateChange' | 683e41f4b71Sopenharmony_ci| callback | [OnAVPlayerStateChangeHandle](#onavplayerstatechangehandle12) | 否 | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 | 684e41f4b71Sopenharmony_ci 685e41f4b71Sopenharmony_ci**示例:** 686e41f4b71Sopenharmony_ci 687e41f4b71Sopenharmony_ci```ts 688e41f4b71Sopenharmony_ciavPlayer.off('stateChange') 689e41f4b71Sopenharmony_ci``` 690e41f4b71Sopenharmony_ci 691e41f4b71Sopenharmony_ci### on('error')<sup>9+</sup> 692e41f4b71Sopenharmony_ci 693e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void 694e41f4b71Sopenharmony_ci 695e41f4b71Sopenharmony_ci监听[AVPlayer](#avplayer9)的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVPlayerState](#avplayerstate9)也切至error状态,用户需要通过[reset()](#reset9)或者[release()](#release9)退出播放操作。 696e41f4b71Sopenharmony_ci 697e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。 698e41f4b71Sopenharmony_ci 699e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 700e41f4b71Sopenharmony_ci 701e41f4b71Sopenharmony_ci**参数:** 702e41f4b71Sopenharmony_ci 703e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 704e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 705e41f4b71Sopenharmony_ci| type | string | 是 | 错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。 | 706e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。 | 707e41f4b71Sopenharmony_ci 708e41f4b71Sopenharmony_ci**错误码:** 709e41f4b71Sopenharmony_ci 710e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 711e41f4b71Sopenharmony_ci 712e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 713e41f4b71Sopenharmony_ci| -------- | --------------------- | 714e41f4b71Sopenharmony_ci| 201 | Permission denied | 715e41f4b71Sopenharmony_ci| 401 | The parameter check failed. | 716e41f4b71Sopenharmony_ci| 801 | Capability not supported. | 717e41f4b71Sopenharmony_ci| 5400101 | No memory. | 718e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed.| 719e41f4b71Sopenharmony_ci| 5400103 | I/O error | 720e41f4b71Sopenharmony_ci| 5400104 | Time out | 721e41f4b71Sopenharmony_ci| 5400105 | Service died. | 722e41f4b71Sopenharmony_ci| 5400106 | Unsupport format. | 723e41f4b71Sopenharmony_ci 724e41f4b71Sopenharmony_ci**示例:** 725e41f4b71Sopenharmony_ci 726e41f4b71Sopenharmony_ci```ts 727e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 728e41f4b71Sopenharmony_ci 729e41f4b71Sopenharmony_ciavPlayer.on('error', (error: BusinessError) => { 730e41f4b71Sopenharmony_ci console.info('error happened,and error message is :' + error.message) 731e41f4b71Sopenharmony_ci console.info('error happened,and error code is :' + error.code) 732e41f4b71Sopenharmony_ci}) 733e41f4b71Sopenharmony_ci``` 734e41f4b71Sopenharmony_ci 735e41f4b71Sopenharmony_ci### off('error')<sup>9+</sup> 736e41f4b71Sopenharmony_ci 737e41f4b71Sopenharmony_cioff(type: 'error', callback?: ErrorCallback): void 738e41f4b71Sopenharmony_ci 739e41f4b71Sopenharmony_ci取消监听播放的错误事件。 740e41f4b71Sopenharmony_ci 741e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 742e41f4b71Sopenharmony_ci 743e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 744e41f4b71Sopenharmony_ci 745e41f4b71Sopenharmony_ci**参数:** 746e41f4b71Sopenharmony_ci 747e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 748e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----------------------------------------- | 749e41f4b71Sopenharmony_ci| type | string | 是 | 错误事件回调类型,取消注册的事件:'error' | 750e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。<br/>从API version 12开始支持此参数。 | 751e41f4b71Sopenharmony_ci 752e41f4b71Sopenharmony_ci**示例:** 753e41f4b71Sopenharmony_ci 754e41f4b71Sopenharmony_ci```ts 755e41f4b71Sopenharmony_ciavPlayer.off('error') 756e41f4b71Sopenharmony_ci``` 757e41f4b71Sopenharmony_ci 758e41f4b71Sopenharmony_ci### setMediaSource<sup>12+</sup> 759e41f4b71Sopenharmony_ci 760e41f4b71Sopenharmony_cisetMediaSource(src:MediaSource, strategy?: PlaybackStrategy): Promise\<void> 761e41f4b71Sopenharmony_ci 762e41f4b71Sopenharmony_ci流媒体预下载资源设置,下载url对应的流媒体数据,并暂存在内存中。[视频播放开发指导](../../media/media/video-playback.md)。通过Promise获取返回值。 763e41f4b71Sopenharmony_ci 764e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 765e41f4b71Sopenharmony_ci 766e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 767e41f4b71Sopenharmony_ci 768e41f4b71Sopenharmony_ci**参数:** 769e41f4b71Sopenharmony_ci 770e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 771e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 772e41f4b71Sopenharmony_ci| src | [MediaSource](#mediasource12) | 是 | 流媒体预下载媒体来源。 | 773e41f4b71Sopenharmony_ci| strategy | [PlaybackStrategy](#playbackstrategy12) | 否 | 流媒体预下载播放策略。 | 774e41f4b71Sopenharmony_ci 775e41f4b71Sopenharmony_ci**返回值:** 776e41f4b71Sopenharmony_ci 777e41f4b71Sopenharmony_ci| 类型 | 说明 | 778e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ | 779e41f4b71Sopenharmony_ci| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 780e41f4b71Sopenharmony_ci 781e41f4b71Sopenharmony_ci**错误码:** 782e41f4b71Sopenharmony_ci 783e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 784e41f4b71Sopenharmony_ci 785e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 786e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 787e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 788e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 789e41f4b71Sopenharmony_ci 790e41f4b71Sopenharmony_ci**示例:** 791e41f4b71Sopenharmony_ci 792e41f4b71Sopenharmony_ci```ts 793e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 794e41f4b71Sopenharmony_ci 795e41f4b71Sopenharmony_cilet player = await media.createAVPlayer(); 796e41f4b71Sopenharmony_cilet headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"}; 797e41f4b71Sopenharmony_cilet mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx", headers); 798e41f4b71Sopenharmony_cilet playStrategy : media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 3, preferredHdr: false}; 799e41f4b71Sopenharmony_ciplayer.setMediaSource(mediaSource, playStrategy); 800e41f4b71Sopenharmony_ci``` 801e41f4b71Sopenharmony_ci 802e41f4b71Sopenharmony_ci### setPlaybackStrategy<sup>12+</sup> 803e41f4b71Sopenharmony_ci 804e41f4b71Sopenharmony_cisetPlaybackStrategy(strategy: PlaybackStrategy): Promise\<void> 805e41f4b71Sopenharmony_ci 806e41f4b71Sopenharmony_ci设置播放策略,只能在initialized状态下调用。 807e41f4b71Sopenharmony_ci 808e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 809e41f4b71Sopenharmony_ci 810e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 811e41f4b71Sopenharmony_ci 812e41f4b71Sopenharmony_ci**参数:** 813e41f4b71Sopenharmony_ci 814e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 815e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 816e41f4b71Sopenharmony_ci| strategy | [PlaybackStrategy](#playbackstrategy12) | 是 | 播放策略。 | 817e41f4b71Sopenharmony_ci 818e41f4b71Sopenharmony_ci**返回值:** 819e41f4b71Sopenharmony_ci 820e41f4b71Sopenharmony_ci| 类型 | 说明 | 821e41f4b71Sopenharmony_ci| -------------- | ------------------------------------ | 822e41f4b71Sopenharmony_ci| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 823e41f4b71Sopenharmony_ci 824e41f4b71Sopenharmony_ci**错误码:** 825e41f4b71Sopenharmony_ci 826e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 827e41f4b71Sopenharmony_ci 828e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 829e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 830e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Incorrect parameter types. 2. Parameter verification failed. | 831e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 832e41f4b71Sopenharmony_ci 833e41f4b71Sopenharmony_ci**示例:** 834e41f4b71Sopenharmony_ci 835e41f4b71Sopenharmony_ci```ts 836e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 837e41f4b71Sopenharmony_ci 838e41f4b71Sopenharmony_cilet player = await media.createAVPlayer(); 839e41f4b71Sopenharmony_cilet fileDescriptor = await context.resourceManager.getRawFd('xxx.mp4') 840e41f4b71Sopenharmony_ciplayer.fdSrc = fileDescriptor 841e41f4b71Sopenharmony_cilet playStrategy : media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 3, 842e41f4b71Sopenharmony_ci preferredHdr: false, mutedMediaType: media.MediaType.MEDIA_TYPE_AUD}; 843e41f4b71Sopenharmony_ciplayer.setPlaybackStrategy(playStrategy); 844e41f4b71Sopenharmony_ci``` 845e41f4b71Sopenharmony_ci 846e41f4b71Sopenharmony_ci### prepare<sup>9+</sup> 847e41f4b71Sopenharmony_ci 848e41f4b71Sopenharmony_ciprepare(callback: AsyncCallback\<void>): void 849e41f4b71Sopenharmony_ci 850e41f4b71Sopenharmony_ci准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。使用callback方式异步获取返回值。 851e41f4b71Sopenharmony_ci 852e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 853e41f4b71Sopenharmony_ci 854e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 855e41f4b71Sopenharmony_ci 856e41f4b71Sopenharmony_ci**参数:** 857e41f4b71Sopenharmony_ci 858e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 859e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 860e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 准备播放的回调方法。 | 861e41f4b71Sopenharmony_ci 862e41f4b71Sopenharmony_ci**错误码:** 863e41f4b71Sopenharmony_ci 864e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 865e41f4b71Sopenharmony_ci 866e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 867e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 868e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 869e41f4b71Sopenharmony_ci| 5400106 | Unsupport format. Return by callback. | 870e41f4b71Sopenharmony_ci 871e41f4b71Sopenharmony_ci**示例:** 872e41f4b71Sopenharmony_ci 873e41f4b71Sopenharmony_ci```ts 874e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 875e41f4b71Sopenharmony_ci 876e41f4b71Sopenharmony_ciavPlayer.prepare((err: BusinessError) => { 877e41f4b71Sopenharmony_ci if (err) { 878e41f4b71Sopenharmony_ci console.error('Failed to prepare,error message is :' + err.message) 879e41f4b71Sopenharmony_ci } else { 880e41f4b71Sopenharmony_ci console.info('Succeeded in preparing'); 881e41f4b71Sopenharmony_ci } 882e41f4b71Sopenharmony_ci}) 883e41f4b71Sopenharmony_ci``` 884e41f4b71Sopenharmony_ci 885e41f4b71Sopenharmony_ci### prepare<sup>9+</sup> 886e41f4b71Sopenharmony_ci 887e41f4b71Sopenharmony_ciprepare(): Promise\<void> 888e41f4b71Sopenharmony_ci 889e41f4b71Sopenharmony_ci准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。通过Promise获取返回值。 890e41f4b71Sopenharmony_ci 891e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 892e41f4b71Sopenharmony_ci 893e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 894e41f4b71Sopenharmony_ci 895e41f4b71Sopenharmony_ci**返回值:** 896e41f4b71Sopenharmony_ci 897e41f4b71Sopenharmony_ci| 类型 | 说明 | 898e41f4b71Sopenharmony_ci| -------------- | ------------------------- | 899e41f4b71Sopenharmony_ci| Promise\<void> | 准备播放的Promise返回值。 | 900e41f4b71Sopenharmony_ci 901e41f4b71Sopenharmony_ci**错误码:** 902e41f4b71Sopenharmony_ci 903e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 904e41f4b71Sopenharmony_ci 905e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 906e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 907e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 908e41f4b71Sopenharmony_ci| 5400106 | Unsupport format. Return by promise. | 909e41f4b71Sopenharmony_ci 910e41f4b71Sopenharmony_ci**示例:** 911e41f4b71Sopenharmony_ci 912e41f4b71Sopenharmony_ci```ts 913e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 914e41f4b71Sopenharmony_ci 915e41f4b71Sopenharmony_ciavPlayer.prepare().then(() => { 916e41f4b71Sopenharmony_ci console.info('Succeeded in preparing'); 917e41f4b71Sopenharmony_ci}, (err: BusinessError) => { 918e41f4b71Sopenharmony_ci console.error('Failed to prepare,error message is :' + err.message) 919e41f4b71Sopenharmony_ci}) 920e41f4b71Sopenharmony_ci``` 921e41f4b71Sopenharmony_ci 922e41f4b71Sopenharmony_ci### setMediaMuted<sup>12+</sup> 923e41f4b71Sopenharmony_ci 924e41f4b71Sopenharmony_cisetMediaMuted(mediaType: MediaType, muted: boolean ): Promise\<void> 925e41f4b71Sopenharmony_ci 926e41f4b71Sopenharmony_ci设置音频静音/取消音频静音。只能在prepared/playing/paused/completed状态下调用。仅支持设置mediaType为音频格式。 927e41f4b71Sopenharmony_ci 928e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 929e41f4b71Sopenharmony_ci 930e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 931e41f4b71Sopenharmony_ci 932e41f4b71Sopenharmony_ci**参数:** 933e41f4b71Sopenharmony_ci 934e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 935e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 936e41f4b71Sopenharmony_ci| mediaType | [MediaType](#mediatype8) | 是 | 播放策略。 | 937e41f4b71Sopenharmony_ci| muted | boolean | 是 | 是否静音播放。 | 938e41f4b71Sopenharmony_ci 939e41f4b71Sopenharmony_ci**返回值:** 940e41f4b71Sopenharmony_ci 941e41f4b71Sopenharmony_ci| 类型 | 说明 | 942e41f4b71Sopenharmony_ci| -------------- | ------------------------- | 943e41f4b71Sopenharmony_ci| Promise\<void> | 准备播放的Promise返回值。 | 944e41f4b71Sopenharmony_ci 945e41f4b71Sopenharmony_ci**错误码:** 946e41f4b71Sopenharmony_ci 947e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 948e41f4b71Sopenharmony_ci 949e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 950e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 951e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. | 952e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 953e41f4b71Sopenharmony_ci 954e41f4b71Sopenharmony_ci**示例:** 955e41f4b71Sopenharmony_ci 956e41f4b71Sopenharmony_ci```ts 957e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 958e41f4b71Sopenharmony_ci 959e41f4b71Sopenharmony_ciavPlayer.prepare().then(() => { 960e41f4b71Sopenharmony_ci console.info('Succeeded in preparing'); 961e41f4b71Sopenharmony_ci avPlayer.setMediaMuted(media.MediaType.MEDIA_TYPE_AUD, true) 962e41f4b71Sopenharmony_ci}, (err: BusinessError) => { 963e41f4b71Sopenharmony_ci console.error('Failed to prepare,error message is :' + err.message) 964e41f4b71Sopenharmony_ci}) 965e41f4b71Sopenharmony_ci``` 966e41f4b71Sopenharmony_ci 967e41f4b71Sopenharmony_ci### play<sup>9+</sup> 968e41f4b71Sopenharmony_ci 969e41f4b71Sopenharmony_ciplay(callback: AsyncCallback\<void>): void 970e41f4b71Sopenharmony_ci 971e41f4b71Sopenharmony_ci开始播放音视频资源,只能在prepared/paused/completed状态调用。使用callback方式异步获取返回值。 972e41f4b71Sopenharmony_ci 973e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 974e41f4b71Sopenharmony_ci 975e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 976e41f4b71Sopenharmony_ci 977e41f4b71Sopenharmony_ci**参数:** 978e41f4b71Sopenharmony_ci 979e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 980e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 981e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 开始播放的回调方法。 | 982e41f4b71Sopenharmony_ci 983e41f4b71Sopenharmony_ci**错误码:** 984e41f4b71Sopenharmony_ci 985e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 986e41f4b71Sopenharmony_ci 987e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 988e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 989e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 990e41f4b71Sopenharmony_ci 991e41f4b71Sopenharmony_ci**示例:** 992e41f4b71Sopenharmony_ci 993e41f4b71Sopenharmony_ci```ts 994e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 995e41f4b71Sopenharmony_ci 996e41f4b71Sopenharmony_ciavPlayer.play((err: BusinessError) => { 997e41f4b71Sopenharmony_ci if (err) { 998e41f4b71Sopenharmony_ci console.error('Failed to play,error message is :' + err.message) 999e41f4b71Sopenharmony_ci } else { 1000e41f4b71Sopenharmony_ci console.info('Succeeded in playing'); 1001e41f4b71Sopenharmony_ci } 1002e41f4b71Sopenharmony_ci}) 1003e41f4b71Sopenharmony_ci``` 1004e41f4b71Sopenharmony_ci 1005e41f4b71Sopenharmony_ci### play<sup>9+</sup> 1006e41f4b71Sopenharmony_ci 1007e41f4b71Sopenharmony_ciplay(): Promise\<void> 1008e41f4b71Sopenharmony_ci 1009e41f4b71Sopenharmony_ci开始播放音视频资源,只能在prepared/paused/completed状态调用。通过Promise获取返回值。 1010e41f4b71Sopenharmony_ci 1011e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1012e41f4b71Sopenharmony_ci 1013e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1014e41f4b71Sopenharmony_ci 1015e41f4b71Sopenharmony_ci**返回值:** 1016e41f4b71Sopenharmony_ci 1017e41f4b71Sopenharmony_ci| 类型 | 说明 | 1018e41f4b71Sopenharmony_ci| -------------- | ------------------------- | 1019e41f4b71Sopenharmony_ci| Promise\<void> | 开始播放的Promise返回值。 | 1020e41f4b71Sopenharmony_ci 1021e41f4b71Sopenharmony_ci**错误码:** 1022e41f4b71Sopenharmony_ci 1023e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1024e41f4b71Sopenharmony_ci 1025e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1026e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 1027e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 1028e41f4b71Sopenharmony_ci 1029e41f4b71Sopenharmony_ci**示例:** 1030e41f4b71Sopenharmony_ci 1031e41f4b71Sopenharmony_ci```ts 1032e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1033e41f4b71Sopenharmony_ci 1034e41f4b71Sopenharmony_ciavPlayer.play().then(() => { 1035e41f4b71Sopenharmony_ci console.info('Succeeded in playing'); 1036e41f4b71Sopenharmony_ci}, (err: BusinessError) => { 1037e41f4b71Sopenharmony_ci console.error('Failed to play,error message is :' + err.message) 1038e41f4b71Sopenharmony_ci}) 1039e41f4b71Sopenharmony_ci``` 1040e41f4b71Sopenharmony_ci 1041e41f4b71Sopenharmony_ci### pause<sup>9+</sup> 1042e41f4b71Sopenharmony_ci 1043e41f4b71Sopenharmony_cipause(callback: AsyncCallback\<void>): void 1044e41f4b71Sopenharmony_ci 1045e41f4b71Sopenharmony_ci暂停播放音视频资源,只能在playing状态调用。使用callback方式异步获取返回值。 1046e41f4b71Sopenharmony_ci 1047e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1048e41f4b71Sopenharmony_ci 1049e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1050e41f4b71Sopenharmony_ci 1051e41f4b71Sopenharmony_ci**参数:** 1052e41f4b71Sopenharmony_ci 1053e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1054e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 1055e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 暂停播放的回调方法。 | 1056e41f4b71Sopenharmony_ci 1057e41f4b71Sopenharmony_ci**错误码:** 1058e41f4b71Sopenharmony_ci 1059e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1060e41f4b71Sopenharmony_ci 1061e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1062e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 1063e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 1064e41f4b71Sopenharmony_ci 1065e41f4b71Sopenharmony_ci**示例:** 1066e41f4b71Sopenharmony_ci 1067e41f4b71Sopenharmony_ci```ts 1068e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1069e41f4b71Sopenharmony_ci 1070e41f4b71Sopenharmony_ciavPlayer.pause((err: BusinessError) => { 1071e41f4b71Sopenharmony_ci if (err) { 1072e41f4b71Sopenharmony_ci console.error('Failed to pause,error message is :' + err.message) 1073e41f4b71Sopenharmony_ci } else { 1074e41f4b71Sopenharmony_ci console.info('Succeeded in pausing'); 1075e41f4b71Sopenharmony_ci } 1076e41f4b71Sopenharmony_ci}) 1077e41f4b71Sopenharmony_ci``` 1078e41f4b71Sopenharmony_ci 1079e41f4b71Sopenharmony_ci### pause<sup>9+</sup> 1080e41f4b71Sopenharmony_ci 1081e41f4b71Sopenharmony_cipause(): Promise\<void> 1082e41f4b71Sopenharmony_ci 1083e41f4b71Sopenharmony_ci暂停播放音视频资源,只能在playing状态调用。通过Promise获取返回值。 1084e41f4b71Sopenharmony_ci 1085e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1086e41f4b71Sopenharmony_ci 1087e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1088e41f4b71Sopenharmony_ci 1089e41f4b71Sopenharmony_ci**返回值:** 1090e41f4b71Sopenharmony_ci 1091e41f4b71Sopenharmony_ci| 类型 | 说明 | 1092e41f4b71Sopenharmony_ci| -------------- | ------------------------- | 1093e41f4b71Sopenharmony_ci| Promise\<void> | 暂停播放的Promise返回值。 | 1094e41f4b71Sopenharmony_ci 1095e41f4b71Sopenharmony_ci**错误码:** 1096e41f4b71Sopenharmony_ci 1097e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1098e41f4b71Sopenharmony_ci 1099e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1100e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 1101e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 1102e41f4b71Sopenharmony_ci 1103e41f4b71Sopenharmony_ci**示例:** 1104e41f4b71Sopenharmony_ci 1105e41f4b71Sopenharmony_ci```ts 1106e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1107e41f4b71Sopenharmony_ci 1108e41f4b71Sopenharmony_ciavPlayer.pause().then(() => { 1109e41f4b71Sopenharmony_ci console.info('Succeeded in pausing'); 1110e41f4b71Sopenharmony_ci}, (err: BusinessError) => { 1111e41f4b71Sopenharmony_ci console.error('Failed to pause,error message is :' + err.message) 1112e41f4b71Sopenharmony_ci}) 1113e41f4b71Sopenharmony_ci``` 1114e41f4b71Sopenharmony_ci 1115e41f4b71Sopenharmony_ci### stop<sup>9+</sup> 1116e41f4b71Sopenharmony_ci 1117e41f4b71Sopenharmony_cistop(callback: AsyncCallback\<void>): void 1118e41f4b71Sopenharmony_ci 1119e41f4b71Sopenharmony_ci停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。使用callback方式异步获取返回值。 1120e41f4b71Sopenharmony_ci 1121e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1122e41f4b71Sopenharmony_ci 1123e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1124e41f4b71Sopenharmony_ci 1125e41f4b71Sopenharmony_ci**参数:** 1126e41f4b71Sopenharmony_ci 1127e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1128e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 1129e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 停止播放的回调方法。 | 1130e41f4b71Sopenharmony_ci 1131e41f4b71Sopenharmony_ci**错误码:** 1132e41f4b71Sopenharmony_ci 1133e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1134e41f4b71Sopenharmony_ci 1135e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1136e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 1137e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 1138e41f4b71Sopenharmony_ci 1139e41f4b71Sopenharmony_ci**示例:** 1140e41f4b71Sopenharmony_ci 1141e41f4b71Sopenharmony_ci```ts 1142e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1143e41f4b71Sopenharmony_ci 1144e41f4b71Sopenharmony_ciavPlayer.stop((err: BusinessError) => { 1145e41f4b71Sopenharmony_ci if (err) { 1146e41f4b71Sopenharmony_ci console.error('Failed to stop,error message is :' + err.message) 1147e41f4b71Sopenharmony_ci } else { 1148e41f4b71Sopenharmony_ci console.info('Succeeded in stopping'); 1149e41f4b71Sopenharmony_ci } 1150e41f4b71Sopenharmony_ci}) 1151e41f4b71Sopenharmony_ci``` 1152e41f4b71Sopenharmony_ci 1153e41f4b71Sopenharmony_ci### stop<sup>9+</sup> 1154e41f4b71Sopenharmony_ci 1155e41f4b71Sopenharmony_cistop(): Promise\<void> 1156e41f4b71Sopenharmony_ci 1157e41f4b71Sopenharmony_ci停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。通过Promise获取返回值。 1158e41f4b71Sopenharmony_ci 1159e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1160e41f4b71Sopenharmony_ci 1161e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1162e41f4b71Sopenharmony_ci 1163e41f4b71Sopenharmony_ci**返回值:** 1164e41f4b71Sopenharmony_ci 1165e41f4b71Sopenharmony_ci| 类型 | 说明 | 1166e41f4b71Sopenharmony_ci| -------------- | ------------------------- | 1167e41f4b71Sopenharmony_ci| Promise\<void> | 停止播放的Promise返回值。 | 1168e41f4b71Sopenharmony_ci 1169e41f4b71Sopenharmony_ci**错误码:** 1170e41f4b71Sopenharmony_ci 1171e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1172e41f4b71Sopenharmony_ci 1173e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1174e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 1175e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 1176e41f4b71Sopenharmony_ci 1177e41f4b71Sopenharmony_ci**示例:** 1178e41f4b71Sopenharmony_ci 1179e41f4b71Sopenharmony_ci```ts 1180e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1181e41f4b71Sopenharmony_ci 1182e41f4b71Sopenharmony_ciavPlayer.stop().then(() => { 1183e41f4b71Sopenharmony_ci console.info('Succeeded in stopping'); 1184e41f4b71Sopenharmony_ci}, (err: BusinessError) => { 1185e41f4b71Sopenharmony_ci console.error('Failed to stop,error message is :' + err.message) 1186e41f4b71Sopenharmony_ci}) 1187e41f4b71Sopenharmony_ci``` 1188e41f4b71Sopenharmony_ci 1189e41f4b71Sopenharmony_ci### reset<sup>9+</sup> 1190e41f4b71Sopenharmony_ci 1191e41f4b71Sopenharmony_cireset(callback: AsyncCallback\<void>): void 1192e41f4b71Sopenharmony_ci 1193e41f4b71Sopenharmony_ci重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。使用callback方式异步获取返回值。 1194e41f4b71Sopenharmony_ci 1195e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1196e41f4b71Sopenharmony_ci 1197e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1198e41f4b71Sopenharmony_ci 1199e41f4b71Sopenharmony_ci**参数:** 1200e41f4b71Sopenharmony_ci 1201e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1202e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 1203e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 重置播放的回调方法。 | 1204e41f4b71Sopenharmony_ci 1205e41f4b71Sopenharmony_ci**错误码:** 1206e41f4b71Sopenharmony_ci 1207e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1208e41f4b71Sopenharmony_ci 1209e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1210e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 1211e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 1212e41f4b71Sopenharmony_ci 1213e41f4b71Sopenharmony_ci**示例:** 1214e41f4b71Sopenharmony_ci 1215e41f4b71Sopenharmony_ci```ts 1216e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1217e41f4b71Sopenharmony_ci 1218e41f4b71Sopenharmony_ciavPlayer.reset((err: BusinessError) => { 1219e41f4b71Sopenharmony_ci if (err) { 1220e41f4b71Sopenharmony_ci console.error('Failed to reset,error message is :' + err.message) 1221e41f4b71Sopenharmony_ci } else { 1222e41f4b71Sopenharmony_ci console.info('Succeeded in resetting'); 1223e41f4b71Sopenharmony_ci } 1224e41f4b71Sopenharmony_ci}) 1225e41f4b71Sopenharmony_ci``` 1226e41f4b71Sopenharmony_ci 1227e41f4b71Sopenharmony_ci### reset<sup>9+</sup> 1228e41f4b71Sopenharmony_ci 1229e41f4b71Sopenharmony_cireset(): Promise\<void> 1230e41f4b71Sopenharmony_ci 1231e41f4b71Sopenharmony_ci重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。通过Promise获取返回值。 1232e41f4b71Sopenharmony_ci 1233e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1234e41f4b71Sopenharmony_ci 1235e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1236e41f4b71Sopenharmony_ci 1237e41f4b71Sopenharmony_ci**返回值:** 1238e41f4b71Sopenharmony_ci 1239e41f4b71Sopenharmony_ci| 类型 | 说明 | 1240e41f4b71Sopenharmony_ci| -------------- | ------------------------- | 1241e41f4b71Sopenharmony_ci| Promise\<void> | 重置播放的Promise返回值。 | 1242e41f4b71Sopenharmony_ci 1243e41f4b71Sopenharmony_ci**错误码:** 1244e41f4b71Sopenharmony_ci 1245e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1246e41f4b71Sopenharmony_ci 1247e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1248e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 1249e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 1250e41f4b71Sopenharmony_ci 1251e41f4b71Sopenharmony_ci**示例:** 1252e41f4b71Sopenharmony_ci 1253e41f4b71Sopenharmony_ci```ts 1254e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1255e41f4b71Sopenharmony_ci 1256e41f4b71Sopenharmony_ciavPlayer.reset().then(() => { 1257e41f4b71Sopenharmony_ci console.info('Succeeded in resetting'); 1258e41f4b71Sopenharmony_ci}, (err: BusinessError) => { 1259e41f4b71Sopenharmony_ci console.error('Failed to reset,error message is :' + err.message) 1260e41f4b71Sopenharmony_ci}) 1261e41f4b71Sopenharmony_ci``` 1262e41f4b71Sopenharmony_ci 1263e41f4b71Sopenharmony_ci### release<sup>9+</sup> 1264e41f4b71Sopenharmony_ci 1265e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void 1266e41f4b71Sopenharmony_ci 1267e41f4b71Sopenharmony_ci销毁播放资源,除released状态外,均可以调用。使用callback方式异步获取返回值。 1268e41f4b71Sopenharmony_ci 1269e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1270e41f4b71Sopenharmony_ci 1271e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1272e41f4b71Sopenharmony_ci 1273e41f4b71Sopenharmony_ci**参数:** 1274e41f4b71Sopenharmony_ci 1275e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1276e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 1277e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 销毁播放的回调方法。 | 1278e41f4b71Sopenharmony_ci 1279e41f4b71Sopenharmony_ci**错误码:** 1280e41f4b71Sopenharmony_ci 1281e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1282e41f4b71Sopenharmony_ci 1283e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1284e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 1285e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 1286e41f4b71Sopenharmony_ci 1287e41f4b71Sopenharmony_ci**示例:** 1288e41f4b71Sopenharmony_ci 1289e41f4b71Sopenharmony_ci```ts 1290e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1291e41f4b71Sopenharmony_ci 1292e41f4b71Sopenharmony_ciavPlayer.release((err: BusinessError) => { 1293e41f4b71Sopenharmony_ci if (err) { 1294e41f4b71Sopenharmony_ci console.error('Failed to release,error message is :' + err.message) 1295e41f4b71Sopenharmony_ci } else { 1296e41f4b71Sopenharmony_ci console.info('Succeeded in releasing'); 1297e41f4b71Sopenharmony_ci } 1298e41f4b71Sopenharmony_ci}) 1299e41f4b71Sopenharmony_ci``` 1300e41f4b71Sopenharmony_ci 1301e41f4b71Sopenharmony_ci### release<sup>9+</sup> 1302e41f4b71Sopenharmony_ci 1303e41f4b71Sopenharmony_cirelease(): Promise\<void> 1304e41f4b71Sopenharmony_ci 1305e41f4b71Sopenharmony_ci销毁播放资源,除released状态,都可以调用。通过Promise获取返回值。 1306e41f4b71Sopenharmony_ci 1307e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1308e41f4b71Sopenharmony_ci 1309e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1310e41f4b71Sopenharmony_ci 1311e41f4b71Sopenharmony_ci**返回值:** 1312e41f4b71Sopenharmony_ci 1313e41f4b71Sopenharmony_ci| 类型 | 说明 | 1314e41f4b71Sopenharmony_ci| -------------- | ------------------------- | 1315e41f4b71Sopenharmony_ci| Promise\<void> | 销毁播放的Promise返回值。 | 1316e41f4b71Sopenharmony_ci 1317e41f4b71Sopenharmony_ci**错误码:** 1318e41f4b71Sopenharmony_ci 1319e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1320e41f4b71Sopenharmony_ci 1321e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1322e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 1323e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 1324e41f4b71Sopenharmony_ci 1325e41f4b71Sopenharmony_ci**示例:** 1326e41f4b71Sopenharmony_ci 1327e41f4b71Sopenharmony_ci```ts 1328e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1329e41f4b71Sopenharmony_ci 1330e41f4b71Sopenharmony_ciavPlayer.release().then(() => { 1331e41f4b71Sopenharmony_ci console.info('Succeeded in releasing'); 1332e41f4b71Sopenharmony_ci}, (err: BusinessError) => { 1333e41f4b71Sopenharmony_ci console.error('Failed to release,error message is :' + err.message) 1334e41f4b71Sopenharmony_ci}) 1335e41f4b71Sopenharmony_ci``` 1336e41f4b71Sopenharmony_ci 1337e41f4b71Sopenharmony_ci### getTrackDescription<sup>9+</sup> 1338e41f4b71Sopenharmony_ci 1339e41f4b71Sopenharmony_cigetTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void 1340e41f4b71Sopenharmony_ci 1341e41f4b71Sopenharmony_ci获取音视频轨道信息,可以在prepared/playing/paused状态调用。获取所有音视轨道信息,应在数据加载回调后调用。使用callback方式异步获取返回值。 1342e41f4b71Sopenharmony_ci 1343e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1344e41f4b71Sopenharmony_ci 1345e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1346e41f4b71Sopenharmony_ci 1347e41f4b71Sopenharmony_ci**参数:** 1348e41f4b71Sopenharmony_ci 1349e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1350e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- | 1351e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<[MediaDescription](#mediadescription8)>> | 是 | 回调函数,当获取音频轨道信息成功,err为undefined,data为获取到的MediaDescription数组;否则为错误对象。| 1352e41f4b71Sopenharmony_ci 1353e41f4b71Sopenharmony_ci**错误码:** 1354e41f4b71Sopenharmony_ci 1355e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1356e41f4b71Sopenharmony_ci 1357e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1358e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 1359e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 1360e41f4b71Sopenharmony_ci 1361e41f4b71Sopenharmony_ci**示例:** 1362e41f4b71Sopenharmony_ci 1363e41f4b71Sopenharmony_ci```ts 1364e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1365e41f4b71Sopenharmony_ci 1366e41f4b71Sopenharmony_ciavPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 1367e41f4b71Sopenharmony_ci if ((arrList) != null) { 1368e41f4b71Sopenharmony_ci console.info('Succeeded in doing getTrackDescription'); 1369e41f4b71Sopenharmony_ci } else { 1370e41f4b71Sopenharmony_ci console.error(`Failed to do getTrackDescription, error:${error}`); 1371e41f4b71Sopenharmony_ci } 1372e41f4b71Sopenharmony_ci}); 1373e41f4b71Sopenharmony_ci``` 1374e41f4b71Sopenharmony_ci 1375e41f4b71Sopenharmony_ci### getTrackDescription<sup>9+</sup> 1376e41f4b71Sopenharmony_ci 1377e41f4b71Sopenharmony_cigetTrackDescription(): Promise\<Array\<MediaDescription>> 1378e41f4b71Sopenharmony_ci 1379e41f4b71Sopenharmony_ci获取音视频轨道信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。 1380e41f4b71Sopenharmony_ci 1381e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1382e41f4b71Sopenharmony_ci 1383e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1384e41f4b71Sopenharmony_ci 1385e41f4b71Sopenharmony_ci**返回值:** 1386e41f4b71Sopenharmony_ci 1387e41f4b71Sopenharmony_ci| 类型 | 说明 | 1388e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ------------------------------------------------- | 1389e41f4b71Sopenharmony_ci| Promise<Array<[MediaDescription](#mediadescription8)>> | Promise对象,返回音视频轨道信息MediaDescription数组。 | 1390e41f4b71Sopenharmony_ci 1391e41f4b71Sopenharmony_ci**错误码:** 1392e41f4b71Sopenharmony_ci 1393e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1394e41f4b71Sopenharmony_ci 1395e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1396e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 1397e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 1398e41f4b71Sopenharmony_ci 1399e41f4b71Sopenharmony_ci**示例:** 1400e41f4b71Sopenharmony_ci 1401e41f4b71Sopenharmony_ci```ts 1402e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1403e41f4b71Sopenharmony_ci 1404e41f4b71Sopenharmony_ciavPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => { 1405e41f4b71Sopenharmony_ci console.info('Succeeded in getting TrackDescription'); 1406e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 1407e41f4b71Sopenharmony_ci console.error(`Failed to get TrackDescription, error:${error}`); 1408e41f4b71Sopenharmony_ci}); 1409e41f4b71Sopenharmony_ci``` 1410e41f4b71Sopenharmony_ci 1411e41f4b71Sopenharmony_ci### getSelectedTracks<sup>12+</sup> 1412e41f4b71Sopenharmony_ci 1413e41f4b71Sopenharmony_cigetSelectedTracks(): Promise\<Array\<number>> 1414e41f4b71Sopenharmony_ci 1415e41f4b71Sopenharmony_ci获取已选择的音视频轨道索引,可以在prepared/playing/paused状态调用。通过Promise获取返回值。 1416e41f4b71Sopenharmony_ci 1417e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1418e41f4b71Sopenharmony_ci 1419e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1420e41f4b71Sopenharmony_ci 1421e41f4b71Sopenharmony_ci**返回值:** 1422e41f4b71Sopenharmony_ci 1423e41f4b71Sopenharmony_ci| 类型 | 说明 | 1424e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ------------------------------------------------- | 1425e41f4b71Sopenharmony_ci| Promise<Array<[number]>> | Promise对象,返回已选择音视频轨道索引数组。 | 1426e41f4b71Sopenharmony_ci 1427e41f4b71Sopenharmony_ci**错误码:** 1428e41f4b71Sopenharmony_ci 1429e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1430e41f4b71Sopenharmony_ci 1431e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1432e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 1433e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. | 1434e41f4b71Sopenharmony_ci 1435e41f4b71Sopenharmony_ci**示例:** 1436e41f4b71Sopenharmony_ci 1437e41f4b71Sopenharmony_ci```ts 1438e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1439e41f4b71Sopenharmony_ci 1440e41f4b71Sopenharmony_ciavPlayer.getSelectedTracks().then((arrList: Array<number>) => { 1441e41f4b71Sopenharmony_ci console.info('Succeeded in getting SelectedTracks'); 1442e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 1443e41f4b71Sopenharmony_ci console.error(`Failed to get SelectedTracks, error:${error}`); 1444e41f4b71Sopenharmony_ci}); 1445e41f4b71Sopenharmony_ci``` 1446e41f4b71Sopenharmony_ci 1447e41f4b71Sopenharmony_ci### getPlaybackInfo<sup>12+</sup> 1448e41f4b71Sopenharmony_ci 1449e41f4b71Sopenharmony_cigetPlaybackInfo(): Promise\<PlaybackInfo> 1450e41f4b71Sopenharmony_ci 1451e41f4b71Sopenharmony_ci获取播放过程信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。 1452e41f4b71Sopenharmony_ci 1453e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1454e41f4b71Sopenharmony_ci 1455e41f4b71Sopenharmony_ci**返回值:** 1456e41f4b71Sopenharmony_ci 1457e41f4b71Sopenharmony_ci| 类型 | 说明 | 1458e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ------------------------------------------------- | 1459e41f4b71Sopenharmony_ci| Promise<[PlaybackInfo](#playbackinfo12)> | Promise对象,返回播放器信息PlaybackInfo。 | 1460e41f4b71Sopenharmony_ci 1461e41f4b71Sopenharmony_ci**示例:** 1462e41f4b71Sopenharmony_ci 1463e41f4b71Sopenharmony_ci```ts 1464e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1465e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 1466e41f4b71Sopenharmony_ci 1467e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer | undefined = undefined; 1468e41f4b71Sopenharmony_cilet playbackInfo: media.PlaybackInfo | undefined = undefined; 1469e41f4b71Sopenharmony_cimedia.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => { 1470e41f4b71Sopenharmony_ci if (player != null) { 1471e41f4b71Sopenharmony_ci avPlayer = player; 1472e41f4b71Sopenharmony_ci console.info(`Succeeded in creating AVPlayer`); 1473e41f4b71Sopenharmony_ci if (avPlayer) { 1474e41f4b71Sopenharmony_ci try { 1475e41f4b71Sopenharmony_ci playbackInfo = await avPlayer.getPlaybackInfo(); 1476e41f4b71Sopenharmony_ci console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值 1477e41f4b71Sopenharmony_ci } catch (error) { 1478e41f4b71Sopenharmony_ci console.error(`error = ${error}`); 1479e41f4b71Sopenharmony_ci } 1480e41f4b71Sopenharmony_ci } 1481e41f4b71Sopenharmony_ci } else { 1482e41f4b71Sopenharmony_ci console.error(`Failed to create AVPlayer, error message:${err.message}`); 1483e41f4b71Sopenharmony_ci } 1484e41f4b71Sopenharmony_ci}); 1485e41f4b71Sopenharmony_ci``` 1486e41f4b71Sopenharmony_ci 1487e41f4b71Sopenharmony_ci### selectTrack<sup>12+</sup> 1488e41f4b71Sopenharmony_ci 1489e41f4b71Sopenharmony_ciselectTrack(index: number, mode?: SwitchMode): Promise\<void> 1490e41f4b71Sopenharmony_ci 1491e41f4b71Sopenharmony_ci使用AVPlayer播放多音轨视频时选择指定音轨播放,通过Promise获取返回值。 1492e41f4b71Sopenharmony_ci 1493e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1494e41f4b71Sopenharmony_ci 1495e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1496e41f4b71Sopenharmony_ci 1497e41f4b71Sopenharmony_ci**参数:** 1498e41f4b71Sopenharmony_ci 1499e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1500e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 1501e41f4b71Sopenharmony_ci| index | number | 是 | 多音轨轨道索引,来自[MediaDescription](#mediadescription8)。 | 1502e41f4b71Sopenharmony_ci| mode | [SwitchMode](#switchmode12) | 否 | 切换视频轨模式,默认为SMOOTH模式,仅支持DASH协议,**仅在视频资源播放时设置**。 | 1503e41f4b71Sopenharmony_ci 1504e41f4b71Sopenharmony_ci**返回值:** 1505e41f4b71Sopenharmony_ci 1506e41f4b71Sopenharmony_ci| 类型 | 说明 | 1507e41f4b71Sopenharmony_ci| -------------- | ------------------------- | 1508e41f4b71Sopenharmony_ci| Promise\<void> | 选择曲目完成的Promise返回值。 | 1509e41f4b71Sopenharmony_ci 1510e41f4b71Sopenharmony_ci**错误码:** 1511e41f4b71Sopenharmony_ci 1512e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 1513e41f4b71Sopenharmony_ci 1514e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1515e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 1516e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. | 1517e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 1518e41f4b71Sopenharmony_ci 1519e41f4b71Sopenharmony_ci**示例:** 1520e41f4b71Sopenharmony_ci 1521e41f4b71Sopenharmony_ci```ts 1522e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1523e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 1524e41f4b71Sopenharmony_ci 1525e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer = await media.createAVPlayer(); 1526e41f4b71Sopenharmony_cilet audioTrackIndex: Object = 0; 1527e41f4b71Sopenharmony_ciavPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 1528e41f4b71Sopenharmony_ci if (arrList != null) { 1529e41f4b71Sopenharmony_ci for (let i = 0; i < arrList.length; i++) { 1530e41f4b71Sopenharmony_ci if (i != 0) { 1531e41f4b71Sopenharmony_ci // 获取音频轨道列表 1532e41f4b71Sopenharmony_ci audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX]; 1533e41f4b71Sopenharmony_ci } 1534e41f4b71Sopenharmony_ci } 1535e41f4b71Sopenharmony_ci } else { 1536e41f4b71Sopenharmony_ci console.error(`Failed to get TrackDescription, error:${error}`); 1537e41f4b71Sopenharmony_ci } 1538e41f4b71Sopenharmony_ci}); 1539e41f4b71Sopenharmony_ci 1540e41f4b71Sopenharmony_ci// 选择其中一个音频轨道 1541e41f4b71Sopenharmony_ciavPlayer.selectTrack(parseInt(audioTrackIndex.toString())); 1542e41f4b71Sopenharmony_ci``` 1543e41f4b71Sopenharmony_ci 1544e41f4b71Sopenharmony_ci### deselectTrack<sup>12+</sup> 1545e41f4b71Sopenharmony_ci 1546e41f4b71Sopenharmony_cideselectTrack(index: number): Promise\<void> 1547e41f4b71Sopenharmony_ci 1548e41f4b71Sopenharmony_ci使用AVPlayer播放多音轨视频时取消指定音轨播放,通过Promise获取返回值。 1549e41f4b71Sopenharmony_ci 1550e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1551e41f4b71Sopenharmony_ci 1552e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1553e41f4b71Sopenharmony_ci 1554e41f4b71Sopenharmony_ci**参数:** 1555e41f4b71Sopenharmony_ci 1556e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1557e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 1558e41f4b71Sopenharmony_ci| index | number | 是 | 多音轨轨道索引,来自[MediaDescription](#mediadescription8)。 | 1559e41f4b71Sopenharmony_ci 1560e41f4b71Sopenharmony_ci**返回值:** 1561e41f4b71Sopenharmony_ci 1562e41f4b71Sopenharmony_ci| 类型 | 说明 | 1563e41f4b71Sopenharmony_ci| -------------- | ------------------------- | 1564e41f4b71Sopenharmony_ci| Promise\<void> | 取消选择曲目完成的Promise返回值。 | 1565e41f4b71Sopenharmony_ci 1566e41f4b71Sopenharmony_ci**错误码:** 1567e41f4b71Sopenharmony_ci 1568e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 1569e41f4b71Sopenharmony_ci 1570e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1571e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 1572e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. | 1573e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 1574e41f4b71Sopenharmony_ci 1575e41f4b71Sopenharmony_ci**示例:** 1576e41f4b71Sopenharmony_ci 1577e41f4b71Sopenharmony_ci```ts 1578e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1579e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 1580e41f4b71Sopenharmony_ci 1581e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer = await media.createAVPlayer(); 1582e41f4b71Sopenharmony_cilet audioTrackIndex: Object = 0; 1583e41f4b71Sopenharmony_ciavPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 1584e41f4b71Sopenharmony_ci if (arrList != null) { 1585e41f4b71Sopenharmony_ci for (let i = 0; i < arrList.length; i++) { 1586e41f4b71Sopenharmony_ci if (i != 0) { 1587e41f4b71Sopenharmony_ci // 获取音频轨道列表 1588e41f4b71Sopenharmony_ci audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX]; 1589e41f4b71Sopenharmony_ci } 1590e41f4b71Sopenharmony_ci } 1591e41f4b71Sopenharmony_ci } else { 1592e41f4b71Sopenharmony_ci console.error(`Failed to get TrackDescription, error:${error}`); 1593e41f4b71Sopenharmony_ci } 1594e41f4b71Sopenharmony_ci}); 1595e41f4b71Sopenharmony_ci 1596e41f4b71Sopenharmony_ci// 选择其中一个音频轨道 1597e41f4b71Sopenharmony_ciavPlayer.selectTrack(parseInt(audioTrackIndex.toString())); 1598e41f4b71Sopenharmony_ci// 取消选择上次选中的音频轨道,并恢复到默认音频轨道。 1599e41f4b71Sopenharmony_ciavPlayer.deselectTrack(parseInt(audioTrackIndex.toString())); 1600e41f4b71Sopenharmony_ci``` 1601e41f4b71Sopenharmony_ci 1602e41f4b71Sopenharmony_ci### setDecryptionConfig<sup>11+</sup> 1603e41f4b71Sopenharmony_ci 1604e41f4b71Sopenharmony_cisetDecryptionConfig(mediaKeySession: drm.MediaKeySession, secureVideoPath: boolean): void 1605e41f4b71Sopenharmony_ci 1606e41f4b71Sopenharmony_ci设置解密配置。当收到[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)时,需根据事件上报的信息创建相关配置并设置解密配置,否则无法播放。 1607e41f4b71Sopenharmony_ci 1608e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1609e41f4b71Sopenharmony_ci 1610e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1611e41f4b71Sopenharmony_ci 1612e41f4b71Sopenharmony_ci**参数:** 1613e41f4b71Sopenharmony_ci 1614e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1615e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- | 1616e41f4b71Sopenharmony_ci| mediaKeySession | [drm.MediaKeySession](../apis-drm-kit/js-apis-drm.md#mediakeysession) | 是 | 解密会话 | 1617e41f4b71Sopenharmony_ci| secureVideoPath | boolean | 是 | 安全视频通路,true表示选择安全视频通路,false表示选择非安全视频通路 | 1618e41f4b71Sopenharmony_ci 1619e41f4b71Sopenharmony_ci**错误码:** 1620e41f4b71Sopenharmony_ci 1621e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1622e41f4b71Sopenharmony_ci 1623e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1624e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 1625e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 1626e41f4b71Sopenharmony_ci 1627e41f4b71Sopenharmony_ci**示例:** 1628e41f4b71Sopenharmony_ci 1629e41f4b71Sopenharmony_ci关于drm模块的示例具体可见[js-apis-drm.md](../apis-drm-kit/js-apis-drm.md)。 1630e41f4b71Sopenharmony_ci```ts 1631e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1632e41f4b71Sopenharmony_ci 1633e41f4b71Sopenharmony_ci// 创建MediaKeySystem系统 1634e41f4b71Sopenharmony_cilet keySystem:drm.MediaKeySystem = drm.createMediaKeySystem('com.clearplay.drm'); 1635e41f4b71Sopenharmony_ci// 创建MediaKeySession解密会话 1636e41f4b71Sopenharmony_cilet keySession:drm.MediaKeySession = keySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO); 1637e41f4b71Sopenharmony_ci// 生成许可证请求、设置许可证响应等 1638e41f4b71Sopenharmony_ci// 安全视频通路标志 1639e41f4b71Sopenharmony_cilet secureVideoPath:boolean = false; 1640e41f4b71Sopenharmony_ci// 设置解密配置 1641e41f4b71Sopenharmony_ciavPlayer.setDecryptionConfig(keySession, secureVideoPath); 1642e41f4b71Sopenharmony_ci``` 1643e41f4b71Sopenharmony_ci 1644e41f4b71Sopenharmony_ci### getMediaKeySystemInfos<sup>11+</sup> 1645e41f4b71Sopenharmony_ci 1646e41f4b71Sopenharmony_cigetMediaKeySystemInfos(): Array\<drm.MediaKeySystemInfo> 1647e41f4b71Sopenharmony_ci 1648e41f4b71Sopenharmony_ci获取当前播放的媒体资源的MediaKeySystemInfo。需要在[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)触发成功后才能调用。 1649e41f4b71Sopenharmony_ci 1650e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1651e41f4b71Sopenharmony_ci 1652e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1653e41f4b71Sopenharmony_ci 1654e41f4b71Sopenharmony_ci**返回值:** 1655e41f4b71Sopenharmony_ci 1656e41f4b71Sopenharmony_ci| 类型 | 说明 | 1657e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ------------------------------------------------- | 1658e41f4b71Sopenharmony_ci| Array<[drm.MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)> | MediaKeySystemInfo数组,MediaKeySystemInfo具有uuid和pssh两个属性。 | 1659e41f4b71Sopenharmony_ci 1660e41f4b71Sopenharmony_ci**示例:** 1661e41f4b71Sopenharmony_ci 1662e41f4b71Sopenharmony_ci```ts 1663e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1664e41f4b71Sopenharmony_ci 1665e41f4b71Sopenharmony_ciconst infos = avPlayer.getMediaKeySystemInfos(); 1666e41f4b71Sopenharmony_ciconsole.info('GetMediaKeySystemInfos count: ' + infos.length); 1667e41f4b71Sopenharmony_cifor (let i = 0; i < infos.length; i++) { 1668e41f4b71Sopenharmony_ci console.info('GetMediaKeySystemInfos uuid: ' + infos[i]["uuid"]); 1669e41f4b71Sopenharmony_ci console.info('GetMediaKeySystemInfos pssh: ' + infos[i]["pssh"]); 1670e41f4b71Sopenharmony_ci} 1671e41f4b71Sopenharmony_ci``` 1672e41f4b71Sopenharmony_ci 1673e41f4b71Sopenharmony_ci### seek<sup>9+</sup> 1674e41f4b71Sopenharmony_ci 1675e41f4b71Sopenharmony_ciseek(timeMs: number, mode?:SeekMode): void 1676e41f4b71Sopenharmony_ci 1677e41f4b71Sopenharmony_ci跳转到指定播放位置,只能在prepared/playing/paused/completed状态调用,可以通过[seekDone事件](#onseekdone9)确认是否生效。 1678e41f4b71Sopenharmony_ci注:直播场景不支持seek。 1679e41f4b71Sopenharmony_ci 1680e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1681e41f4b71Sopenharmony_ci 1682e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1683e41f4b71Sopenharmony_ci 1684e41f4b71Sopenharmony_ci**参数:** 1685e41f4b71Sopenharmony_ci 1686e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1687e41f4b71Sopenharmony_ci| ------ | ---------------------- | ---- | ------------------------------------------------------------ | 1688e41f4b71Sopenharmony_ci| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, [duration](#属性)]。 | 1689e41f4b71Sopenharmony_ci| mode | [SeekMode](#seekmode8) | 否 | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式,**仅在视频资源播放时设置**。 | 1690e41f4b71Sopenharmony_ci 1691e41f4b71Sopenharmony_ci**示例:** 1692e41f4b71Sopenharmony_ci 1693e41f4b71Sopenharmony_ci```ts 1694e41f4b71Sopenharmony_cilet seekTime: number = 1000 1695e41f4b71Sopenharmony_ciavPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC) 1696e41f4b71Sopenharmony_ci``` 1697e41f4b71Sopenharmony_ci 1698e41f4b71Sopenharmony_ci### on('seekDone')<sup>9+</sup> 1699e41f4b71Sopenharmony_ci 1700e41f4b71Sopenharmony_cion(type: 'seekDone', callback: Callback\<number>): void 1701e41f4b71Sopenharmony_ci 1702e41f4b71Sopenharmony_ci监听seek生效的事件。 1703e41f4b71Sopenharmony_ci 1704e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1705e41f4b71Sopenharmony_ci 1706e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1707e41f4b71Sopenharmony_ci 1708e41f4b71Sopenharmony_ci**参数:** 1709e41f4b71Sopenharmony_ci 1710e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1711e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 1712e41f4b71Sopenharmony_ci| type | string | 是 | seek生效的事件回调类型,支持的事件:'seekDone',每次调用seek后都会回调此事件。 | 1713e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是 | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。 | 1714e41f4b71Sopenharmony_ci 1715e41f4b71Sopenharmony_ci**示例:** 1716e41f4b71Sopenharmony_ci 1717e41f4b71Sopenharmony_ci```ts 1718e41f4b71Sopenharmony_ciavPlayer.on('seekDone', (seekDoneTime:number) => { 1719e41f4b71Sopenharmony_ci console.info('seekDone called,and seek time is:' + seekDoneTime) 1720e41f4b71Sopenharmony_ci}) 1721e41f4b71Sopenharmony_ci``` 1722e41f4b71Sopenharmony_ci 1723e41f4b71Sopenharmony_ci### off('seekDone')<sup>9+</sup> 1724e41f4b71Sopenharmony_ci 1725e41f4b71Sopenharmony_cioff(type: 'seekDone', callback?: Callback\<number>): void 1726e41f4b71Sopenharmony_ci 1727e41f4b71Sopenharmony_ci取消监听seek生效的事件。 1728e41f4b71Sopenharmony_ci 1729e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1730e41f4b71Sopenharmony_ci 1731e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1732e41f4b71Sopenharmony_ci 1733e41f4b71Sopenharmony_ci**参数:** 1734e41f4b71Sopenharmony_ci 1735e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1736e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------------------------------------------- | 1737e41f4b71Sopenharmony_ci| type | string | 是 | seek生效的事件回调类型,取消注册的事件:'seekDone'。 | 1738e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否 | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。<br/>从API version 12开始支持此参数。 | 1739e41f4b71Sopenharmony_ci 1740e41f4b71Sopenharmony_ci**示例:** 1741e41f4b71Sopenharmony_ci 1742e41f4b71Sopenharmony_ci```ts 1743e41f4b71Sopenharmony_ciavPlayer.off('seekDone') 1744e41f4b71Sopenharmony_ci``` 1745e41f4b71Sopenharmony_ci 1746e41f4b71Sopenharmony_ci### setSpeed<sup>9+</sup> 1747e41f4b71Sopenharmony_ci 1748e41f4b71Sopenharmony_cisetSpeed(speed: PlaybackSpeed): void 1749e41f4b71Sopenharmony_ci 1750e41f4b71Sopenharmony_ci设置倍速模式,只能在prepared/playing/paused/completed状态调用,可以通过[speedDone事件](#onspeeddone9)确认是否生效。 1751e41f4b71Sopenharmony_ci注:直播场景不支持setSpeed。 1752e41f4b71Sopenharmony_ci 1753e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1754e41f4b71Sopenharmony_ci 1755e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1756e41f4b71Sopenharmony_ci 1757e41f4b71Sopenharmony_ci**参数:** 1758e41f4b71Sopenharmony_ci 1759e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1760e41f4b71Sopenharmony_ci| ------ | -------------------------------- | ---- | ------------------ | 1761e41f4b71Sopenharmony_ci| speed | [PlaybackSpeed](#playbackspeed8) | 是 | 指定播放倍速模式。 | 1762e41f4b71Sopenharmony_ci 1763e41f4b71Sopenharmony_ci**示例:** 1764e41f4b71Sopenharmony_ci 1765e41f4b71Sopenharmony_ci```ts 1766e41f4b71Sopenharmony_ciavPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X) 1767e41f4b71Sopenharmony_ci``` 1768e41f4b71Sopenharmony_ci 1769e41f4b71Sopenharmony_ci### on('speedDone')<sup>9+</sup> 1770e41f4b71Sopenharmony_ci 1771e41f4b71Sopenharmony_cion(type: 'speedDone', callback: Callback\<number>): void 1772e41f4b71Sopenharmony_ci 1773e41f4b71Sopenharmony_ci监听setSpeed生效的事件 1774e41f4b71Sopenharmony_ci 1775e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1776e41f4b71Sopenharmony_ci 1777e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1778e41f4b71Sopenharmony_ci 1779e41f4b71Sopenharmony_ci**参数:** 1780e41f4b71Sopenharmony_ci 1781e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1782e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 1783e41f4b71Sopenharmony_ci| type | string | 是 | setSpeed生效的事件回调类型,支持的事件:'speedDone',每次调用setSpeed后都会回调此事件。 | 1784e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是 | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。 | 1785e41f4b71Sopenharmony_ci 1786e41f4b71Sopenharmony_ci**示例:** 1787e41f4b71Sopenharmony_ci 1788e41f4b71Sopenharmony_ci```ts 1789e41f4b71Sopenharmony_ciavPlayer.on('speedDone', (speed:number) => { 1790e41f4b71Sopenharmony_ci console.info('speedDone called,and speed value is:' + speed) 1791e41f4b71Sopenharmony_ci}) 1792e41f4b71Sopenharmony_ci``` 1793e41f4b71Sopenharmony_ci 1794e41f4b71Sopenharmony_ci### off('speedDone')<sup>9+</sup> 1795e41f4b71Sopenharmony_ci 1796e41f4b71Sopenharmony_cioff(type: 'speedDone', callback?: Callback\<number>): void 1797e41f4b71Sopenharmony_ci 1798e41f4b71Sopenharmony_ci取消监听setSpeed生效的事件。 1799e41f4b71Sopenharmony_ci 1800e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1801e41f4b71Sopenharmony_ci 1802e41f4b71Sopenharmony_ci**参数:** 1803e41f4b71Sopenharmony_ci 1804e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1805e41f4b71Sopenharmony_ci| ------ | ------ | ---- | --------------------------------------------------------- | 1806e41f4b71Sopenharmony_ci| type | string | 是 | setSpeed生效的事件回调类型,取消注册的事件:'speedDone'。 | 1807e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否 | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。<br/>从API version 12开始支持此参数。 | 1808e41f4b71Sopenharmony_ci 1809e41f4b71Sopenharmony_ci**示例:** 1810e41f4b71Sopenharmony_ci 1811e41f4b71Sopenharmony_ci```ts 1812e41f4b71Sopenharmony_ciavPlayer.off('speedDone') 1813e41f4b71Sopenharmony_ci``` 1814e41f4b71Sopenharmony_ci 1815e41f4b71Sopenharmony_ci### setBitrate<sup>9+</sup> 1816e41f4b71Sopenharmony_ci 1817e41f4b71Sopenharmony_cisetBitrate(bitrate: number): void 1818e41f4b71Sopenharmony_ci 1819e41f4b71Sopenharmony_ci选择要播放的指定比特率,仅对**HLS协议网络流**有效,默认情况下,播放器会根据网络连接速度选择合适的比特率,只能在prepared/playing/paused/completed状态调用,可以通过[bitrateDone](#onbitratedone9)事件确认是否生效。 1820e41f4b71Sopenharmony_ci 1821e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1822e41f4b71Sopenharmony_ci 1823e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1824e41f4b71Sopenharmony_ci 1825e41f4b71Sopenharmony_ci**参数:** 1826e41f4b71Sopenharmony_ci 1827e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1828e41f4b71Sopenharmony_ci| ------- | ------ | ---- | ------------------------------------------------------------ | 1829e41f4b71Sopenharmony_ci| bitrate | number | 是 | 指定比特率,可以通过[availableBitrates](#onavailablebitrates9)事件获得当前HLS协议流可用的比特率,如果用户指定的比特率不在此列表中,则播放器将从可用比特率列表中选择最小和最接近的比特率。如果通过availableBitrates事件获得的比特率列表长度为0,则不支持指定比特率,也不会产生bitrateDone回调。 | 1830e41f4b71Sopenharmony_ci 1831e41f4b71Sopenharmony_ci**示例:** 1832e41f4b71Sopenharmony_ci 1833e41f4b71Sopenharmony_ci```ts 1834e41f4b71Sopenharmony_cilet bitrate: number = 96000 1835e41f4b71Sopenharmony_ciavPlayer.setBitrate(bitrate) 1836e41f4b71Sopenharmony_ci``` 1837e41f4b71Sopenharmony_ci 1838e41f4b71Sopenharmony_ci### on('bitrateDone')<sup>9+</sup> 1839e41f4b71Sopenharmony_ci 1840e41f4b71Sopenharmony_cion(type: 'bitrateDone', callback: Callback\<number>): void 1841e41f4b71Sopenharmony_ci 1842e41f4b71Sopenharmony_ci监听setBitrate生效的事件。 1843e41f4b71Sopenharmony_ci 1844e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1845e41f4b71Sopenharmony_ci 1846e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1847e41f4b71Sopenharmony_ci 1848e41f4b71Sopenharmony_ci**参数:** 1849e41f4b71Sopenharmony_ci 1850e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1851e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 1852e41f4b71Sopenharmony_ci| type | string | 是 | setBitrate生效的事件回调类型,支持的事件:'bitrateDone',每次调用setBitrate后都会回调此事件。 | 1853e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是 | setBitrate生效的事件回调方法,上报生效的比特率。 | 1854e41f4b71Sopenharmony_ci 1855e41f4b71Sopenharmony_ci**示例:** 1856e41f4b71Sopenharmony_ci 1857e41f4b71Sopenharmony_ci```ts 1858e41f4b71Sopenharmony_ciavPlayer.on('bitrateDone', (bitrate:number) => { 1859e41f4b71Sopenharmony_ci console.info('bitrateDone called,and bitrate value is:' + bitrate) 1860e41f4b71Sopenharmony_ci}) 1861e41f4b71Sopenharmony_ci``` 1862e41f4b71Sopenharmony_ci 1863e41f4b71Sopenharmony_ci### off('bitrateDone')<sup>9+</sup> 1864e41f4b71Sopenharmony_ci 1865e41f4b71Sopenharmony_cioff(type: 'bitrateDone', callback?: Callback\<number>): void 1866e41f4b71Sopenharmony_ci 1867e41f4b71Sopenharmony_ci取消监听setBitrate生效的事件。 1868e41f4b71Sopenharmony_ci 1869e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1870e41f4b71Sopenharmony_ci 1871e41f4b71Sopenharmony_ci**参数:** 1872e41f4b71Sopenharmony_ci 1873e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1874e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 1875e41f4b71Sopenharmony_ci| type | string | 是 | setBitrate生效的事件回调类型,取消注册的事件:'bitrateDone'。 | 1876e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否 | setBitrate生效的事件回调方法,上报生效的比特率。<br/>从API version 12开始支持此参数。 | 1877e41f4b71Sopenharmony_ci 1878e41f4b71Sopenharmony_ci**示例:** 1879e41f4b71Sopenharmony_ci 1880e41f4b71Sopenharmony_ci```ts 1881e41f4b71Sopenharmony_ciavPlayer.off('bitrateDone') 1882e41f4b71Sopenharmony_ci``` 1883e41f4b71Sopenharmony_ci 1884e41f4b71Sopenharmony_ci### on('availableBitrates')<sup>9+</sup> 1885e41f4b71Sopenharmony_ci 1886e41f4b71Sopenharmony_cion(type: 'availableBitrates', callback: Callback\<Array\<number>>): void 1887e41f4b71Sopenharmony_ci 1888e41f4b71Sopenharmony_ci监听HLS协议流可用的比特率列表,只会在切换prepared状态后上报。 1889e41f4b71Sopenharmony_ci 1890e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1891e41f4b71Sopenharmony_ci 1892e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1893e41f4b71Sopenharmony_ci 1894e41f4b71Sopenharmony_ci**参数:** 1895e41f4b71Sopenharmony_ci 1896e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1897e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 1898e41f4b71Sopenharmony_ci| type | string | 是 | HLS协议可用比特率上报事件回调类型,支持的事件:'availableBitrates',只会在prepared之后上报一次。 | 1899e41f4b71Sopenharmony_ci| callback | Callback\<Array\<number>> | 是 | HLS协议可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。 | 1900e41f4b71Sopenharmony_ci 1901e41f4b71Sopenharmony_ci**示例:** 1902e41f4b71Sopenharmony_ci 1903e41f4b71Sopenharmony_ci```ts 1904e41f4b71Sopenharmony_ciavPlayer.on('availableBitrates', (bitrates: Array<number>) => { 1905e41f4b71Sopenharmony_ci console.info('availableBitrates called,and availableBitrates length is:' + bitrates.length) 1906e41f4b71Sopenharmony_ci}) 1907e41f4b71Sopenharmony_ci``` 1908e41f4b71Sopenharmony_ci 1909e41f4b71Sopenharmony_ci### off('availableBitrates')<sup>9+</sup> 1910e41f4b71Sopenharmony_ci 1911e41f4b71Sopenharmony_cioff(type: 'availableBitrates', callback?: Callback\<Array\<number>>): void 1912e41f4b71Sopenharmony_ci 1913e41f4b71Sopenharmony_ci取消监听HLS协议流可用的比特率列表,调用[prepare](#prepare9)后,上报此事件。 1914e41f4b71Sopenharmony_ci 1915e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1916e41f4b71Sopenharmony_ci 1917e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1918e41f4b71Sopenharmony_ci 1919e41f4b71Sopenharmony_ci**参数:** 1920e41f4b71Sopenharmony_ci 1921e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1922e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 1923e41f4b71Sopenharmony_ci| type | string | 是 | HLS协议可用比特率上报事件回调类型,取消注册的事件:'availableBitrates'。 | 1924e41f4b71Sopenharmony_ci| callback | Callback\<Array\<number>> | 否 | HLS协议可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。<br/>从API version 12开始支持此参数。 | 1925e41f4b71Sopenharmony_ci 1926e41f4b71Sopenharmony_ci**示例:** 1927e41f4b71Sopenharmony_ci 1928e41f4b71Sopenharmony_ci```ts 1929e41f4b71Sopenharmony_ciavPlayer.off('availableBitrates') 1930e41f4b71Sopenharmony_ci``` 1931e41f4b71Sopenharmony_ci 1932e41f4b71Sopenharmony_ci 1933e41f4b71Sopenharmony_ci### on('mediaKeySystemInfoUpdate')<sup>11+</sup> 1934e41f4b71Sopenharmony_ci 1935e41f4b71Sopenharmony_cion(type: 'mediaKeySystemInfoUpdate', callback: Callback\<Array\<drm.MediaKeySystemInfo>>): void 1936e41f4b71Sopenharmony_ci 1937e41f4b71Sopenharmony_ci监听mediaKeySystemInfoUpdate事件。 1938e41f4b71Sopenharmony_ci 1939e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1940e41f4b71Sopenharmony_ci 1941e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1942e41f4b71Sopenharmony_ci 1943e41f4b71Sopenharmony_ci**参数:** 1944e41f4b71Sopenharmony_ci 1945e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1946e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 1947e41f4b71Sopenharmony_ci| type | string | 是 | 版权保护信息更新上报事件回调类型,支持的事件:'mediaKeySystemInfoUpdate',当播放内容的版权保护信息更新时上报事件。 | 1948e41f4b71Sopenharmony_ci| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)>> | 是 | 版权保护信息更新上报事件回调方法,上报MediaKeySystemInfo数组。 | 1949e41f4b71Sopenharmony_ci 1950e41f4b71Sopenharmony_ci**示例:** 1951e41f4b71Sopenharmony_ci 1952e41f4b71Sopenharmony_ci```ts 1953e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit'; 1954e41f4b71Sopenharmony_ci 1955e41f4b71Sopenharmony_ciavPlayer.on('mediaKeySystemInfoUpdate', (mediaKeySystemInfo: Array<drm.MediaKeySystemInfo>) => { 1956e41f4b71Sopenharmony_ci for (let i = 0; i < mediaKeySystemInfo.length; i++) { 1957e41f4b71Sopenharmony_ci console.info('mediaKeySystemInfoUpdate happened uuid: ' + mediaKeySystemInfo[i]["uuid"]); 1958e41f4b71Sopenharmony_ci console.info('mediaKeySystemInfoUpdate happened pssh: ' + mediaKeySystemInfo[i]["pssh"]); 1959e41f4b71Sopenharmony_ci } 1960e41f4b71Sopenharmony_ci}) 1961e41f4b71Sopenharmony_ci``` 1962e41f4b71Sopenharmony_ci 1963e41f4b71Sopenharmony_ci### off('mediaKeySystemInfoUpdate')<sup>11+</sup> 1964e41f4b71Sopenharmony_ci 1965e41f4b71Sopenharmony_cioff(type: 'mediaKeySystemInfoUpdate', callback?: Callback\<Array\<drm.MediaKeySystemInfo>>): void; 1966e41f4b71Sopenharmony_ci 1967e41f4b71Sopenharmony_ci取消监听mediaKeySystemInfoUpdate事件。 1968e41f4b71Sopenharmony_ci 1969e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1970e41f4b71Sopenharmony_ci 1971e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1972e41f4b71Sopenharmony_ci 1973e41f4b71Sopenharmony_ci**参数:** 1974e41f4b71Sopenharmony_ci 1975e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1976e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 1977e41f4b71Sopenharmony_ci| type | string | 是 | 版权保护信息更新上报事件回调类型,取消注册的事件:'mediaKeySystemInfoUpdate'。 | 1978e41f4b71Sopenharmony_ci| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)>> | 否 | 版权保护信息更新上报事件回调方法,上报版权保护信息数组。如填写该参数,则仅取消注册此回调方法,否则取消注册mediaKeySystemInfoUpdate事件的所有回调方法。 | 1979e41f4b71Sopenharmony_ci 1980e41f4b71Sopenharmony_ci**示例:** 1981e41f4b71Sopenharmony_ci 1982e41f4b71Sopenharmony_ci```ts 1983e41f4b71Sopenharmony_ciavPlayer.off('mediaKeySystemInfoUpdate') 1984e41f4b71Sopenharmony_ci``` 1985e41f4b71Sopenharmony_ci 1986e41f4b71Sopenharmony_ci### setVolume<sup>9+</sup> 1987e41f4b71Sopenharmony_ci 1988e41f4b71Sopenharmony_cisetVolume(volume: number): void 1989e41f4b71Sopenharmony_ci 1990e41f4b71Sopenharmony_ci设置媒体播放音量,只能在prepared/playing/paused/completed状态调用,可以通过[volumeChange事件](#onvolumechange9)确认是否生效。 1991e41f4b71Sopenharmony_ci 1992e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1993e41f4b71Sopenharmony_ci 1994e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 1995e41f4b71Sopenharmony_ci 1996e41f4b71Sopenharmony_ci**参数:** 1997e41f4b71Sopenharmony_ci 1998e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1999e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2000e41f4b71Sopenharmony_ci| volume | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 2001e41f4b71Sopenharmony_ci 2002e41f4b71Sopenharmony_ci**示例:** 2003e41f4b71Sopenharmony_ci 2004e41f4b71Sopenharmony_ci```ts 2005e41f4b71Sopenharmony_cilet volume: number = 1.0 2006e41f4b71Sopenharmony_ciavPlayer.setVolume(volume) 2007e41f4b71Sopenharmony_ci``` 2008e41f4b71Sopenharmony_ci 2009e41f4b71Sopenharmony_ci### on('volumeChange')<sup>9+</sup> 2010e41f4b71Sopenharmony_ci 2011e41f4b71Sopenharmony_cion(type: 'volumeChange', callback: Callback\<number>): void 2012e41f4b71Sopenharmony_ci 2013e41f4b71Sopenharmony_ci监听setVolume生效的事件。 2014e41f4b71Sopenharmony_ci 2015e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2016e41f4b71Sopenharmony_ci 2017e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2018e41f4b71Sopenharmony_ci 2019e41f4b71Sopenharmony_ci**参数:** 2020e41f4b71Sopenharmony_ci 2021e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2022e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2023e41f4b71Sopenharmony_ci| type | string | 是 | setVolume生效的事件回调类型,支持的事件:'volumeChange',每次调用setVolume后都会回调此事件。 | 2024e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是 | setVolume生效的事件回调方法,上报生效的媒体音量。 | 2025e41f4b71Sopenharmony_ci 2026e41f4b71Sopenharmony_ci**示例:** 2027e41f4b71Sopenharmony_ci 2028e41f4b71Sopenharmony_ci```ts 2029e41f4b71Sopenharmony_ciavPlayer.on('volumeChange', (vol: number) => { 2030e41f4b71Sopenharmony_ci console.info('volumeChange called,and new volume is :' + vol) 2031e41f4b71Sopenharmony_ci}) 2032e41f4b71Sopenharmony_ci``` 2033e41f4b71Sopenharmony_ci 2034e41f4b71Sopenharmony_ci### off('volumeChange')<sup>9+</sup> 2035e41f4b71Sopenharmony_ci 2036e41f4b71Sopenharmony_cioff(type: 'volumeChange', callback?: Callback\<number>): void 2037e41f4b71Sopenharmony_ci 2038e41f4b71Sopenharmony_ci取消监听setVolume生效的事件。 2039e41f4b71Sopenharmony_ci 2040e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2041e41f4b71Sopenharmony_ci 2042e41f4b71Sopenharmony_ci**参数:** 2043e41f4b71Sopenharmony_ci 2044e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2045e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2046e41f4b71Sopenharmony_ci| type | string | 是 | setVolume生效的事件回调类型,取消注册的事件:'volumeChange'。 | 2047e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否 | setVolume生效的事件回调方法,上报生效的媒体音量。<br/>从API version 12开始支持此参数。 | 2048e41f4b71Sopenharmony_ci 2049e41f4b71Sopenharmony_ci**示例:** 2050e41f4b71Sopenharmony_ci 2051e41f4b71Sopenharmony_ci```ts 2052e41f4b71Sopenharmony_ciavPlayer.off('volumeChange') 2053e41f4b71Sopenharmony_ci``` 2054e41f4b71Sopenharmony_ci 2055e41f4b71Sopenharmony_ci### on('endOfStream')<sup>9+</sup> 2056e41f4b71Sopenharmony_ci 2057e41f4b71Sopenharmony_cion(type: 'endOfStream', callback: Callback\<void>): void 2058e41f4b71Sopenharmony_ci 2059e41f4b71Sopenharmony_ci监听资源播放至结尾的事件;如果用户设置[loop](#属性)=true,播放会跳转至开头重播;如果用户没有设置loop,会通过[stateChange](#onstatechange9)上报completed状态。 2060e41f4b71Sopenharmony_ci 2061e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2062e41f4b71Sopenharmony_ci 2063e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2064e41f4b71Sopenharmony_ci 2065e41f4b71Sopenharmony_ci**参数:** 2066e41f4b71Sopenharmony_ci 2067e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2068e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2069e41f4b71Sopenharmony_ci| type | string | 是 | 资源播放至结尾的事件回调类型,支持的事件:'endOfStream',当播放至结尾时会上报此事件。 | 2070e41f4b71Sopenharmony_ci| callback | Callback\<void> | 是 | 资源播放至结尾的事件回调方法。 | 2071e41f4b71Sopenharmony_ci 2072e41f4b71Sopenharmony_ci**示例:** 2073e41f4b71Sopenharmony_ci 2074e41f4b71Sopenharmony_ci```ts 2075e41f4b71Sopenharmony_ciavPlayer.on('endOfStream', () => { 2076e41f4b71Sopenharmony_ci console.info('endOfStream called') 2077e41f4b71Sopenharmony_ci}) 2078e41f4b71Sopenharmony_ci``` 2079e41f4b71Sopenharmony_ci 2080e41f4b71Sopenharmony_ci### off('endOfStream')<sup>9+</sup> 2081e41f4b71Sopenharmony_ci 2082e41f4b71Sopenharmony_cioff(type: 'endOfStream', callback?: Callback\<void>): void 2083e41f4b71Sopenharmony_ci 2084e41f4b71Sopenharmony_ci取消监听资源播放至结尾的事件。 2085e41f4b71Sopenharmony_ci 2086e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2087e41f4b71Sopenharmony_ci 2088e41f4b71Sopenharmony_ci**参数:** 2089e41f4b71Sopenharmony_ci 2090e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2091e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2092e41f4b71Sopenharmony_ci| type | string | 是 | 资源播放至结尾的事件回调类型,取消注册的事件:'endOfStream'。 | 2093e41f4b71Sopenharmony_ci| callback | Callback\<void> | 否 | 资源播放至结尾的事件回调方法。<br/>从API version 12开始支持此参数。 | 2094e41f4b71Sopenharmony_ci 2095e41f4b71Sopenharmony_ci**示例:** 2096e41f4b71Sopenharmony_ci 2097e41f4b71Sopenharmony_ci```ts 2098e41f4b71Sopenharmony_ciavPlayer.off('endOfStream') 2099e41f4b71Sopenharmony_ci``` 2100e41f4b71Sopenharmony_ci 2101e41f4b71Sopenharmony_ci### on('timeUpdate')<sup>9+</sup> 2102e41f4b71Sopenharmony_ci 2103e41f4b71Sopenharmony_cion(type: 'timeUpdate', callback: Callback\<number>): void 2104e41f4b71Sopenharmony_ci 2105e41f4b71Sopenharmony_ci监听资源播放当前时间,单位为毫秒(ms),用于刷新进度条当前位置,默认间隔100ms时间上报,因用户操作(seek)产生的时间变化会立刻上报。 2106e41f4b71Sopenharmony_ci 2107e41f4b71Sopenharmony_ci注:直播场景不支持timeUpdate上报。 2108e41f4b71Sopenharmony_ci 2109e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2110e41f4b71Sopenharmony_ci 2111e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2112e41f4b71Sopenharmony_ci 2113e41f4b71Sopenharmony_ci**参数:** 2114e41f4b71Sopenharmony_ci 2115e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2116e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ---------------------------------------------- | 2117e41f4b71Sopenharmony_ci| type | string | 是 | 时间更新的回调类型,支持的事件:'timeUpdate'。 | 2118e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是 | 回调函数。返回当前时间。 | 2119e41f4b71Sopenharmony_ci 2120e41f4b71Sopenharmony_ci**示例:** 2121e41f4b71Sopenharmony_ci 2122e41f4b71Sopenharmony_ci```ts 2123e41f4b71Sopenharmony_ciavPlayer.on('timeUpdate', (time:number) => { 2124e41f4b71Sopenharmony_ci console.info('timeUpdate called,and new time is :' + time) 2125e41f4b71Sopenharmony_ci}) 2126e41f4b71Sopenharmony_ci``` 2127e41f4b71Sopenharmony_ci 2128e41f4b71Sopenharmony_ci### off('timeUpdate')<sup>9+</sup> 2129e41f4b71Sopenharmony_ci 2130e41f4b71Sopenharmony_cioff(type: 'timeUpdate', callback?: Callback\<number>): void 2131e41f4b71Sopenharmony_ci 2132e41f4b71Sopenharmony_ci取消监听资源播放当前时间。 2133e41f4b71Sopenharmony_ci 2134e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2135e41f4b71Sopenharmony_ci 2136e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2137e41f4b71Sopenharmony_ci 2138e41f4b71Sopenharmony_ci**参数:** 2139e41f4b71Sopenharmony_ci 2140e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2141e41f4b71Sopenharmony_ci| ------ | ------ | ---- | -------------------------------------------------- | 2142e41f4b71Sopenharmony_ci| type | string | 是 | 时间更新的回调类型,取消注册的事件:'timeUpdate'。 | 2143e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否 | 回调函数。返回当前时间。<br/>从API version 12开始支持此参数。 | 2144e41f4b71Sopenharmony_ci 2145e41f4b71Sopenharmony_ci**示例:** 2146e41f4b71Sopenharmony_ci 2147e41f4b71Sopenharmony_ci```ts 2148e41f4b71Sopenharmony_ciavPlayer.off('timeUpdate') 2149e41f4b71Sopenharmony_ci``` 2150e41f4b71Sopenharmony_ci 2151e41f4b71Sopenharmony_ci### on('durationUpdate')<sup>9+</sup> 2152e41f4b71Sopenharmony_ci 2153e41f4b71Sopenharmony_ci 2154e41f4b71Sopenharmony_cion(type: 'durationUpdate', callback: Callback\<number>): void 2155e41f4b71Sopenharmony_ci 2156e41f4b71Sopenharmony_ci监听资源播放资源的时长,单位为毫秒(ms),用于刷新进度条长度,默认只在prepared上报一次,同时允许一些特殊码流刷新多次时长。 2157e41f4b71Sopenharmony_ci注:直播场景不支持durationUpdate上报。 2158e41f4b71Sopenharmony_ci 2159e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2160e41f4b71Sopenharmony_ci 2161e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2162e41f4b71Sopenharmony_ci 2163e41f4b71Sopenharmony_ci**参数:** 2164e41f4b71Sopenharmony_ci 2165e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2166e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------------------------------------- | 2167e41f4b71Sopenharmony_ci| type | string | 是 | 时长更新的回调类型,支持的事件:'durationUpdate'。 | 2168e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是 | 回调函数。返回资源时长。 | 2169e41f4b71Sopenharmony_ci 2170e41f4b71Sopenharmony_ci**示例:** 2171e41f4b71Sopenharmony_ci 2172e41f4b71Sopenharmony_ci```ts 2173e41f4b71Sopenharmony_ciavPlayer.on('durationUpdate', (duration: number) => { 2174e41f4b71Sopenharmony_ci console.info('durationUpdate called,new duration is :' + duration) 2175e41f4b71Sopenharmony_ci}) 2176e41f4b71Sopenharmony_ci``` 2177e41f4b71Sopenharmony_ci 2178e41f4b71Sopenharmony_ci### off('durationUpdate')<sup>9+</sup> 2179e41f4b71Sopenharmony_ci 2180e41f4b71Sopenharmony_cioff(type: 'durationUpdate', callback?: Callback\<number>): void 2181e41f4b71Sopenharmony_ci 2182e41f4b71Sopenharmony_ci取消监听资源播放资源的时长。 2183e41f4b71Sopenharmony_ci 2184e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2185e41f4b71Sopenharmony_ci 2186e41f4b71Sopenharmony_ci**参数:** 2187e41f4b71Sopenharmony_ci 2188e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2189e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------ | 2190e41f4b71Sopenharmony_ci| type | string | 是 | 时长更新的回调类型,取消注册的事件:'durationUpdate'。 | 2191e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否 | 回调函数。返回资源时长。<br/>从API version 12开始支持此参数。 | 2192e41f4b71Sopenharmony_ci 2193e41f4b71Sopenharmony_ci**示例:** 2194e41f4b71Sopenharmony_ci 2195e41f4b71Sopenharmony_ci```ts 2196e41f4b71Sopenharmony_ciavPlayer.off('durationUpdate') 2197e41f4b71Sopenharmony_ci``` 2198e41f4b71Sopenharmony_ci 2199e41f4b71Sopenharmony_ci### on('bufferingUpdate')<sup>9+</sup> 2200e41f4b71Sopenharmony_ci 2201e41f4b71Sopenharmony_cion(type: 'bufferingUpdate', callback: OnBufferingUpdateHandler): void 2202e41f4b71Sopenharmony_ci 2203e41f4b71Sopenharmony_ci订阅音视频缓存更新事件,仅网络播放支持该订阅事件。 2204e41f4b71Sopenharmony_ci 2205e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2206e41f4b71Sopenharmony_ci 2207e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2208e41f4b71Sopenharmony_ci 2209e41f4b71Sopenharmony_ci**参数:** 2210e41f4b71Sopenharmony_ci 2211e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2212e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2213e41f4b71Sopenharmony_ci| type | string | 是 | 播放缓存事件回调类型,支持的事件:'bufferingUpdate'。 | 2214e41f4b71Sopenharmony_ci| callback | [OnBufferingUpdateHandler](#onbufferingupdatehandler12) | 是 | 播放缓存事件回调方法。 | 2215e41f4b71Sopenharmony_ci 2216e41f4b71Sopenharmony_ci**示例:** 2217e41f4b71Sopenharmony_ci 2218e41f4b71Sopenharmony_ci```ts 2219e41f4b71Sopenharmony_ciavPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => { 2220e41f4b71Sopenharmony_ci console.info('bufferingUpdate called,and infoType value is:' + infoType + ', value is :' + value) 2221e41f4b71Sopenharmony_ci}) 2222e41f4b71Sopenharmony_ci``` 2223e41f4b71Sopenharmony_ci 2224e41f4b71Sopenharmony_ci### off('bufferingUpdate')<sup>9+</sup> 2225e41f4b71Sopenharmony_ci 2226e41f4b71Sopenharmony_cioff(type: 'bufferingUpdate', callback?: OnBufferingUpdateHandler): void 2227e41f4b71Sopenharmony_ci 2228e41f4b71Sopenharmony_ci取消监听音视频缓存更新事件。 2229e41f4b71Sopenharmony_ci 2230e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2231e41f4b71Sopenharmony_ci 2232e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2233e41f4b71Sopenharmony_ci 2234e41f4b71Sopenharmony_ci**参数:** 2235e41f4b71Sopenharmony_ci 2236e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2237e41f4b71Sopenharmony_ci| ------ | ------ | ---- | --------------------------------------------------------- | 2238e41f4b71Sopenharmony_ci| type | string | 是 | 播放缓存事件回调类型,取消注册的事件:'bufferingUpdate'。 | 2239e41f4b71Sopenharmony_ci| callback | [OnBufferingUpdateHandler](#onbufferingupdatehandler12) | 否 | 播放缓存事件回调方法。 | 2240e41f4b71Sopenharmony_ci 2241e41f4b71Sopenharmony_ci**示例:** 2242e41f4b71Sopenharmony_ci 2243e41f4b71Sopenharmony_ci```ts 2244e41f4b71Sopenharmony_ciavPlayer.off('bufferingUpdate') 2245e41f4b71Sopenharmony_ci``` 2246e41f4b71Sopenharmony_ci 2247e41f4b71Sopenharmony_ci### on('startRenderFrame')<sup>9+</sup> 2248e41f4b71Sopenharmony_ci 2249e41f4b71Sopenharmony_cion(type: 'startRenderFrame', callback: Callback\<void>): void 2250e41f4b71Sopenharmony_ci 2251e41f4b71Sopenharmony_ci订阅视频播放开始首帧渲染的更新事件,仅视频播放支持该订阅事件,该事件仅代表播放服务将第一帧画面送显示模块,实际效果依赖显示服务渲染性能。 2252e41f4b71Sopenharmony_ci 2253e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2254e41f4b71Sopenharmony_ci 2255e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2256e41f4b71Sopenharmony_ci 2257e41f4b71Sopenharmony_ci**参数:** 2258e41f4b71Sopenharmony_ci 2259e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2260e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2261e41f4b71Sopenharmony_ci| type | string | 是 | 视频播放开始首帧渲染事件回调类型,支持的事件:'startRenderFrame'。 | 2262e41f4b71Sopenharmony_ci| callback | Callback\<void> | 是 | 视频播放开始首帧渲染事件回调方法。 | 2263e41f4b71Sopenharmony_ci 2264e41f4b71Sopenharmony_ci**示例:** 2265e41f4b71Sopenharmony_ci 2266e41f4b71Sopenharmony_ci```ts 2267e41f4b71Sopenharmony_ciavPlayer.on('startRenderFrame', () => { 2268e41f4b71Sopenharmony_ci console.info('startRenderFrame called') 2269e41f4b71Sopenharmony_ci}) 2270e41f4b71Sopenharmony_ci``` 2271e41f4b71Sopenharmony_ci 2272e41f4b71Sopenharmony_ci### off('startRenderFrame')<sup>9+</sup> 2273e41f4b71Sopenharmony_ci 2274e41f4b71Sopenharmony_cioff(type: 'startRenderFrame', callback?: Callback\<void>): void 2275e41f4b71Sopenharmony_ci 2276e41f4b71Sopenharmony_ci取消监听视频播放开始首帧渲染的更新事件。 2277e41f4b71Sopenharmony_ci 2278e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2279e41f4b71Sopenharmony_ci 2280e41f4b71Sopenharmony_ci**参数:** 2281e41f4b71Sopenharmony_ci 2282e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2283e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2284e41f4b71Sopenharmony_ci| type | string | 是 | 视频播放开始首帧渲染事件回调类型,取消注册的事件:'startRenderFrame'。 | 2285e41f4b71Sopenharmony_ci| callback | Callback\<void> | 否 | 视频播放开始首帧渲染事件回调方法。<br/>从API version 12开始支持此参数。 | 2286e41f4b71Sopenharmony_ci 2287e41f4b71Sopenharmony_ci**示例:** 2288e41f4b71Sopenharmony_ci 2289e41f4b71Sopenharmony_ci```ts 2290e41f4b71Sopenharmony_ciavPlayer.off('startRenderFrame') 2291e41f4b71Sopenharmony_ci``` 2292e41f4b71Sopenharmony_ci 2293e41f4b71Sopenharmony_ci### on('videoSizeChange')<sup>9+</sup> 2294e41f4b71Sopenharmony_ci 2295e41f4b71Sopenharmony_cion(type: 'videoSizeChange', callback: OnVideoSizeChangeHandler): void 2296e41f4b71Sopenharmony_ci 2297e41f4b71Sopenharmony_ci监听视频播放宽高变化事件,仅视频播放支持该订阅事件,默认只在prepared状态上报一次,但HLS协议码流会在切换分辨率时上报。 2298e41f4b71Sopenharmony_ci 2299e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2300e41f4b71Sopenharmony_ci 2301e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2302e41f4b71Sopenharmony_ci 2303e41f4b71Sopenharmony_ci**参数:** 2304e41f4b71Sopenharmony_ci 2305e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2306e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2307e41f4b71Sopenharmony_ci| type | string | 是 | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChange'。 | 2308e41f4b71Sopenharmony_ci| callback | [OnVideoSizeChangeHandler](#onvideosizechangehandler12) | 是 | 视频播放宽高变化事件回调方法。 | 2309e41f4b71Sopenharmony_ci 2310e41f4b71Sopenharmony_ci**示例:** 2311e41f4b71Sopenharmony_ci 2312e41f4b71Sopenharmony_ci```ts 2313e41f4b71Sopenharmony_ciavPlayer.on('videoSizeChange', (width: number, height: number) => { 2314e41f4b71Sopenharmony_ci console.info('videoSizeChange called,and width is:' + width + ', height is :' + height) 2315e41f4b71Sopenharmony_ci}) 2316e41f4b71Sopenharmony_ci``` 2317e41f4b71Sopenharmony_ci 2318e41f4b71Sopenharmony_ci### off('videoSizeChange')<sup>9+</sup> 2319e41f4b71Sopenharmony_ci 2320e41f4b71Sopenharmony_cioff(type: 'videoSizeChange', callback?: OnVideoSizeChangeHandler): void 2321e41f4b71Sopenharmony_ci 2322e41f4b71Sopenharmony_ci取消监听视频播放宽高变化事件。 2323e41f4b71Sopenharmony_ci 2324e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2325e41f4b71Sopenharmony_ci 2326e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2327e41f4b71Sopenharmony_ci 2328e41f4b71Sopenharmony_ci**参数:** 2329e41f4b71Sopenharmony_ci 2330e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2331e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2332e41f4b71Sopenharmony_ci| type | string | 是 | 视频播放宽高变化事件回调类型,取消注册的事件:'videoSizeChange'。 | 2333e41f4b71Sopenharmony_ci| callback | [OnVideoSizeChangeHandler](#onvideosizechangehandler12) | 否 | 视频播放宽高变化事件回调方法。<br/>从API version 12开始支持此参数。 | 2334e41f4b71Sopenharmony_ci 2335e41f4b71Sopenharmony_ci**示例:** 2336e41f4b71Sopenharmony_ci 2337e41f4b71Sopenharmony_ci```ts 2338e41f4b71Sopenharmony_ciavPlayer.off('videoSizeChange') 2339e41f4b71Sopenharmony_ci``` 2340e41f4b71Sopenharmony_ci 2341e41f4b71Sopenharmony_ci### on('audioInterrupt')<sup>9+</sup> 2342e41f4b71Sopenharmony_ci 2343e41f4b71Sopenharmony_cion(type: 'audioInterrupt', callback: Callback\<audio.InterruptEvent>): void 2344e41f4b71Sopenharmony_ci 2345e41f4b71Sopenharmony_ci监听音频焦点变化事件,多个音视频资源同时播放时,会根据音频焦点模型[audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9)触发此事件。应用需根据不同焦点变化事件作相应处理。具体可参考[处理音频焦点事件](../../media/audio/audio-playback-concurrency.md)。 2346e41f4b71Sopenharmony_ci 2347e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2348e41f4b71Sopenharmony_ci 2349e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2350e41f4b71Sopenharmony_ci 2351e41f4b71Sopenharmony_ci**参数:** 2352e41f4b71Sopenharmony_ci 2353e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2354e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | 2355e41f4b71Sopenharmony_ci| type | string | 是 | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 | 2356e41f4b71Sopenharmony_ci| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)> | 是 | 音频焦点变化事件回调方法。 | 2357e41f4b71Sopenharmony_ci 2358e41f4b71Sopenharmony_ci**示例:** 2359e41f4b71Sopenharmony_ci 2360e41f4b71Sopenharmony_ci```ts 2361e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit'; 2362e41f4b71Sopenharmony_ci 2363e41f4b71Sopenharmony_ciavPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => { 2364e41f4b71Sopenharmony_ci console.info('audioInterrupt called,and InterruptEvent info is:' + info) 2365e41f4b71Sopenharmony_ci}) 2366e41f4b71Sopenharmony_ci``` 2367e41f4b71Sopenharmony_ci 2368e41f4b71Sopenharmony_ci### off('audioInterrupt')<sup>9+</sup> 2369e41f4b71Sopenharmony_ci 2370e41f4b71Sopenharmony_cioff(type: 'audioInterrupt', callback?: Callback<audio.InterruptEvent>): void 2371e41f4b71Sopenharmony_ci 2372e41f4b71Sopenharmony_ci取消监听音频焦点变化事件。 2373e41f4b71Sopenharmony_ci 2374e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2375e41f4b71Sopenharmony_ci 2376e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2377e41f4b71Sopenharmony_ci 2378e41f4b71Sopenharmony_ci**参数:** 2379e41f4b71Sopenharmony_ci 2380e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2381e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2382e41f4b71Sopenharmony_ci| type | string | 是 | 音频焦点变化事件回调类型,取消注册的事件:'audioInterrupt'。 | 2383e41f4b71Sopenharmony_ci| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)> | 否 | 音频焦点变化事件回调方法。<br/>从API version 12开始支持此参数。 | 2384e41f4b71Sopenharmony_ci 2385e41f4b71Sopenharmony_ci**示例:** 2386e41f4b71Sopenharmony_ci 2387e41f4b71Sopenharmony_ci```ts 2388e41f4b71Sopenharmony_ciavPlayer.off('audioInterrupt') 2389e41f4b71Sopenharmony_ci``` 2390e41f4b71Sopenharmony_ci 2391e41f4b71Sopenharmony_ci### on('audioOutputDeviceChangeWithInfo')<sup>11+</sup> 2392e41f4b71Sopenharmony_ci 2393e41f4b71Sopenharmony_cion(type: 'audioOutputDeviceChangeWithInfo', callback: Callback\<audio.AudioStreamDeviceChangeInfo>): void 2394e41f4b71Sopenharmony_ci 2395e41f4b71Sopenharmony_ci订阅监听音频流输出设备变化及原因,使用callback方式返回结果。 2396e41f4b71Sopenharmony_ci 2397e41f4b71Sopenharmony_ci在订阅此监听时,建议参考[响应音频流输出设备变更](../../media/audio/audio-output-device-change.md)自行实现设备连接或者断开时的播放器行为。 2398e41f4b71Sopenharmony_ci 2399e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2400e41f4b71Sopenharmony_ci 2401e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2402e41f4b71Sopenharmony_ci 2403e41f4b71Sopenharmony_ci**参数:** 2404e41f4b71Sopenharmony_ci 2405e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2406e41f4b71Sopenharmony_ci| :------- | :------------------------- | :--- | :------------------------------------------ | 2407e41f4b71Sopenharmony_ci| type | string | 是 | 事件回调类型,支持的事件为:'outputDeviceChangeWithInfo'。 | 2408e41f4b71Sopenharmony_ci| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 是 | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 | 2409e41f4b71Sopenharmony_ci 2410e41f4b71Sopenharmony_ci**错误码:** 2411e41f4b71Sopenharmony_ci 2412e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 2413e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 2414e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 2415e41f4b71Sopenharmony_ci 2416e41f4b71Sopenharmony_ci**示例:** 2417e41f4b71Sopenharmony_ci 2418e41f4b71Sopenharmony_ci```ts 2419e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit'; 2420e41f4b71Sopenharmony_ci 2421e41f4b71Sopenharmony_ciavPlayer.on('audioOutputDeviceChangeWithInfo', (data: audio.AudioStreamDeviceChangeInfo) => { 2422e41f4b71Sopenharmony_ci console.info(`${JSON.stringify(data)}`); 2423e41f4b71Sopenharmony_ci}); 2424e41f4b71Sopenharmony_ci``` 2425e41f4b71Sopenharmony_ci 2426e41f4b71Sopenharmony_ci### off('audioOutputDeviceChangeWithInfo')<sup>11+</sup> 2427e41f4b71Sopenharmony_ci 2428e41f4b71Sopenharmony_cioff(type: 'audioOutputDeviceChangeWithInfo', callback?: Callback\<audio.AudioStreamDeviceChangeInfo>): void 2429e41f4b71Sopenharmony_ci 2430e41f4b71Sopenharmony_ci取消订阅监听音频流输出设备变化及原因,使用callback方式返回结果。 2431e41f4b71Sopenharmony_ci 2432e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2433e41f4b71Sopenharmony_ci 2434e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2435e41f4b71Sopenharmony_ci 2436e41f4b71Sopenharmony_ci**参数:** 2437e41f4b71Sopenharmony_ci 2438e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2439e41f4b71Sopenharmony_ci| :------- | :------------------------- | :--- | :------------------------------------------ | 2440e41f4b71Sopenharmony_ci| type | string | 是 | 事件回调类型,支持的事件为:'outputDeviceChange'。 | 2441e41f4b71Sopenharmony_ci| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 否 | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 | 2442e41f4b71Sopenharmony_ci 2443e41f4b71Sopenharmony_ci**错误码:** 2444e41f4b71Sopenharmony_ci 2445e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 2446e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 2447e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 2448e41f4b71Sopenharmony_ci 2449e41f4b71Sopenharmony_ci**示例:** 2450e41f4b71Sopenharmony_ci 2451e41f4b71Sopenharmony_ci```ts 2452e41f4b71Sopenharmony_ciavPlayer.off('audioOutputDeviceChangeWithInfo'); 2453e41f4b71Sopenharmony_ci``` 2454e41f4b71Sopenharmony_ci 2455e41f4b71Sopenharmony_ci### addSubtitleFromFd<sup>12+</sup> 2456e41f4b71Sopenharmony_ci 2457e41f4b71Sopenharmony_ciaddSubtitleFromFd(fd: number, offset?: number, length?: number): Promise\<void> 2458e41f4b71Sopenharmony_ci 2459e41f4b71Sopenharmony_ci依据fd为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。 2460e41f4b71Sopenharmony_ci 2461e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2462e41f4b71Sopenharmony_ci 2463e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2464e41f4b71Sopenharmony_ci 2465e41f4b71Sopenharmony_ci**参数:** 2466e41f4b71Sopenharmony_ci 2467e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2468e41f4b71Sopenharmony_ci| ------ | ---------------------- | ---- | ------------------------------------------------------------ | 2469e41f4b71Sopenharmony_ci| fd | number | 是 | 资源句柄,通过[resourceManager.getRawFd](../apis-localization-kit/js-apis-resource-manager.md#getrawfd9)获取。 | 2470e41f4b71Sopenharmony_ci| offset | number | 否 | 资源偏移量,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误。 | 2471e41f4b71Sopenharmony_ci| length | number | 否 | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误。 | 2472e41f4b71Sopenharmony_ci 2473e41f4b71Sopenharmony_ci**返回值:** 2474e41f4b71Sopenharmony_ci 2475e41f4b71Sopenharmony_ci| 类型 | 说明 | 2476e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ | 2477e41f4b71Sopenharmony_ci| Promise\<void> | 添加外挂字幕addSubtitleFromFd方法的Promise返回值。 | 2478e41f4b71Sopenharmony_ci 2479e41f4b71Sopenharmony_ci**错误码:** 2480e41f4b71Sopenharmony_ci 2481e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 2482e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 2483e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. | 2484e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 2485e41f4b71Sopenharmony_ci 2486e41f4b71Sopenharmony_ci**示例:** 2487e41f4b71Sopenharmony_ci 2488e41f4b71Sopenharmony_ci```ts 2489e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit' 2490e41f4b71Sopenharmony_ci 2491e41f4b71Sopenharmony_cilet context = getContext(this) as common.UIAbilityContext 2492e41f4b71Sopenharmony_cilet fileDescriptor = await context.resourceManager.getRawFd('xxx.srt') 2493e41f4b71Sopenharmony_ci 2494e41f4b71Sopenharmony_ciavPlayer.addSubtitleFromFd(fileDescriptor.fd, fileDescriptor.offset, fileDescriptor.length) 2495e41f4b71Sopenharmony_ci``` 2496e41f4b71Sopenharmony_ci 2497e41f4b71Sopenharmony_ci### addSubtitleFromUrl<sup>12+</sup> 2498e41f4b71Sopenharmony_ci 2499e41f4b71Sopenharmony_ciaddSubtitleFromUrl(url: string): Promise\<void> 2500e41f4b71Sopenharmony_ci 2501e41f4b71Sopenharmony_ci依据url为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。 2502e41f4b71Sopenharmony_ci 2503e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2504e41f4b71Sopenharmony_ci 2505e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2506e41f4b71Sopenharmony_ci 2507e41f4b71Sopenharmony_ci**参数:** 2508e41f4b71Sopenharmony_ci 2509e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2510e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2511e41f4b71Sopenharmony_ci| url | string | 是 | 外挂字幕文件地址。 | 2512e41f4b71Sopenharmony_ci 2513e41f4b71Sopenharmony_ci**返回值:** 2514e41f4b71Sopenharmony_ci 2515e41f4b71Sopenharmony_ci| 类型 | 说明 | 2516e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ | 2517e41f4b71Sopenharmony_ci| Promise\<void> | 添加外挂字幕addSubtitleFromUrl方法的Promise返回值。 | 2518e41f4b71Sopenharmony_ci 2519e41f4b71Sopenharmony_ci**错误码:** 2520e41f4b71Sopenharmony_ci 2521e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 2522e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 2523e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. | 2524e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 2525e41f4b71Sopenharmony_ci 2526e41f4b71Sopenharmony_ci**示例:** 2527e41f4b71Sopenharmony_ci 2528e41f4b71Sopenharmony_ci```ts 2529e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit' 2530e41f4b71Sopenharmony_ci 2531e41f4b71Sopenharmony_cilet fdUrl:string = 'http://xxx.xxx.xxx/xx/index.srt' 2532e41f4b71Sopenharmony_ci 2533e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer = await media.createAVPlayer() 2534e41f4b71Sopenharmony_ciavPlayer.addSubtitleFromUrl(fdUrl) 2535e41f4b71Sopenharmony_ci``` 2536e41f4b71Sopenharmony_ci 2537e41f4b71Sopenharmony_ci### on('subtitleUpdate')<sup>12+</sup> 2538e41f4b71Sopenharmony_ci 2539e41f4b71Sopenharmony_cion(type: 'subtitleUpdate', callback: Callback\<SubtitleInfo>): void 2540e41f4b71Sopenharmony_ci 2541e41f4b71Sopenharmony_ci订阅获取外挂字幕的事件,当有外挂字幕时,会通过订阅的回调方法通知用户。用户只能订阅一个外挂字幕事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2542e41f4b71Sopenharmony_ci 2543e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2544e41f4b71Sopenharmony_ci 2545e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2546e41f4b71Sopenharmony_ci 2547e41f4b71Sopenharmony_ci**参数:** 2548e41f4b71Sopenharmony_ci 2549e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2550e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2551e41f4b71Sopenharmony_ci| type | string | 是 | 事件回调类型,支持的事件为:'subtitleUpdate'。 | 2552e41f4b71Sopenharmony_ci| callback | function | 是 | 外挂字幕事件回调方法。 | 2553e41f4b71Sopenharmony_ci 2554e41f4b71Sopenharmony_ci**示例:** 2555e41f4b71Sopenharmony_ci 2556e41f4b71Sopenharmony_ci```ts 2557e41f4b71Sopenharmony_ciavPlayer.on('subtitleUpdate', async (info: media.SubtitleInfo) => { 2558e41f4b71Sopenharmony_ci if (info) { 2559e41f4b71Sopenharmony_ci let text = (!info.text) ? '' : info.text 2560e41f4b71Sopenharmony_ci let startTime = (!info.startTime) ? 0 : info.startTime 2561e41f4b71Sopenharmony_ci let duration = (!info.duration) ? 0 : info.duration 2562e41f4b71Sopenharmony_ci console.info('subtitleUpdate info: text=' + text + ' startTime=' + startTime +' duration=' + duration) 2563e41f4b71Sopenharmony_ci } else { 2564e41f4b71Sopenharmony_ci console.info('subtitleUpdate info is null') 2565e41f4b71Sopenharmony_ci } 2566e41f4b71Sopenharmony_ci}) 2567e41f4b71Sopenharmony_ci``` 2568e41f4b71Sopenharmony_ci 2569e41f4b71Sopenharmony_ci### off('subtitleUpdate')<sup>12+</sup> 2570e41f4b71Sopenharmony_ci 2571e41f4b71Sopenharmony_cioff(type: 'subtitleUpdate', callback?: Callback\<SubtitleInfo>): void 2572e41f4b71Sopenharmony_ci 2573e41f4b71Sopenharmony_ci取消订阅获取外挂字幕的事件。 2574e41f4b71Sopenharmony_ci 2575e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2576e41f4b71Sopenharmony_ci 2577e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2578e41f4b71Sopenharmony_ci 2579e41f4b71Sopenharmony_ci**参数:** 2580e41f4b71Sopenharmony_ci 2581e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2582e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2583e41f4b71Sopenharmony_ci| type | string | 是 | 事件回调类型,支持的事件为:'subtitleUpdate'。 | 2584e41f4b71Sopenharmony_ci| callback | function | 否 | 取消外挂字幕事件的回调方法。 | 2585e41f4b71Sopenharmony_ci 2586e41f4b71Sopenharmony_ci**示例:** 2587e41f4b71Sopenharmony_ci 2588e41f4b71Sopenharmony_ci```ts 2589e41f4b71Sopenharmony_ciavPlayer.off('subtitleUpdate') 2590e41f4b71Sopenharmony_ci``` 2591e41f4b71Sopenharmony_ci 2592e41f4b71Sopenharmony_ci### on('trackChange')<sup>12+</sup> 2593e41f4b71Sopenharmony_ci 2594e41f4b71Sopenharmony_cion(type: 'trackChange', callback: OnTrackChangeHandler): void 2595e41f4b71Sopenharmony_ci 2596e41f4b71Sopenharmony_ci订阅获取轨道变更的事件,当播放的轨道变更时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2597e41f4b71Sopenharmony_ci 2598e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2599e41f4b71Sopenharmony_ci 2600e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2601e41f4b71Sopenharmony_ci 2602e41f4b71Sopenharmony_ci**参数:** 2603e41f4b71Sopenharmony_ci 2604e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2605e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2606e41f4b71Sopenharmony_ci| type | string | 是 | 事件回调类型,支持的事件为:'trackChange'。 | 2607e41f4b71Sopenharmony_ci| callback | [OnTrackChangeHandler](#ontrackchangehandler12) | 是 | 轨道变更事件回调方法。 | 2608e41f4b71Sopenharmony_ci 2609e41f4b71Sopenharmony_ci**示例:** 2610e41f4b71Sopenharmony_ci 2611e41f4b71Sopenharmony_ci```ts 2612e41f4b71Sopenharmony_ciavPlayer.on('trackChange', (index: number, isSelect: boolean) => { 2613e41f4b71Sopenharmony_ci console.info('trackChange info: index=' + index + ' isSelect=' + isSelect) 2614e41f4b71Sopenharmony_ci}) 2615e41f4b71Sopenharmony_ci``` 2616e41f4b71Sopenharmony_ci 2617e41f4b71Sopenharmony_ci### off('trackChange')<sup>12+</sup> 2618e41f4b71Sopenharmony_ci 2619e41f4b71Sopenharmony_cioff(type: 'trackChange', callback?: OnTrackChangeHandler): void 2620e41f4b71Sopenharmony_ci 2621e41f4b71Sopenharmony_ci取消订阅获取轨道变更的事件。 2622e41f4b71Sopenharmony_ci 2623e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2624e41f4b71Sopenharmony_ci 2625e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2626e41f4b71Sopenharmony_ci 2627e41f4b71Sopenharmony_ci**参数:** 2628e41f4b71Sopenharmony_ci 2629e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2630e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2631e41f4b71Sopenharmony_ci| type | string | 是 | 事件回调类型,支持的事件为:'trackChange'。 | 2632e41f4b71Sopenharmony_ci| callback | [OnTrackChangeHandler](#ontrackchangehandler12) | 否 | 取消轨道变更事件的回调方法。 | 2633e41f4b71Sopenharmony_ci 2634e41f4b71Sopenharmony_ci**示例:** 2635e41f4b71Sopenharmony_ci 2636e41f4b71Sopenharmony_ci```ts 2637e41f4b71Sopenharmony_ciavPlayer.off('trackChange') 2638e41f4b71Sopenharmony_ci``` 2639e41f4b71Sopenharmony_ci 2640e41f4b71Sopenharmony_ci### on('trackInfoUpdate')<sup>12+</sup> 2641e41f4b71Sopenharmony_ci 2642e41f4b71Sopenharmony_cion(type: 'trackInfoUpdate', callback: Callback\<Array\<MediaDescription>>): void 2643e41f4b71Sopenharmony_ci 2644e41f4b71Sopenharmony_ci订阅获取轨道信息更新的事件,当播放的轨道有更新时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 2645e41f4b71Sopenharmony_ci 2646e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2647e41f4b71Sopenharmony_ci 2648e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2649e41f4b71Sopenharmony_ci 2650e41f4b71Sopenharmony_ci**参数:** 2651e41f4b71Sopenharmony_ci 2652e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2653e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2654e41f4b71Sopenharmony_ci| type | string | 是 | 事件回调类型,支持的事件为:'trackInfoUpdate'。 | 2655e41f4b71Sopenharmony_ci| callback | Callback\<Array\<[MediaDescription](#mediadescription8)>> | 是 | 轨道信息更新事件回调方法。 | 2656e41f4b71Sopenharmony_ci 2657e41f4b71Sopenharmony_ci**示例:** 2658e41f4b71Sopenharmony_ci 2659e41f4b71Sopenharmony_ci```ts 2660e41f4b71Sopenharmony_ciavPlayer.on('trackInfoUpdate', (info: Array<media.MediaDescription>) => { 2661e41f4b71Sopenharmony_ci if (info) { 2662e41f4b71Sopenharmony_ci for (let i = 0; i < info.length; i++) { 2663e41f4b71Sopenharmony_ci let propertyIndex: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX]; 2664e41f4b71Sopenharmony_ci let propertyType: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_TYPE]; 2665e41f4b71Sopenharmony_ci console.info('track info: index=' + propertyIndex + ' tracktype=' + propertyType) 2666e41f4b71Sopenharmony_ci } 2667e41f4b71Sopenharmony_ci } else { 2668e41f4b71Sopenharmony_ci console.info('track info is null') 2669e41f4b71Sopenharmony_ci } 2670e41f4b71Sopenharmony_ci}) 2671e41f4b71Sopenharmony_ci``` 2672e41f4b71Sopenharmony_ci 2673e41f4b71Sopenharmony_ci### off('trackInfoUpdate')<sup>12+</sup> 2674e41f4b71Sopenharmony_ci 2675e41f4b71Sopenharmony_cioff(type: 'trackInfoUpdate', callback?: Callback\<Array\<MediaDescription>>): void 2676e41f4b71Sopenharmony_ci 2677e41f4b71Sopenharmony_ci取消订阅获取轨道变更的事件。 2678e41f4b71Sopenharmony_ci 2679e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2680e41f4b71Sopenharmony_ci 2681e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2682e41f4b71Sopenharmony_ci 2683e41f4b71Sopenharmony_ci**参数:** 2684e41f4b71Sopenharmony_ci 2685e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2686e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2687e41f4b71Sopenharmony_ci| type | string | 是 | 事件回调类型,支持的事件为:'trackInfoUpdate'。 | 2688e41f4b71Sopenharmony_ci| callback | Callback\<Array\<[MediaDescription](#mediadescription8)>> | 否 | 取消轨道信息更新事件的回调方法。 | 2689e41f4b71Sopenharmony_ci 2690e41f4b71Sopenharmony_ci**示例:** 2691e41f4b71Sopenharmony_ci 2692e41f4b71Sopenharmony_ci```ts 2693e41f4b71Sopenharmony_ciavPlayer.off('trackInfoUpdate') 2694e41f4b71Sopenharmony_ci``` 2695e41f4b71Sopenharmony_ci 2696e41f4b71Sopenharmony_ci### on('amplitudeUpdate')<sup>13+</sup> 2697e41f4b71Sopenharmony_ci 2698e41f4b71Sopenharmony_cion(type: 'amplitudeUpdate', callback: Callback\<Array\<number>>): void 2699e41f4b71Sopenharmony_ci 2700e41f4b71Sopenharmony_ci订阅音频最大电平值,音频资源播放时定时上报。 2701e41f4b71Sopenharmony_ci 2702e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 2703e41f4b71Sopenharmony_ci 2704e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2705e41f4b71Sopenharmony_ci 2706e41f4b71Sopenharmony_ci**参数:** 2707e41f4b71Sopenharmony_ci 2708e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2709e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 2710e41f4b71Sopenharmony_ci| type | string | 是 | 事件回调类型,支持的事件为:'amplitudeUpdate'。 | 2711e41f4b71Sopenharmony_ci| callback | Callback\<Array\<number>> | 是 | 音频最大电平值更新事件回调方法。 | 2712e41f4b71Sopenharmony_ci 2713e41f4b71Sopenharmony_ci**示例:** 2714e41f4b71Sopenharmony_ci 2715e41f4b71Sopenharmony_ci```ts 2716e41f4b71Sopenharmony_ciavPlayer.on('amplitudeUpdate', (value: Array<number>) => { 2717e41f4b71Sopenharmony_ci console.info('amplitudeUpdate called,and amplitudeUpdate = ${value}') 2718e41f4b71Sopenharmony_ci}) 2719e41f4b71Sopenharmony_ci``` 2720e41f4b71Sopenharmony_ci 2721e41f4b71Sopenharmony_ci### off('amplitudeUpdate')<sup>13+</sup> 2722e41f4b71Sopenharmony_ci 2723e41f4b71Sopenharmony_cioff(type: 'amplitudeUpdate', callback?: Callback\<Array\<number>>): void 2724e41f4b71Sopenharmony_ci 2725e41f4b71Sopenharmony_ci取消订阅获取音频最大电平值事件。 2726e41f4b71Sopenharmony_ci 2727e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 2728e41f4b71Sopenharmony_ci 2729e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2730e41f4b71Sopenharmony_ci 2731e41f4b71Sopenharmony_ci**参数:** 2732e41f4b71Sopenharmony_ci 2733e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2734e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2735e41f4b71Sopenharmony_ci| type | string | 是 | 事件回调类型,支持的事件为:'amplitudeUpdate'。 | 2736e41f4b71Sopenharmony_ci| callback | Callback\<Array\<number>> | 否 | 取消音频最大电平值更新事件回调方法。 | 2737e41f4b71Sopenharmony_ci 2738e41f4b71Sopenharmony_ci**示例:** 2739e41f4b71Sopenharmony_ci 2740e41f4b71Sopenharmony_ci```ts 2741e41f4b71Sopenharmony_ciavPlayer.off('amplitudeUpdate') 2742e41f4b71Sopenharmony_ci``` 2743e41f4b71Sopenharmony_ci 2744e41f4b71Sopenharmony_ci## AVPlayerState<sup>9+</sup> 2745e41f4b71Sopenharmony_ci 2746e41f4b71Sopenharmony_citype AVPlayerState = 'idle' | 'initialized' | 'prepared' | 'playing' | 'paused' | 'completed' | 'stopped' | 'released' | 'error' 2747e41f4b71Sopenharmony_ci 2748e41f4b71Sopenharmony_ci[AVPlayer](#avplayer9)的状态机,可通过state属性主动获取当前状态,也可通过监听[stateChange](#onstatechange9)事件上报当前状态,状态机之间的切换规则,可参考[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)。 2749e41f4b71Sopenharmony_ci 2750e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2751e41f4b71Sopenharmony_ci 2752e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2753e41f4b71Sopenharmony_ci 2754e41f4b71Sopenharmony_ci| 类型 | 说明 | 2755e41f4b71Sopenharmony_ci| :-----------------------------: | :----------------------------------------------------------- | 2756e41f4b71Sopenharmony_ci| '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属性会被重置,其他用户设置的属性将被保留。 | 2757e41f4b71Sopenharmony_ci| 'initialized' | 资源初始化,在Idle 状态设置 url<sup>9+</sup> 或 fdSrc<sup>9+</sup>属性,AVPlayer会进入initialized状态,此时可以配置窗口、音频等静态属性。 | 2758e41f4b71Sopenharmony_ci| 'prepared' | 已准备状态,在initialized状态调用[prepare()](#prepare9)方法,AVPlayer会进入prepared状态,此时播放引擎的资源已准备就绪。 | 2759e41f4b71Sopenharmony_ci| 'playing' | 正在播放状态,在prepared/paused/completed状态调用[play()](#play9)方法,AVPlayer会进入playing状态。 | 2760e41f4b71Sopenharmony_ci| 'paused' | 暂停状态,在playing状态调用pause方法,AVPlayer会进入paused状态。 | 2761e41f4b71Sopenharmony_ci| 'completed' | 播放至结尾状态,当媒体资源播放至结尾时,如果用户未设置循环播放(loop = true),AVPlayer会进入completed状态,此时调用[play()](#play9)会进入playing状态和重播,调用[stop()](#stop9)会进入stopped状态。 | 2762e41f4b71Sopenharmony_ci| 'stopped' | 停止状态,在prepared/playing/paused/completed状态调用[stop()](#stop9)方法,AVPlayer会进入stopped状态,此时播放引擎只会保留属性,但会释放内存资源,可以调用[prepare()](#prepare9)重新准备,也可以调用[reset()](#reset9)重置,或者调用[release()](#release9)彻底销毁。 | 2763e41f4b71Sopenharmony_ci| 'released' | 销毁状态,销毁与当前AVPlayer关联的播放引擎,无法再进行状态转换,调用[release()](#release9)方法后,会进入released状态,结束流程。 | 2764e41f4b71Sopenharmony_ci| '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:播放过程发现码流问题,导致容器、解码短暂异常,不影响连续播放和播控操作的,不需要客户端设计容错机制。 | 2765e41f4b71Sopenharmony_ci 2766e41f4b71Sopenharmony_ci## OnTrackChangeHandler<sup>12+</sup> 2767e41f4b71Sopenharmony_ci 2768e41f4b71Sopenharmony_citype OnTrackChangeHandler = (index: number, isSelected: boolean) => void 2769e41f4b71Sopenharmony_ci 2770e41f4b71Sopenharmony_citrack变更事件回调方法。 2771e41f4b71Sopenharmony_ci 2772e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2773e41f4b71Sopenharmony_ci 2774e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2775e41f4b71Sopenharmony_ci 2776e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2777e41f4b71Sopenharmony_ci| ------ | ------ | ------ | ---------------------------------------------------------- | 2778e41f4b71Sopenharmony_ci| index | number | 是 | 当前选中的track索引。 | 2779e41f4b71Sopenharmony_ci| isSelected | boolean | 是 | 当前索引的选中状态。 | 2780e41f4b71Sopenharmony_ci 2781e41f4b71Sopenharmony_ci## OnAVPlayerStateChangeHandle<sup>12+</sup> 2782e41f4b71Sopenharmony_ci 2783e41f4b71Sopenharmony_citype OnAVPlayerStateChangeHandle = (state: AVPlayerState, reason: StateChangeReason) => void 2784e41f4b71Sopenharmony_ci 2785e41f4b71Sopenharmony_ci状态机切换事件回调方法。 2786e41f4b71Sopenharmony_ci 2787e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2788e41f4b71Sopenharmony_ci 2789e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2790e41f4b71Sopenharmony_ci 2791e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2792e41f4b71Sopenharmony_ci| ------ | ------ | ------ | ---------------------------------------------------------- | 2793e41f4b71Sopenharmony_ci| state | [AVPlayerState](#avplayerstate9) | 是 | 当前播放状态。 | 2794e41f4b71Sopenharmony_ci| reason | [StateChangeReason](#statechangereason9) | 是 | 当前播放状态的切换原因。 | 2795e41f4b71Sopenharmony_ci 2796e41f4b71Sopenharmony_ci## OnBufferingUpdateHandler<sup>12+</sup> 2797e41f4b71Sopenharmony_ci 2798e41f4b71Sopenharmony_citype OnBufferingUpdateHandler = (infoType: BufferingInfoType, value: number) => void 2799e41f4b71Sopenharmony_ci 2800e41f4b71Sopenharmony_ci播放缓存事件回调方法。 2801e41f4b71Sopenharmony_ci 2802e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2803e41f4b71Sopenharmony_ci 2804e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2805e41f4b71Sopenharmony_ci 2806e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2807e41f4b71Sopenharmony_ci| ------ | ------ | ------ | ------------------------------------------------------------ | 2808e41f4b71Sopenharmony_ci| infoType | [BufferingInfoType](#bufferinginfotype8) | 是 | 缓存时间类型。 | 2809e41f4b71Sopenharmony_ci| value | number | 是 | value值固定为0。 | 2810e41f4b71Sopenharmony_ci 2811e41f4b71Sopenharmony_ci## OnVideoSizeChangeHandler<sup>12+</sup> 2812e41f4b71Sopenharmony_ci 2813e41f4b71Sopenharmony_citype OnVideoSizeChangeHandler = (width: number, height: number) => void 2814e41f4b71Sopenharmony_ci 2815e41f4b71Sopenharmony_ci视频播放宽高变化事件回调方法。 2816e41f4b71Sopenharmony_ci 2817e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2818e41f4b71Sopenharmony_ci 2819e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2820e41f4b71Sopenharmony_ci 2821e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 2822e41f4b71Sopenharmony_ci| ------ | ------ | ------ | ------------------------------------------------------------ | 2823e41f4b71Sopenharmony_ci| width | number | 是 | 视频宽度。 | 2824e41f4b71Sopenharmony_ci| height | number | 是 | 视频高度。 | 2825e41f4b71Sopenharmony_ci 2826e41f4b71Sopenharmony_ci## AVFileDescriptor<sup>9+</sup> 2827e41f4b71Sopenharmony_ci 2828e41f4b71Sopenharmony_ci音视频文件资源描述,一种特殊资源的播放方式,使用场景:应用中的音频资源被连续存储在同一个文件中,需要根据偏移量和长度进行播放。 2829e41f4b71Sopenharmony_ci 2830e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2831e41f4b71Sopenharmony_ci 2832e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 2833e41f4b71Sopenharmony_ci 2834e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 2835e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2836e41f4b71Sopenharmony_ci| 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)获取。 | 2837e41f4b71Sopenharmony_ci| offset | number | 否 | 资源偏移量,默认值为0,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 | 2838e41f4b71Sopenharmony_ci| length | number | 否 | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 | 2839e41f4b71Sopenharmony_ci 2840e41f4b71Sopenharmony_ci## AVDataSrcDescriptor<sup>10+</sup> 2841e41f4b71Sopenharmony_ci 2842e41f4b71Sopenharmony_ci音视频文件资源描述,用于DataSource播放方式,使用场景:应用在未获取完整音视频资源时,允许用户创建播放实例并开始播放,达到提前播放的目的。 2843e41f4b71Sopenharmony_ci 2844e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2845e41f4b71Sopenharmony_ci 2846e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 2847e41f4b71Sopenharmony_ci 2848e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 2849e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2850e41f4b71Sopenharmony_ci| fileSize | number | 是 | 待播放文件大小(字节),-1代表大小未知。如果fileSize设置为-1, 播放模式类似于直播,不能进行seek及setSpeed操作,不能设置loop属性,因此不能重新播放。 | 2851e41f4b71Sopenharmony_ci| 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类型,返回要填充数据的长度。 | 2852e41f4b71Sopenharmony_ci 2853e41f4b71Sopenharmony_ci## SubtitleInfo<sup>12+</sup> 2854e41f4b71Sopenharmony_ci 2855e41f4b71Sopenharmony_ci外挂字幕信息,使用场景:订阅外挂字幕事件,回调返回外挂字幕详细信息。 2856e41f4b71Sopenharmony_ci 2857e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2858e41f4b71Sopenharmony_ci 2859e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 2860e41f4b71Sopenharmony_ci 2861e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 2862e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 2863e41f4b71Sopenharmony_ci| text | string | 否 | 字幕文本信息。 | 2864e41f4b71Sopenharmony_ci| startTime | number | 否 | 显示当前字幕文本的开始时间(单位:毫秒)。 | 2865e41f4b71Sopenharmony_ci| duration | number | 否 | 显示当前字幕文本的持续时间(单位:毫秒)。 | 2866e41f4b71Sopenharmony_ci 2867e41f4b71Sopenharmony_ci## SeekMode<sup>8+</sup> 2868e41f4b71Sopenharmony_ci 2869e41f4b71Sopenharmony_ci视频播放的Seek模式枚举,可通过seek方法作为参数传递下去。 2870e41f4b71Sopenharmony_ci 2871e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 2872e41f4b71Sopenharmony_ci 2873e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 2874e41f4b71Sopenharmony_ci| -------------- | ---- | ------------------------------------------------------------ | 2875e41f4b71Sopenharmony_ci| SEEK_NEXT_SYNC | 0 | 表示跳转到指定时间点的下一个关键帧,建议向后快进的时候用这个枚举值。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 2876e41f4b71Sopenharmony_ci| SEEK_PREV_SYNC | 1 | 表示跳转到指定时间点的上一个关键帧,建议向前快进的时候用这个枚举值。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 2877e41f4b71Sopenharmony_ci| SEEK_CLOSEST<sup>12+</sup> | 2 | 表示跳转到距离指定时间点最近的帧,建议精准跳转进度的时候用这个枚举值。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2878e41f4b71Sopenharmony_ci 2879e41f4b71Sopenharmony_ci## SwitchMode<sup>12+</sup> 2880e41f4b71Sopenharmony_ci 2881e41f4b71Sopenharmony_ci视频播放的selectTrack模式枚举,可通过selectTrack方法作为参数传递下去,当前仅DASH协议视频轨支持该扩展参数。 2882e41f4b71Sopenharmony_ci 2883e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 2884e41f4b71Sopenharmony_ci 2885e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 2886e41f4b71Sopenharmony_ci| -------------- | ---- | ------------------------------------------------------------ | 2887e41f4b71Sopenharmony_ci| SMOOTH | 0 | 表示切换后视频平滑播放,该模式切换存在延迟,不会立即生效。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2888e41f4b71Sopenharmony_ci| SEGMENT | 1 | 表示切换后从当前分片开始位置播放,该模式立即切换,会有重复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2889e41f4b71Sopenharmony_ci| CLOSEST | 2 | 表示从距离当前播放时间点最近的帧开始播放,该模式立即切换,切换后会卡住3到5s,然后恢复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2890e41f4b71Sopenharmony_ci 2891e41f4b71Sopenharmony_ci## PlaybackSpeed<sup>8+</sup> 2892e41f4b71Sopenharmony_ci 2893e41f4b71Sopenharmony_ci视频播放的倍速枚举,可通过setSpeed方法作为参数传递下去。 2894e41f4b71Sopenharmony_ci 2895e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2896e41f4b71Sopenharmony_ci 2897e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 2898e41f4b71Sopenharmony_ci 2899e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 2900e41f4b71Sopenharmony_ci| -------------------- | ---- | ------------------------------ | 2901e41f4b71Sopenharmony_ci| SPEED_FORWARD_0_75_X | 0 | 表示视频播放正常播速的0.75倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2902e41f4b71Sopenharmony_ci| SPEED_FORWARD_1_00_X | 1 | 表示视频播放正常播速。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2903e41f4b71Sopenharmony_ci| SPEED_FORWARD_1_25_X | 2 | 表示视频播放正常播速的1.25倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2904e41f4b71Sopenharmony_ci| SPEED_FORWARD_1_75_X | 3 | 表示视频播放正常播速的1.75倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2905e41f4b71Sopenharmony_ci| SPEED_FORWARD_2_00_X | 4 | 表示视频播放正常播速的2.00倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2906e41f4b71Sopenharmony_ci| SPEED_FORWARD_0_50_X<sup>12+</sup> | 5 | 表示视频播放正常播速的0.50倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2907e41f4b71Sopenharmony_ci| SPEED_FORWARD_1_50_X<sup>12+</sup> | 6 | 表示视频播放正常播速的1.50倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 2908e41f4b71Sopenharmony_ci| SPEED_FORWARD_0_25_X<sup>12+</sup> | 8 | 表示视频播放正常播速的0.25倍。 | 2909e41f4b71Sopenharmony_ci| SPEED_FORWARD_0_125_X<sup>12+</sup> | 9 | 表示视频播放正常播速的0.125倍。 | 2910e41f4b71Sopenharmony_ci 2911e41f4b71Sopenharmony_ci## VideoScaleType<sup>9+</sup> 2912e41f4b71Sopenharmony_ci 2913e41f4b71Sopenharmony_ci枚举,视频缩放模式。 2914e41f4b71Sopenharmony_ci 2915e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2916e41f4b71Sopenharmony_ci 2917e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 2918e41f4b71Sopenharmony_ci 2919e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 2920e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------------------------------------------ | 2921e41f4b71Sopenharmony_ci| VIDEO_SCALE_TYPE_FIT | 0 | 默认比例类型,视频拉伸至与窗口等大。 | 2922e41f4b71Sopenharmony_ci| VIDEO_SCALE_TYPE_FIT_CROP | 1 | 保持视频宽高比拉伸至填满窗口,内容可能会有裁剪。 | 2923e41f4b71Sopenharmony_ci 2924e41f4b71Sopenharmony_ci## MediaDescription<sup>8+</sup> 2925e41f4b71Sopenharmony_ci 2926e41f4b71Sopenharmony_ci通过key-value方式获取媒体信息。 2927e41f4b71Sopenharmony_ci 2928e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 2929e41f4b71Sopenharmony_ci 2930e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 2931e41f4b71Sopenharmony_ci 2932e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 2933e41f4b71Sopenharmony_ci| ------------- | ------ | ---- | ------------------------------------------------------------ | 2934e41f4b71Sopenharmony_ci| [key: string] | Object | 是 | 该键值对支持的key取值范围,请参考[MediaDescriptionKey](#mediadescriptionkey8);每个key值的Object类型和范围,请参考[MediaDescriptionKey](#mediadescriptionkey8)对应Key值的说明 | 2935e41f4b71Sopenharmony_ci 2936e41f4b71Sopenharmony_ci**示例:** 2937e41f4b71Sopenharmony_ci 2938e41f4b71Sopenharmony_ci```ts 2939e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 2940e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 2941e41f4b71Sopenharmony_ci 2942e41f4b71Sopenharmony_cifunction printfItemDescription(obj: media.MediaDescription, key: string) { 2943e41f4b71Sopenharmony_ci let property: Object = obj[key]; 2944e41f4b71Sopenharmony_ci console.info('audio key is ' + key); // 通过key值获取对应的value。key值具体可见[MediaDescriptionKey] 2945e41f4b71Sopenharmony_ci console.info('audio value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[MediaDescriptionKey] 2946e41f4b71Sopenharmony_ci} 2947e41f4b71Sopenharmony_ci 2948e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer | undefined = undefined; 2949e41f4b71Sopenharmony_cimedia.createAVPlayer((err: BusinessError, player: media.AVPlayer) => { 2950e41f4b71Sopenharmony_ci if(player != null) { 2951e41f4b71Sopenharmony_ci avPlayer = player; 2952e41f4b71Sopenharmony_ci console.info(`Succeeded in creating AVPlayer`); 2953e41f4b71Sopenharmony_ci avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 2954e41f4b71Sopenharmony_ci if (arrList != null) { 2955e41f4b71Sopenharmony_ci for (let i = 0; i < arrList.length; i++) { 2956e41f4b71Sopenharmony_ci printfItemDescription(arrList[i], media.MediaDescriptionKey.MD_KEY_TRACK_TYPE); //打印出每条轨道MD_KEY_TRACK_TYPE的值 2957e41f4b71Sopenharmony_ci } 2958e41f4b71Sopenharmony_ci } else { 2959e41f4b71Sopenharmony_ci console.error(`Failed to get TrackDescription, error:${error}`); 2960e41f4b71Sopenharmony_ci } 2961e41f4b71Sopenharmony_ci }); 2962e41f4b71Sopenharmony_ci } else { 2963e41f4b71Sopenharmony_ci console.error(`Failed to create AVPlayer, error message:${err.message}`); 2964e41f4b71Sopenharmony_ci } 2965e41f4b71Sopenharmony_ci}); 2966e41f4b71Sopenharmony_ci``` 2967e41f4b71Sopenharmony_ci 2968e41f4b71Sopenharmony_ci## PlaybackInfo<sup>12+</sup> 2969e41f4b71Sopenharmony_ci 2970e41f4b71Sopenharmony_ci通过key-value方式获取播放信息。 2971e41f4b71Sopenharmony_ci 2972e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 2973e41f4b71Sopenharmony_ci 2974e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 2975e41f4b71Sopenharmony_ci| ------------- | ------ | ---- | ------------------------------------------------------------ | 2976e41f4b71Sopenharmony_ci| [key: string] | Object | 是 | 该键值对支持的key取值范围,请参考[PlaybackInfoKey](#playbackinfokey12);每个key值的Object类型和范围,请参考[PlaybackInfoKey](#playbackinfokey12)对应Key值的说明。 | 2977e41f4b71Sopenharmony_ci 2978e41f4b71Sopenharmony_ci**示例:** 2979e41f4b71Sopenharmony_ci 2980e41f4b71Sopenharmony_ci```ts 2981e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 2982e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 2983e41f4b71Sopenharmony_ci 2984e41f4b71Sopenharmony_cifunction printfPlaybackInfo(obj: media.PlaybackInfo, key: string) { 2985e41f4b71Sopenharmony_ci let property: Object = obj[key]; 2986e41f4b71Sopenharmony_ci console.info('key is ' + key); // 通过key值获取对应的value。key值具体可见[PlaybackInfoKey] 2987e41f4b71Sopenharmony_ci console.info('value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[PlaybackInfoKey] 2988e41f4b71Sopenharmony_ci} 2989e41f4b71Sopenharmony_ci 2990e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer | undefined = undefined; 2991e41f4b71Sopenharmony_cilet playbackInfo: media.PlaybackInfo | undefined = undefined; 2992e41f4b71Sopenharmony_cimedia.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => { 2993e41f4b71Sopenharmony_ci if (player != null) { 2994e41f4b71Sopenharmony_ci avPlayer = player; 2995e41f4b71Sopenharmony_ci console.info(`Succeeded in creating AVPlayer`); 2996e41f4b71Sopenharmony_ci if (avPlayer) { 2997e41f4b71Sopenharmony_ci try { 2998e41f4b71Sopenharmony_ci playbackInfo = await avPlayer.getPlaybackInfo(); 2999e41f4b71Sopenharmony_ci console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值 3000e41f4b71Sopenharmony_ci printfPlaybackInfo(playbackInfo, media.PlaybackInfoKey.SERVER_IP_ADDRESS); // 打印ip的值 3001e41f4b71Sopenharmony_ci } catch (error) { 3002e41f4b71Sopenharmony_ci console.error(`error = ${error}`); 3003e41f4b71Sopenharmony_ci } 3004e41f4b71Sopenharmony_ci } 3005e41f4b71Sopenharmony_ci } else { 3006e41f4b71Sopenharmony_ci console.error(`Failed to create AVPlayer, error message:${err.message}`); 3007e41f4b71Sopenharmony_ci } 3008e41f4b71Sopenharmony_ci}); 3009e41f4b71Sopenharmony_ci``` 3010e41f4b71Sopenharmony_ci 3011e41f4b71Sopenharmony_ci## AVRecorder<sup>9+</sup> 3012e41f4b71Sopenharmony_ci 3013e41f4b71Sopenharmony_ci音视频录制管理类,用于音视频媒体录制。在调用AVRecorder的方法前,需要先通过[createAVRecorder()](#mediacreateavrecorder9)构建一个AVRecorder实例。 3014e41f4b71Sopenharmony_ci 3015e41f4b71Sopenharmony_ci音视频录制demo可参考:[音频录制开发指导](../../media/media/using-avrecorder-for-recording.md)、[视频录制开发指导](../../media/media/video-recording.md)。 3016e41f4b71Sopenharmony_ci 3017e41f4b71Sopenharmony_ci> **说明:** 3018e41f4b71Sopenharmony_ci> 3019e41f4b71Sopenharmony_ci> 使用相机进行视频录制时,需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。 3020e41f4b71Sopenharmony_ci 3021e41f4b71Sopenharmony_ci### 属性 3022e41f4b71Sopenharmony_ci 3023e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3024e41f4b71Sopenharmony_ci 3025e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 3026e41f4b71Sopenharmony_ci| ------- | ------------------------------------ | ---- | ---- | ------------------ | 3027e41f4b71Sopenharmony_ci| state9+ | [AVRecorderState](#avrecorderstate9) | 是 | 否 | 音视频录制的状态。<br>**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 3028e41f4b71Sopenharmony_ci 3029e41f4b71Sopenharmony_ci### prepare<sup>9+</sup> 3030e41f4b71Sopenharmony_ci 3031e41f4b71Sopenharmony_ciprepare(config: AVRecorderConfig, callback: AsyncCallback\<void>): void 3032e41f4b71Sopenharmony_ci 3033e41f4b71Sopenharmony_ci异步方式进行音视频录制的参数设置。通过注册回调函数获取返回值。 3034e41f4b71Sopenharmony_ci 3035e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.MICROPHONE 3036e41f4b71Sopenharmony_ci 3037e41f4b71Sopenharmony_ci不涉及音频录制时,可以不需要获取ohos.permission.MICROPHONE权限。 3038e41f4b71Sopenharmony_ci 3039e41f4b71Sopenharmony_ci使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。 3040e41f4b71Sopenharmony_ci 3041e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3042e41f4b71Sopenharmony_ci 3043e41f4b71Sopenharmony_ci**参数:** 3044e41f4b71Sopenharmony_ci 3045e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3046e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | ---- | ------------------------------------- | 3047e41f4b71Sopenharmony_ci| config | [AVRecorderConfig](#avrecorderconfig9) | 是 | 配置音视频录制的相关参数。 | 3048e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当prepare方法成功,err为undefined,否则为错误对象。 | 3049e41f4b71Sopenharmony_ci 3050e41f4b71Sopenharmony_ci**错误码:** 3051e41f4b71Sopenharmony_ci 3052e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3053e41f4b71Sopenharmony_ci 3054e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3055e41f4b71Sopenharmony_ci| -------- | --------------------------------------- | 3056e41f4b71Sopenharmony_ci| 201 | Permission denied. Return by callback. | 3057e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 3058e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by callback. | 3059e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3060e41f4b71Sopenharmony_ci 3061e41f4b71Sopenharmony_ci**示例:** 3062e41f4b71Sopenharmony_ci 3063e41f4b71Sopenharmony_ci```ts 3064e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3065e41f4b71Sopenharmony_ci 3066e41f4b71Sopenharmony_ci// 配置参数以实际硬件设备支持的范围为准 3067e41f4b71Sopenharmony_cilet avRecorderProfile: media.AVRecorderProfile = { 3068e41f4b71Sopenharmony_ci audioBitrate : 48000, 3069e41f4b71Sopenharmony_ci audioChannels : 2, 3070e41f4b71Sopenharmony_ci audioCodec : media.CodecMimeType.AUDIO_AAC, 3071e41f4b71Sopenharmony_ci audioSampleRate : 48000, 3072e41f4b71Sopenharmony_ci fileFormat : media.ContainerFormatType.CFT_MPEG_4, 3073e41f4b71Sopenharmony_ci videoBitrate : 2000000, 3074e41f4b71Sopenharmony_ci videoCodec : media.CodecMimeType.VIDEO_AVC, 3075e41f4b71Sopenharmony_ci videoFrameWidth : 640, 3076e41f4b71Sopenharmony_ci videoFrameHeight : 480, 3077e41f4b71Sopenharmony_ci videoFrameRate : 30 3078e41f4b71Sopenharmony_ci} 3079e41f4b71Sopenharmony_cilet avRecorderConfig: media.AVRecorderConfig = { 3080e41f4b71Sopenharmony_ci audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 3081e41f4b71Sopenharmony_ci videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 3082e41f4b71Sopenharmony_ci profile : avRecorderProfile, 3083e41f4b71Sopenharmony_ci url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45 3084e41f4b71Sopenharmony_ci rotation : 0, // 合理值0、90、180、270,非合理值prepare接口将报错 3085e41f4b71Sopenharmony_ci location : { latitude : 30, longitude : 130 } 3086e41f4b71Sopenharmony_ci} 3087e41f4b71Sopenharmony_ci 3088e41f4b71Sopenharmony_ciavRecorder.prepare(avRecorderConfig, (err: BusinessError) => { 3089e41f4b71Sopenharmony_ci if (err) { 3090e41f4b71Sopenharmony_ci console.error('Failed to prepare and error is ' + err.message); 3091e41f4b71Sopenharmony_ci } else { 3092e41f4b71Sopenharmony_ci console.info('Succeeded in preparing'); 3093e41f4b71Sopenharmony_ci } 3094e41f4b71Sopenharmony_ci}) 3095e41f4b71Sopenharmony_ci``` 3096e41f4b71Sopenharmony_ci 3097e41f4b71Sopenharmony_ci### prepare<sup>9+</sup> 3098e41f4b71Sopenharmony_ci 3099e41f4b71Sopenharmony_ciprepare(config: AVRecorderConfig): Promise\<void> 3100e41f4b71Sopenharmony_ci 3101e41f4b71Sopenharmony_ci异步方式进行音视频录制的参数设置。通过Promise获取返回值。 3102e41f4b71Sopenharmony_ci 3103e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.MICROPHONE 3104e41f4b71Sopenharmony_ci 3105e41f4b71Sopenharmony_ci不涉及音频录制时,可以不需要获ohos.permission.MICROPHONE权限。 3106e41f4b71Sopenharmony_ci 3107e41f4b71Sopenharmony_ci使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。 3108e41f4b71Sopenharmony_ci 3109e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3110e41f4b71Sopenharmony_ci 3111e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3112e41f4b71Sopenharmony_ci 3113e41f4b71Sopenharmony_ci**参数:** 3114e41f4b71Sopenharmony_ci 3115e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3116e41f4b71Sopenharmony_ci| ------ | -------------------------------------- | ---- | -------------------------- | 3117e41f4b71Sopenharmony_ci| config | [AVRecorderConfig](#avrecorderconfig9) | 是 | 配置音视频录制的相关参数。 | 3118e41f4b71Sopenharmony_ci 3119e41f4b71Sopenharmony_ci**返回值:** 3120e41f4b71Sopenharmony_ci 3121e41f4b71Sopenharmony_ci| 类型 | 说明 | 3122e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ | 3123e41f4b71Sopenharmony_ci| Promise\<void> | 异步音视频录制prepare方法的Promise返回值。 | 3124e41f4b71Sopenharmony_ci 3125e41f4b71Sopenharmony_ci**错误码:** 3126e41f4b71Sopenharmony_ci 3127e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3128e41f4b71Sopenharmony_ci 3129e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3130e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 3131e41f4b71Sopenharmony_ci| 201 | Permission denied. Return by promise. | 3132e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 3133e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by promise. | 3134e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 3135e41f4b71Sopenharmony_ci 3136e41f4b71Sopenharmony_ci**示例:** 3137e41f4b71Sopenharmony_ci 3138e41f4b71Sopenharmony_ci```ts 3139e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3140e41f4b71Sopenharmony_ci 3141e41f4b71Sopenharmony_ci// 配置参数以实际硬件设备支持的范围为准 3142e41f4b71Sopenharmony_cilet avRecorderProfile: media.AVRecorderProfile = { 3143e41f4b71Sopenharmony_ci audioBitrate : 48000, 3144e41f4b71Sopenharmony_ci audioChannels : 2, 3145e41f4b71Sopenharmony_ci audioCodec : media.CodecMimeType.AUDIO_AAC, 3146e41f4b71Sopenharmony_ci audioSampleRate : 48000, 3147e41f4b71Sopenharmony_ci fileFormat : media.ContainerFormatType.CFT_MPEG_4, 3148e41f4b71Sopenharmony_ci videoBitrate : 2000000, 3149e41f4b71Sopenharmony_ci videoCodec : media.CodecMimeType.VIDEO_AVC, 3150e41f4b71Sopenharmony_ci videoFrameWidth : 640, 3151e41f4b71Sopenharmony_ci videoFrameHeight : 480, 3152e41f4b71Sopenharmony_ci videoFrameRate : 30 3153e41f4b71Sopenharmony_ci} 3154e41f4b71Sopenharmony_cilet avRecorderConfig: media.AVRecorderConfig = { 3155e41f4b71Sopenharmony_ci audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 3156e41f4b71Sopenharmony_ci videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 3157e41f4b71Sopenharmony_ci profile : avRecorderProfile, 3158e41f4b71Sopenharmony_ci url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45 3159e41f4b71Sopenharmony_ci rotation : 0, // 合理值0、90、180、270,非合理值prepare接口报错 3160e41f4b71Sopenharmony_ci location : { latitude : 30, longitude : 130 } 3161e41f4b71Sopenharmony_ci} 3162e41f4b71Sopenharmony_ci 3163e41f4b71Sopenharmony_ciavRecorder.prepare(avRecorderConfig).then(() => { 3164e41f4b71Sopenharmony_ci console.info('Succeeded in preparing'); 3165e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3166e41f4b71Sopenharmony_ci console.error('Failed to prepare and catch error is ' + err.message); 3167e41f4b71Sopenharmony_ci}); 3168e41f4b71Sopenharmony_ci``` 3169e41f4b71Sopenharmony_ci 3170e41f4b71Sopenharmony_ci### getInputSurface<sup>9+</sup> 3171e41f4b71Sopenharmony_ci 3172e41f4b71Sopenharmony_cigetInputSurface(callback: AsyncCallback\<string>): void 3173e41f4b71Sopenharmony_ci 3174e41f4b71Sopenharmony_ci异步方式获得录制需要的surface。通过注册回调函数获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。 3175e41f4b71Sopenharmony_ci 3176e41f4b71Sopenharmony_ci应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。 3177e41f4b71Sopenharmony_ci 3178e41f4b71Sopenharmony_ci需在[prepare()](#prepare9-2)事件成功触发后,才能调用getInputSurface()方法。 3179e41f4b71Sopenharmony_ci 3180e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3181e41f4b71Sopenharmony_ci 3182e41f4b71Sopenharmony_ci**参数:** 3183e41f4b71Sopenharmony_ci 3184e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3185e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | --------------------------- | 3186e41f4b71Sopenharmony_ci| callback | AsyncCallback\<string> | 是 | 回调函数。当获取surface成功,err为undefined,data为获取到的surfaceId,否则为错误对象。 | 3187e41f4b71Sopenharmony_ci 3188e41f4b71Sopenharmony_ci**错误码:** 3189e41f4b71Sopenharmony_ci 3190e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 3191e41f4b71Sopenharmony_ci 3192e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3193e41f4b71Sopenharmony_ci| -------- | --------------------------------------- | 3194e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by callback. | 3195e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by callback. | 3196e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3197e41f4b71Sopenharmony_ci 3198e41f4b71Sopenharmony_ci**示例:** 3199e41f4b71Sopenharmony_ci 3200e41f4b71Sopenharmony_ci```ts 3201e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3202e41f4b71Sopenharmony_cilet surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput 3203e41f4b71Sopenharmony_ci 3204e41f4b71Sopenharmony_ciavRecorder.getInputSurface((err: BusinessError, surfaceId: string) => { 3205e41f4b71Sopenharmony_ci if (err) { 3206e41f4b71Sopenharmony_ci console.error('Failed to do getInputSurface and error is ' + err.message); 3207e41f4b71Sopenharmony_ci } else { 3208e41f4b71Sopenharmony_ci console.info('Succeeded in doing getInputSurface'); 3209e41f4b71Sopenharmony_ci surfaceID = surfaceId; 3210e41f4b71Sopenharmony_ci } 3211e41f4b71Sopenharmony_ci}); 3212e41f4b71Sopenharmony_ci 3213e41f4b71Sopenharmony_ci``` 3214e41f4b71Sopenharmony_ci 3215e41f4b71Sopenharmony_ci### getInputSurface<sup>9+</sup> 3216e41f4b71Sopenharmony_ci 3217e41f4b71Sopenharmony_cigetInputSurface(): Promise\<string> 3218e41f4b71Sopenharmony_ci 3219e41f4b71Sopenharmony_ci异步方式获得录制需要的surface。通过Promise获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。 3220e41f4b71Sopenharmony_ci 3221e41f4b71Sopenharmony_ci应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。 3222e41f4b71Sopenharmony_ci 3223e41f4b71Sopenharmony_ci需在[prepare()](#prepare9-3)事件成功触发后,才能调用getInputSurface方法。 3224e41f4b71Sopenharmony_ci 3225e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3226e41f4b71Sopenharmony_ci 3227e41f4b71Sopenharmony_ci**返回值:** 3228e41f4b71Sopenharmony_ci 3229e41f4b71Sopenharmony_ci| 类型 | 说明 | 3230e41f4b71Sopenharmony_ci| ---------------- | -------------------------------- | 3231e41f4b71Sopenharmony_ci| Promise\<string> | 异步获得surface的Promise返回值。 | 3232e41f4b71Sopenharmony_ci 3233e41f4b71Sopenharmony_ci**错误码:** 3234e41f4b71Sopenharmony_ci 3235e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 3236e41f4b71Sopenharmony_ci 3237e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3238e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 3239e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by promise. | 3240e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 3241e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 3242e41f4b71Sopenharmony_ci 3243e41f4b71Sopenharmony_ci**示例:** 3244e41f4b71Sopenharmony_ci 3245e41f4b71Sopenharmony_ci```ts 3246e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3247e41f4b71Sopenharmony_cilet surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput 3248e41f4b71Sopenharmony_ci 3249e41f4b71Sopenharmony_ciavRecorder.getInputSurface().then((surfaceId: string) => { 3250e41f4b71Sopenharmony_ci console.info('Succeeded in getting InputSurface'); 3251e41f4b71Sopenharmony_ci surfaceID = surfaceId; 3252e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3253e41f4b71Sopenharmony_ci console.error('Failed to get InputSurface and catch error is ' + err.message); 3254e41f4b71Sopenharmony_ci}); 3255e41f4b71Sopenharmony_ci``` 3256e41f4b71Sopenharmony_ci 3257e41f4b71Sopenharmony_ci### updateRotation<sup>12+</sup> 3258e41f4b71Sopenharmony_ci 3259e41f4b71Sopenharmony_ciupdateRotation(rotation: number): Promise\<void> 3260e41f4b71Sopenharmony_ci 3261e41f4b71Sopenharmony_ci更新视频旋转角度。通过Promise获取返回值。 3262e41f4b71Sopenharmony_ci 3263e41f4b71Sopenharmony_ci当且仅当[prepare()](#prepare9-3)事件成功触发后,且在[start()](#start9)之前,才能调用updateRotation方法。 3264e41f4b71Sopenharmony_ci 3265e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3266e41f4b71Sopenharmony_ci 3267e41f4b71Sopenharmony_ci**参数:** 3268e41f4b71Sopenharmony_ci 3269e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3270e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | --------------------------- | 3271e41f4b71Sopenharmony_ci| rotation | number | 是 | 旋转角度,取值仅支持0、90、180、270度。 | 3272e41f4b71Sopenharmony_ci 3273e41f4b71Sopenharmony_ci**返回值:** 3274e41f4b71Sopenharmony_ci 3275e41f4b71Sopenharmony_ci| 类型 | 说明 | 3276e41f4b71Sopenharmony_ci| ---------------- | -------------------------------- | 3277e41f4b71Sopenharmony_ci| Promise\<void> | 异步返回函数执行结果。 | 3278e41f4b71Sopenharmony_ci 3279e41f4b71Sopenharmony_ci**错误码:** 3280e41f4b71Sopenharmony_ci 3281e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 3282e41f4b71Sopenharmony_ci 3283e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3284e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 3285e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 3286e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 3287e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 3288e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 3289e41f4b71Sopenharmony_ci 3290e41f4b71Sopenharmony_ci**示例:** 3291e41f4b71Sopenharmony_ci 3292e41f4b71Sopenharmony_ci```ts 3293e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3294e41f4b71Sopenharmony_ci 3295e41f4b71Sopenharmony_cilet rotation = 90 3296e41f4b71Sopenharmony_ci 3297e41f4b71Sopenharmony_ciavRecorder.updateRotation(rotation).then(() => { 3298e41f4b71Sopenharmony_ci console.info('Succeeded in updateRotation'); 3299e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3300e41f4b71Sopenharmony_ci console.error('Failed to updateRotation and catch error is ' + err.message); 3301e41f4b71Sopenharmony_ci}); 3302e41f4b71Sopenharmony_ci``` 3303e41f4b71Sopenharmony_ci 3304e41f4b71Sopenharmony_ci### start<sup>9+</sup> 3305e41f4b71Sopenharmony_ci 3306e41f4b71Sopenharmony_cistart(callback: AsyncCallback\<void>): void 3307e41f4b71Sopenharmony_ci 3308e41f4b71Sopenharmony_ci异步方式开始视频录制。通过注册回调函数获取返回值。 3309e41f4b71Sopenharmony_ci 3310e41f4b71Sopenharmony_ci纯音频录制需在[prepare()](#prepare9-2)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9)事件成功触发后,才能调用start方法。 3311e41f4b71Sopenharmony_ci 3312e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3313e41f4b71Sopenharmony_ci 3314e41f4b71Sopenharmony_ci**参数:** 3315e41f4b71Sopenharmony_ci 3316e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3317e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- | 3318e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 |回调函数。当开始录制视频成功,err为undefined,否则为错误对象。 | 3319e41f4b71Sopenharmony_ci 3320e41f4b71Sopenharmony_ci**错误码:** 3321e41f4b71Sopenharmony_ci 3322e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3323e41f4b71Sopenharmony_ci 3324e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3325e41f4b71Sopenharmony_ci| -------- | --------------------------------------- | 3326e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by callback. | 3327e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by callback. | 3328e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3329e41f4b71Sopenharmony_ci 3330e41f4b71Sopenharmony_ci**示例:** 3331e41f4b71Sopenharmony_ci 3332e41f4b71Sopenharmony_ci```ts 3333e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3334e41f4b71Sopenharmony_ci 3335e41f4b71Sopenharmony_ciavRecorder.start((err: BusinessError) => { 3336e41f4b71Sopenharmony_ci if (err) { 3337e41f4b71Sopenharmony_ci console.error('Failed to start AVRecorder and error is ' + err.message); 3338e41f4b71Sopenharmony_ci } else { 3339e41f4b71Sopenharmony_ci console.info('Succeeded in starting AVRecorder'); 3340e41f4b71Sopenharmony_ci } 3341e41f4b71Sopenharmony_ci}); 3342e41f4b71Sopenharmony_ci``` 3343e41f4b71Sopenharmony_ci 3344e41f4b71Sopenharmony_ci### start<sup>9+</sup> 3345e41f4b71Sopenharmony_ci 3346e41f4b71Sopenharmony_cistart(): Promise\<void> 3347e41f4b71Sopenharmony_ci 3348e41f4b71Sopenharmony_ci异步方式开始视频录制。通过Promise获取返回值。 3349e41f4b71Sopenharmony_ci 3350e41f4b71Sopenharmony_ci纯音频录制需在[prepare()](#prepare9-3)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9-1)事件成功触发后,才能调用start方法。 3351e41f4b71Sopenharmony_ci 3352e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3353e41f4b71Sopenharmony_ci 3354e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3355e41f4b71Sopenharmony_ci 3356e41f4b71Sopenharmony_ci**返回值:** 3357e41f4b71Sopenharmony_ci 3358e41f4b71Sopenharmony_ci| 类型 | 说明 | 3359e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 3360e41f4b71Sopenharmony_ci| Promise\<void> | 异步开始视频录制方法的Promise返回值。 | 3361e41f4b71Sopenharmony_ci 3362e41f4b71Sopenharmony_ci**错误码:** 3363e41f4b71Sopenharmony_ci 3364e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3365e41f4b71Sopenharmony_ci 3366e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3367e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 3368e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by promise. | 3369e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 3370e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 3371e41f4b71Sopenharmony_ci 3372e41f4b71Sopenharmony_ci**示例:** 3373e41f4b71Sopenharmony_ci 3374e41f4b71Sopenharmony_ci```ts 3375e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3376e41f4b71Sopenharmony_ci 3377e41f4b71Sopenharmony_ciavRecorder.start().then(() => { 3378e41f4b71Sopenharmony_ci console.info('Succeeded in starting AVRecorder'); 3379e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3380e41f4b71Sopenharmony_ci console.error('Failed to start AVRecorder and catch error is ' + err.message); 3381e41f4b71Sopenharmony_ci}); 3382e41f4b71Sopenharmony_ci``` 3383e41f4b71Sopenharmony_ci 3384e41f4b71Sopenharmony_ci### pause<sup>9+</sup> 3385e41f4b71Sopenharmony_ci 3386e41f4b71Sopenharmony_cipause(callback: AsyncCallback\<void>): void 3387e41f4b71Sopenharmony_ci 3388e41f4b71Sopenharmony_ci异步方式暂停视频录制。通过注册回调函数获取返回值。 3389e41f4b71Sopenharmony_ci 3390e41f4b71Sopenharmony_ci需要[start()](#start9)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9)接口来恢复录制。 3391e41f4b71Sopenharmony_ci 3392e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3393e41f4b71Sopenharmony_ci 3394e41f4b71Sopenharmony_ci**参数:** 3395e41f4b71Sopenharmony_ci 3396e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3397e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | --------------------------- | 3398e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当暂停视频录制成功,err为undefined,否则为错误对象。 | 3399e41f4b71Sopenharmony_ci 3400e41f4b71Sopenharmony_ci**错误码:** 3401e41f4b71Sopenharmony_ci 3402e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3403e41f4b71Sopenharmony_ci 3404e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3405e41f4b71Sopenharmony_ci| -------- | --------------------------------------- | 3406e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by callback. | 3407e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by callback. | 3408e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3409e41f4b71Sopenharmony_ci 3410e41f4b71Sopenharmony_ci**示例:** 3411e41f4b71Sopenharmony_ci 3412e41f4b71Sopenharmony_ci```ts 3413e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3414e41f4b71Sopenharmony_ci 3415e41f4b71Sopenharmony_ciavRecorder.pause((err: BusinessError) => { 3416e41f4b71Sopenharmony_ci if (err) { 3417e41f4b71Sopenharmony_ci console.error('Failed to pause AVRecorder and error is ' + err.message); 3418e41f4b71Sopenharmony_ci } else { 3419e41f4b71Sopenharmony_ci console.info('Succeeded in pausing'); 3420e41f4b71Sopenharmony_ci } 3421e41f4b71Sopenharmony_ci}); 3422e41f4b71Sopenharmony_ci``` 3423e41f4b71Sopenharmony_ci 3424e41f4b71Sopenharmony_ci### pause<sup>9+</sup> 3425e41f4b71Sopenharmony_ci 3426e41f4b71Sopenharmony_cipause(): Promise\<void> 3427e41f4b71Sopenharmony_ci 3428e41f4b71Sopenharmony_ci异步方式暂停视频录制。通过Promise获取返回值。 3429e41f4b71Sopenharmony_ci 3430e41f4b71Sopenharmony_ci需要[start()](#start9-1)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9-1)接口来恢复录制。 3431e41f4b71Sopenharmony_ci 3432e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3433e41f4b71Sopenharmony_ci 3434e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3435e41f4b71Sopenharmony_ci 3436e41f4b71Sopenharmony_ci**返回值:** 3437e41f4b71Sopenharmony_ci 3438e41f4b71Sopenharmony_ci| 类型 | 说明 | 3439e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 3440e41f4b71Sopenharmony_ci| Promise\<void> | 异步暂停视频录制方法的Promise返回值。 | 3441e41f4b71Sopenharmony_ci 3442e41f4b71Sopenharmony_ci**错误码:** 3443e41f4b71Sopenharmony_ci 3444e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3445e41f4b71Sopenharmony_ci 3446e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3447e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 3448e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by promise. | 3449e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 3450e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 3451e41f4b71Sopenharmony_ci 3452e41f4b71Sopenharmony_ci**示例:** 3453e41f4b71Sopenharmony_ci 3454e41f4b71Sopenharmony_ci```ts 3455e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3456e41f4b71Sopenharmony_ci 3457e41f4b71Sopenharmony_ciavRecorder.pause().then(() => { 3458e41f4b71Sopenharmony_ci console.info('Succeeded in pausing'); 3459e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3460e41f4b71Sopenharmony_ci console.error('Failed to pause AVRecorder and catch error is ' + err.message); 3461e41f4b71Sopenharmony_ci}); 3462e41f4b71Sopenharmony_ci``` 3463e41f4b71Sopenharmony_ci 3464e41f4b71Sopenharmony_ci### resume<sup>9+</sup> 3465e41f4b71Sopenharmony_ci 3466e41f4b71Sopenharmony_ciresume(callback: AsyncCallback\<void>): void 3467e41f4b71Sopenharmony_ci 3468e41f4b71Sopenharmony_ci异步方式恢复视频录制。通过注册回调函数获取返回值。 3469e41f4b71Sopenharmony_ci 3470e41f4b71Sopenharmony_ci需要在[pause()](#pause9-2)事件成功触发后,才能调用resume方法。 3471e41f4b71Sopenharmony_ci 3472e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3473e41f4b71Sopenharmony_ci 3474e41f4b71Sopenharmony_ci**参数:** 3475e41f4b71Sopenharmony_ci 3476e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3477e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- | 3478e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当恢复视频录制成功,err为undefined,否则为错误对象。 | 3479e41f4b71Sopenharmony_ci 3480e41f4b71Sopenharmony_ci**错误码:** 3481e41f4b71Sopenharmony_ci 3482e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3483e41f4b71Sopenharmony_ci 3484e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3485e41f4b71Sopenharmony_ci| -------- | --------------------------------------- | 3486e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by callback. | 3487e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by callback. | 3488e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3489e41f4b71Sopenharmony_ci 3490e41f4b71Sopenharmony_ci**示例:** 3491e41f4b71Sopenharmony_ci 3492e41f4b71Sopenharmony_ci```ts 3493e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3494e41f4b71Sopenharmony_ci 3495e41f4b71Sopenharmony_ciavRecorder.resume((err: BusinessError) => { 3496e41f4b71Sopenharmony_ci if (err) { 3497e41f4b71Sopenharmony_ci console.error('Failed to resume AVRecorder and error is ' + err.message); 3498e41f4b71Sopenharmony_ci } else { 3499e41f4b71Sopenharmony_ci console.info('Succeeded in resuming AVRecorder'); 3500e41f4b71Sopenharmony_ci } 3501e41f4b71Sopenharmony_ci}); 3502e41f4b71Sopenharmony_ci``` 3503e41f4b71Sopenharmony_ci 3504e41f4b71Sopenharmony_ci### resume<sup>9+</sup> 3505e41f4b71Sopenharmony_ci 3506e41f4b71Sopenharmony_ciresume(): Promise\<void> 3507e41f4b71Sopenharmony_ci 3508e41f4b71Sopenharmony_ci异步方式恢复视频录制。通过Promise获取返回值。 3509e41f4b71Sopenharmony_ci 3510e41f4b71Sopenharmony_ci需要在[pause()](#pause9-3)事件成功触发后,才能调用resume方法。 3511e41f4b71Sopenharmony_ci 3512e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3513e41f4b71Sopenharmony_ci 3514e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3515e41f4b71Sopenharmony_ci 3516e41f4b71Sopenharmony_ci**返回值:** 3517e41f4b71Sopenharmony_ci 3518e41f4b71Sopenharmony_ci| 类型 | 说明 | 3519e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 3520e41f4b71Sopenharmony_ci| Promise\<void> | 异步恢复视频录制方法的Promise返回值。 | 3521e41f4b71Sopenharmony_ci 3522e41f4b71Sopenharmony_ci**错误码:** 3523e41f4b71Sopenharmony_ci 3524e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3525e41f4b71Sopenharmony_ci 3526e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3527e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 3528e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by promise. | 3529e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 3530e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 3531e41f4b71Sopenharmony_ci 3532e41f4b71Sopenharmony_ci**示例:** 3533e41f4b71Sopenharmony_ci 3534e41f4b71Sopenharmony_ci```ts 3535e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3536e41f4b71Sopenharmony_ci 3537e41f4b71Sopenharmony_ciavRecorder.resume().then(() => { 3538e41f4b71Sopenharmony_ci console.info('Succeeded in resuming AVRecorder'); 3539e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3540e41f4b71Sopenharmony_ci console.error('Failed to resume AVRecorder failed and catch error is ' + err.message); 3541e41f4b71Sopenharmony_ci}); 3542e41f4b71Sopenharmony_ci``` 3543e41f4b71Sopenharmony_ci 3544e41f4b71Sopenharmony_ci### stop<sup>9+</sup> 3545e41f4b71Sopenharmony_ci 3546e41f4b71Sopenharmony_cistop(callback: AsyncCallback\<void>): void 3547e41f4b71Sopenharmony_ci 3548e41f4b71Sopenharmony_ci异步方式停止视频录制。通过注册回调函数获取返回值。 3549e41f4b71Sopenharmony_ci 3550e41f4b71Sopenharmony_ci需要在[start()](#start9)或[pause()](#pause9-2)事件成功触发后,才能调用stop方法。 3551e41f4b71Sopenharmony_ci 3552e41f4b71Sopenharmony_ci纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。 3553e41f4b71Sopenharmony_ci 3554e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3555e41f4b71Sopenharmony_ci 3556e41f4b71Sopenharmony_ci**参数:** 3557e41f4b71Sopenharmony_ci 3558e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3559e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- | 3560e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当停止视频录制成功,err为undefined,否则为错误对象。 | 3561e41f4b71Sopenharmony_ci 3562e41f4b71Sopenharmony_ci**错误码:** 3563e41f4b71Sopenharmony_ci 3564e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3565e41f4b71Sopenharmony_ci 3566e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3567e41f4b71Sopenharmony_ci| -------- | --------------------------------------- | 3568e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by callback. | 3569e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by callback. | 3570e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3571e41f4b71Sopenharmony_ci 3572e41f4b71Sopenharmony_ci**示例:** 3573e41f4b71Sopenharmony_ci 3574e41f4b71Sopenharmony_ci```ts 3575e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3576e41f4b71Sopenharmony_ci 3577e41f4b71Sopenharmony_ciavRecorder.stop((err: BusinessError) => { 3578e41f4b71Sopenharmony_ci if (err) { 3579e41f4b71Sopenharmony_ci console.error('Failed to stop AVRecorder and error is ' + err.message); 3580e41f4b71Sopenharmony_ci } else { 3581e41f4b71Sopenharmony_ci console.info('Succeeded in stopping AVRecorder'); 3582e41f4b71Sopenharmony_ci } 3583e41f4b71Sopenharmony_ci}); 3584e41f4b71Sopenharmony_ci``` 3585e41f4b71Sopenharmony_ci 3586e41f4b71Sopenharmony_ci### stop<sup>9+</sup> 3587e41f4b71Sopenharmony_ci 3588e41f4b71Sopenharmony_cistop(): Promise\<void> 3589e41f4b71Sopenharmony_ci 3590e41f4b71Sopenharmony_ci异步方式停止视频录制。通过Promise获取返回值。 3591e41f4b71Sopenharmony_ci 3592e41f4b71Sopenharmony_ci需要在[start()](#start9-1)或[pause()](#pause9-3)事件成功触发后,才能调用stop方法。 3593e41f4b71Sopenharmony_ci 3594e41f4b71Sopenharmony_ci纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。 3595e41f4b71Sopenharmony_ci 3596e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3597e41f4b71Sopenharmony_ci 3598e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3599e41f4b71Sopenharmony_ci 3600e41f4b71Sopenharmony_ci**返回值:** 3601e41f4b71Sopenharmony_ci 3602e41f4b71Sopenharmony_ci| 类型 | 说明 | 3603e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 3604e41f4b71Sopenharmony_ci| Promise\<void> | 异步停止视频录制方法的Promise返回值。 | 3605e41f4b71Sopenharmony_ci 3606e41f4b71Sopenharmony_ci**错误码:** 3607e41f4b71Sopenharmony_ci 3608e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3609e41f4b71Sopenharmony_ci 3610e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3611e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 3612e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by promise. | 3613e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 3614e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 3615e41f4b71Sopenharmony_ci 3616e41f4b71Sopenharmony_ci**示例:** 3617e41f4b71Sopenharmony_ci 3618e41f4b71Sopenharmony_ci```ts 3619e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3620e41f4b71Sopenharmony_ci 3621e41f4b71Sopenharmony_ciavRecorder.stop().then(() => { 3622e41f4b71Sopenharmony_ci console.info('Succeeded in stopping AVRecorder'); 3623e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3624e41f4b71Sopenharmony_ci console.error('Failed to stop AVRecorder and catch error is ' + err.message); 3625e41f4b71Sopenharmony_ci}); 3626e41f4b71Sopenharmony_ci``` 3627e41f4b71Sopenharmony_ci 3628e41f4b71Sopenharmony_ci### reset<sup>9+</sup> 3629e41f4b71Sopenharmony_ci 3630e41f4b71Sopenharmony_cireset(callback: AsyncCallback\<void>): void 3631e41f4b71Sopenharmony_ci 3632e41f4b71Sopenharmony_ci异步方式重置音视频录制。通过注册回调函数获取返回值。 3633e41f4b71Sopenharmony_ci 3634e41f4b71Sopenharmony_ci纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。 3635e41f4b71Sopenharmony_ci 3636e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3637e41f4b71Sopenharmony_ci 3638e41f4b71Sopenharmony_ci**参数:** 3639e41f4b71Sopenharmony_ci 3640e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3641e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------ | 3642e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当重置音视频录制成功,err为undefined,否则为错误对象。 | 3643e41f4b71Sopenharmony_ci 3644e41f4b71Sopenharmony_ci**错误码:** 3645e41f4b71Sopenharmony_ci 3646e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3647e41f4b71Sopenharmony_ci 3648e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3649e41f4b71Sopenharmony_ci| -------- | --------------------------------- | 3650e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by callback. | 3651e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3652e41f4b71Sopenharmony_ci 3653e41f4b71Sopenharmony_ci**示例:** 3654e41f4b71Sopenharmony_ci 3655e41f4b71Sopenharmony_ci```ts 3656e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3657e41f4b71Sopenharmony_ci 3658e41f4b71Sopenharmony_ciavRecorder.reset((err: BusinessError) => { 3659e41f4b71Sopenharmony_ci if (err) { 3660e41f4b71Sopenharmony_ci console.error('Failed to reset AVRecorder and error is ' + err.message); 3661e41f4b71Sopenharmony_ci } else { 3662e41f4b71Sopenharmony_ci console.info('Succeeded in resetting AVRecorder'); 3663e41f4b71Sopenharmony_ci } 3664e41f4b71Sopenharmony_ci}); 3665e41f4b71Sopenharmony_ci``` 3666e41f4b71Sopenharmony_ci 3667e41f4b71Sopenharmony_ci### reset<sup>9+</sup> 3668e41f4b71Sopenharmony_ci 3669e41f4b71Sopenharmony_cireset(): Promise\<void> 3670e41f4b71Sopenharmony_ci 3671e41f4b71Sopenharmony_ci异步方式重置音视频录制。通过Promise获取返回值。 3672e41f4b71Sopenharmony_ci 3673e41f4b71Sopenharmony_ci纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。 3674e41f4b71Sopenharmony_ci 3675e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3676e41f4b71Sopenharmony_ci 3677e41f4b71Sopenharmony_ci**返回值:** 3678e41f4b71Sopenharmony_ci 3679e41f4b71Sopenharmony_ci| 类型 | 说明 | 3680e41f4b71Sopenharmony_ci| -------------- | --------------------------------------- | 3681e41f4b71Sopenharmony_ci| Promise\<void> | 异步重置音视频录制方法的Promise返回值。 | 3682e41f4b71Sopenharmony_ci 3683e41f4b71Sopenharmony_ci**错误码:** 3684e41f4b71Sopenharmony_ci 3685e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3686e41f4b71Sopenharmony_ci 3687e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3688e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 3689e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 3690e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 3691e41f4b71Sopenharmony_ci 3692e41f4b71Sopenharmony_ci**示例:** 3693e41f4b71Sopenharmony_ci 3694e41f4b71Sopenharmony_ci```ts 3695e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3696e41f4b71Sopenharmony_ci 3697e41f4b71Sopenharmony_ciavRecorder.reset().then(() => { 3698e41f4b71Sopenharmony_ci console.info('Succeeded in resetting AVRecorder'); 3699e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3700e41f4b71Sopenharmony_ci console.error('Failed to reset and catch error is ' + err.message); 3701e41f4b71Sopenharmony_ci}); 3702e41f4b71Sopenharmony_ci``` 3703e41f4b71Sopenharmony_ci 3704e41f4b71Sopenharmony_ci### release<sup>9+</sup> 3705e41f4b71Sopenharmony_ci 3706e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void 3707e41f4b71Sopenharmony_ci 3708e41f4b71Sopenharmony_ci异步方式释放音视频录制资源。通过注册回调函数获取返回值。 3709e41f4b71Sopenharmony_ci 3710e41f4b71Sopenharmony_ci释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。 3711e41f4b71Sopenharmony_ci 3712e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3713e41f4b71Sopenharmony_ci 3714e41f4b71Sopenharmony_ci**参数:** 3715e41f4b71Sopenharmony_ci 3716e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3717e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------------- | 3718e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当释放音视频录制资源成功,err为undefined,否则为错误对象。 | 3719e41f4b71Sopenharmony_ci 3720e41f4b71Sopenharmony_ci**错误码:** 3721e41f4b71Sopenharmony_ci 3722e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3723e41f4b71Sopenharmony_ci 3724e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3725e41f4b71Sopenharmony_ci| -------- | --------------------------------- | 3726e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3727e41f4b71Sopenharmony_ci 3728e41f4b71Sopenharmony_ci**示例:** 3729e41f4b71Sopenharmony_ci 3730e41f4b71Sopenharmony_ci```ts 3731e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3732e41f4b71Sopenharmony_ci 3733e41f4b71Sopenharmony_ciavRecorder.release((err: BusinessError) => { 3734e41f4b71Sopenharmony_ci if (err) { 3735e41f4b71Sopenharmony_ci console.error('Failed to release AVRecorder and error is ' + err.message); 3736e41f4b71Sopenharmony_ci } else { 3737e41f4b71Sopenharmony_ci console.info('Succeeded in releasing AVRecorder'); 3738e41f4b71Sopenharmony_ci } 3739e41f4b71Sopenharmony_ci}); 3740e41f4b71Sopenharmony_ci``` 3741e41f4b71Sopenharmony_ci 3742e41f4b71Sopenharmony_ci### release<sup>9+</sup> 3743e41f4b71Sopenharmony_ci 3744e41f4b71Sopenharmony_cirelease(): Promise\<void> 3745e41f4b71Sopenharmony_ci 3746e41f4b71Sopenharmony_ci异步方式释放音视频录制资源。通过Promise获取返回值。 3747e41f4b71Sopenharmony_ci 3748e41f4b71Sopenharmony_ci释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。 3749e41f4b71Sopenharmony_ci 3750e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 3751e41f4b71Sopenharmony_ci 3752e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 3753e41f4b71Sopenharmony_ci 3754e41f4b71Sopenharmony_ci**返回值:** 3755e41f4b71Sopenharmony_ci 3756e41f4b71Sopenharmony_ci| 类型 | 说明 | 3757e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------- | 3758e41f4b71Sopenharmony_ci| Promise\<void> | 异步释放音视频录制资源方法的Promise返回值。 | 3759e41f4b71Sopenharmony_ci 3760e41f4b71Sopenharmony_ci**错误码:** 3761e41f4b71Sopenharmony_ci 3762e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3763e41f4b71Sopenharmony_ci 3764e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3765e41f4b71Sopenharmony_ci| -------- | --------------------------------- | 3766e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3767e41f4b71Sopenharmony_ci 3768e41f4b71Sopenharmony_ci**示例:** 3769e41f4b71Sopenharmony_ci 3770e41f4b71Sopenharmony_ci```ts 3771e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3772e41f4b71Sopenharmony_ci 3773e41f4b71Sopenharmony_ciavRecorder.release().then(() => { 3774e41f4b71Sopenharmony_ci console.info('Succeeded in releasing AVRecorder'); 3775e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3776e41f4b71Sopenharmony_ci console.error('Failed to release AVRecorder and catch error is ' + err.message); 3777e41f4b71Sopenharmony_ci}); 3778e41f4b71Sopenharmony_ci``` 3779e41f4b71Sopenharmony_ci 3780e41f4b71Sopenharmony_ci### getCurrentAudioCapturerInfo<sup>11+</sup> 3781e41f4b71Sopenharmony_ci 3782e41f4b71Sopenharmony_cigetCurrentAudioCapturerInfo(callback: AsyncCallback\<audio.AudioCapturerChangeInfo>): void 3783e41f4b71Sopenharmony_ci 3784e41f4b71Sopenharmony_ci异步方式获取当前音频采集参数。通过注册回调函数获取返回值。 3785e41f4b71Sopenharmony_ci 3786e41f4b71Sopenharmony_ci在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3787e41f4b71Sopenharmony_ci 3788e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3789e41f4b71Sopenharmony_ci 3790e41f4b71Sopenharmony_ci**参数**: 3791e41f4b71Sopenharmony_ci 3792e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3793e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------------------------ | 3794e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是 | 回调函数。当获取音频采集参数成功时,err为undefined,data为获取到的audio.AudioCapturerChangeInfo,否则为错误对象。 | 3795e41f4b71Sopenharmony_ci 3796e41f4b71Sopenharmony_ci**错误码**: 3797e41f4b71Sopenharmony_ci 3798e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3799e41f4b71Sopenharmony_ci 3800e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3801e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 3802e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. | 3803e41f4b71Sopenharmony_ci| 5400103 | I/O error. | 3804e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3805e41f4b71Sopenharmony_ci 3806e41f4b71Sopenharmony_ci**示例**: 3807e41f4b71Sopenharmony_ci 3808e41f4b71Sopenharmony_ci```ts 3809e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit'; 3810e41f4b71Sopenharmony_ci 3811e41f4b71Sopenharmony_cilet currentCapturerInfo: audio.AudioCapturerChangeInfo; 3812e41f4b71Sopenharmony_ci 3813e41f4b71Sopenharmony_ciavRecorder.getCurrentAudioCapturerInfo((err: BusinessError, capturerInfo: audio.AudioCapturerChangeInfo) => { 3814e41f4b71Sopenharmony_ci if (err) { 3815e41f4b71Sopenharmony_ci console.error('Failed to get CurrentAudioCapturerInfo and error is ' + err.message); 3816e41f4b71Sopenharmony_ci } else { 3817e41f4b71Sopenharmony_ci console.info('Succeeded in getting CurrentAudioCapturerInfo'); 3818e41f4b71Sopenharmony_ci currentCapturerInfo = capturerInfo; 3819e41f4b71Sopenharmony_ci } 3820e41f4b71Sopenharmony_ci}); 3821e41f4b71Sopenharmony_ci``` 3822e41f4b71Sopenharmony_ci 3823e41f4b71Sopenharmony_ci### getCurrentAudioCapturerInfo<sup>11+</sup> 3824e41f4b71Sopenharmony_ci 3825e41f4b71Sopenharmony_cigetCurrentAudioCapturerInfo(): Promise\<audio.AudioCapturerChangeInfo> 3826e41f4b71Sopenharmony_ci 3827e41f4b71Sopenharmony_ci异步方式获取当前音频采集参数。通过Promise获取返回值。 3828e41f4b71Sopenharmony_ci 3829e41f4b71Sopenharmony_ci在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3830e41f4b71Sopenharmony_ci 3831e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3832e41f4b71Sopenharmony_ci 3833e41f4b71Sopenharmony_ci**返回值**: 3834e41f4b71Sopenharmony_ci 3835e41f4b71Sopenharmony_ci| 类型 | 说明 | 3836e41f4b71Sopenharmony_ci| ------------------------------------------------------------ | ------------------------------------------------- | 3837e41f4b71Sopenharmony_ci| Promise\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | Promise对象,返回获取的当前音频采集参数。 | 3838e41f4b71Sopenharmony_ci 3839e41f4b71Sopenharmony_ci**错误码**: 3840e41f4b71Sopenharmony_ci 3841e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3842e41f4b71Sopenharmony_ci 3843e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3844e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 3845e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. | 3846e41f4b71Sopenharmony_ci| 5400103 | I/O error. | 3847e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 3848e41f4b71Sopenharmony_ci 3849e41f4b71Sopenharmony_ci**示例**: 3850e41f4b71Sopenharmony_ci 3851e41f4b71Sopenharmony_ci```ts 3852e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit'; 3853e41f4b71Sopenharmony_ci 3854e41f4b71Sopenharmony_cilet currentCapturerInfo: audio.AudioCapturerChangeInfo; 3855e41f4b71Sopenharmony_ci 3856e41f4b71Sopenharmony_ciavRecorder.getCurrentAudioCapturerInfo().then((capturerInfo: audio.AudioCapturerChangeInfo) => { 3857e41f4b71Sopenharmony_ci console.info('Succeeded in getting CurrentAudioCapturerInfo'); 3858e41f4b71Sopenharmony_ci currentCapturerInfo = capturerInfo; 3859e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3860e41f4b71Sopenharmony_ci console.error('Failed to get CurrentAudioCapturerInfo and catch error is ' + err.message); 3861e41f4b71Sopenharmony_ci}); 3862e41f4b71Sopenharmony_ci``` 3863e41f4b71Sopenharmony_ci 3864e41f4b71Sopenharmony_ci### getAudioCapturerMaxAmplitude<sup>11+</sup> 3865e41f4b71Sopenharmony_ci 3866e41f4b71Sopenharmony_cigetAudioCapturerMaxAmplitude(callback: AsyncCallback\<number>): void 3867e41f4b71Sopenharmony_ci 3868e41f4b71Sopenharmony_ci异步方式获取当前音频最大振幅。通过注册回调函数获取返回值。 3869e41f4b71Sopenharmony_ci 3870e41f4b71Sopenharmony_ci在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3871e41f4b71Sopenharmony_ci 3872e41f4b71Sopenharmony_ci调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。 3873e41f4b71Sopenharmony_ci 3874e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3875e41f4b71Sopenharmony_ci 3876e41f4b71Sopenharmony_ci**参数**: 3877e41f4b71Sopenharmony_ci 3878e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3879e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ------------------------------------ | 3880e41f4b71Sopenharmony_ci| callback | AsyncCallback\<number> | 是 | 回调函数。获取当前音频最大振幅成功时,err为undefined,data为获取到的最大振幅,否则为错误对象。 | 3881e41f4b71Sopenharmony_ci 3882e41f4b71Sopenharmony_ci**错误码**: 3883e41f4b71Sopenharmony_ci 3884e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3885e41f4b71Sopenharmony_ci 3886e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3887e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 3888e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. | 3889e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3890e41f4b71Sopenharmony_ci 3891e41f4b71Sopenharmony_ci**示例**: 3892e41f4b71Sopenharmony_ci 3893e41f4b71Sopenharmony_ci```ts 3894e41f4b71Sopenharmony_cilet maxAmplitude: number; 3895e41f4b71Sopenharmony_ci 3896e41f4b71Sopenharmony_ciavRecorder.getAudioCapturerMaxAmplitude((err: BusinessError, amplitude: number) => { 3897e41f4b71Sopenharmony_ci if (err) { 3898e41f4b71Sopenharmony_ci console.error('Failed to get AudioCapturerMaxAmplitude and error is ' + err.message); 3899e41f4b71Sopenharmony_ci } else { 3900e41f4b71Sopenharmony_ci console.info('Succeeded in getting AudioCapturerMaxAmplitude'); 3901e41f4b71Sopenharmony_ci maxAmplitude = amplitude; 3902e41f4b71Sopenharmony_ci } 3903e41f4b71Sopenharmony_ci}); 3904e41f4b71Sopenharmony_ci``` 3905e41f4b71Sopenharmony_ci 3906e41f4b71Sopenharmony_ci### getAudioCapturerMaxAmplitude<sup>11+</sup> 3907e41f4b71Sopenharmony_ci 3908e41f4b71Sopenharmony_cigetAudioCapturerMaxAmplitude(): Promise\<number> 3909e41f4b71Sopenharmony_ci 3910e41f4b71Sopenharmony_ci异步方式获取当前音频最大振幅参数。通过Promise获取返回值。 3911e41f4b71Sopenharmony_ci 3912e41f4b71Sopenharmony_ci在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。 3913e41f4b71Sopenharmony_ci 3914e41f4b71Sopenharmony_ci调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。 3915e41f4b71Sopenharmony_ci 3916e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3917e41f4b71Sopenharmony_ci 3918e41f4b71Sopenharmony_ci**返回值**: 3919e41f4b71Sopenharmony_ci 3920e41f4b71Sopenharmony_ci| 类型 | 说明 | 3921e41f4b71Sopenharmony_ci| ---------------- | ------------------------------------------------- | 3922e41f4b71Sopenharmony_ci| Promise\<number> | Promise对象,返回获取的当前音频最大振幅。 | 3923e41f4b71Sopenharmony_ci 3924e41f4b71Sopenharmony_ci**错误码**: 3925e41f4b71Sopenharmony_ci 3926e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3927e41f4b71Sopenharmony_ci 3928e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3929e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 3930e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. | 3931e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 3932e41f4b71Sopenharmony_ci 3933e41f4b71Sopenharmony_ci**示例**: 3934e41f4b71Sopenharmony_ci 3935e41f4b71Sopenharmony_ci```ts 3936e41f4b71Sopenharmony_cilet maxAmplitude: number; 3937e41f4b71Sopenharmony_ci 3938e41f4b71Sopenharmony_ciavRecorder.getAudioCapturerMaxAmplitude().then((amplitude: number) => { 3939e41f4b71Sopenharmony_ci console.info('Succeeded in getting AudioCapturerMaxAmplitude'); 3940e41f4b71Sopenharmony_ci maxAmplitude = amplitude; 3941e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 3942e41f4b71Sopenharmony_ci console.error('Failed to get AudioCapturerMaxAmplitude and catch error is ' + err.message); 3943e41f4b71Sopenharmony_ci}); 3944e41f4b71Sopenharmony_ci``` 3945e41f4b71Sopenharmony_ci 3946e41f4b71Sopenharmony_ci### getAvailableEncoder<sup>11+</sup> 3947e41f4b71Sopenharmony_ci 3948e41f4b71Sopenharmony_cigetAvailableEncoder(callback: AsyncCallback\<Array\<EncoderInfo>>): void 3949e41f4b71Sopenharmony_ci 3950e41f4b71Sopenharmony_ci异步方式获取可用的编码器参数。通过注册回调函数获取返回值。 3951e41f4b71Sopenharmony_ci 3952e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3953e41f4b71Sopenharmony_ci 3954e41f4b71Sopenharmony_ci**参数**: 3955e41f4b71Sopenharmony_ci 3956e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 3957e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------------- | ---- | ------------------------------------ | 3958e41f4b71Sopenharmony_ci| callback | AsyncCallback\<Array\<[EncoderInfo](#encoderinfo11)>> | 是 | 回调函数。获取可用的编码器参数成功时,err为undefined,data为获取到的编码器参数,否则为错误对象。 | 3959e41f4b71Sopenharmony_ci 3960e41f4b71Sopenharmony_ci**错误码**: 3961e41f4b71Sopenharmony_ci 3962e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 3963e41f4b71Sopenharmony_ci 3964e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 3965e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 3966e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. | 3967e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 3968e41f4b71Sopenharmony_ci 3969e41f4b71Sopenharmony_ci**示例**: 3970e41f4b71Sopenharmony_ci 3971e41f4b71Sopenharmony_ci```ts 3972e41f4b71Sopenharmony_cilet encoderInfo: media.EncoderInfo; 3973e41f4b71Sopenharmony_ci 3974e41f4b71Sopenharmony_ciavRecorder.getAvailableEncoder((err: BusinessError, info: media.EncoderInfo[]) => { 3975e41f4b71Sopenharmony_ci if (err) { 3976e41f4b71Sopenharmony_ci console.error('Failed to get AvailableEncoder and error is ' + err.message); 3977e41f4b71Sopenharmony_ci } else { 3978e41f4b71Sopenharmony_ci console.info('Succeeded in getting AvailableEncoder'); 3979e41f4b71Sopenharmony_ci encoderInfo = info[0]; 3980e41f4b71Sopenharmony_ci } 3981e41f4b71Sopenharmony_ci}); 3982e41f4b71Sopenharmony_ci``` 3983e41f4b71Sopenharmony_ci 3984e41f4b71Sopenharmony_ci### getAvailableEncoder<sup>11+</sup> 3985e41f4b71Sopenharmony_ci 3986e41f4b71Sopenharmony_cigetAvailableEncoder(): Promise\<Array\<EncoderInfo>> 3987e41f4b71Sopenharmony_ci 3988e41f4b71Sopenharmony_ci异步方式获取可用的编码器参数。通过注册回调函数获取返回值。 3989e41f4b71Sopenharmony_ci 3990e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder 3991e41f4b71Sopenharmony_ci 3992e41f4b71Sopenharmony_ci**返回值**: 3993e41f4b71Sopenharmony_ci 3994e41f4b71Sopenharmony_ci| 类型 | 说明 | 3995e41f4b71Sopenharmony_ci| ----------------------------------------------- | ----------------------------------------------- | 3996e41f4b71Sopenharmony_ci| Promise\<Array\<[EncoderInfo](#encoderinfo11)>> | Promise对象,返回获取的可用的编码器参数。 | 3997e41f4b71Sopenharmony_ci 3998e41f4b71Sopenharmony_ci**错误码**: 3999e41f4b71Sopenharmony_ci 4000e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4001e41f4b71Sopenharmony_ci 4002e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4003e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 4004e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. | 4005e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 4006e41f4b71Sopenharmony_ci 4007e41f4b71Sopenharmony_ci**示例**: 4008e41f4b71Sopenharmony_ci 4009e41f4b71Sopenharmony_ci```ts 4010e41f4b71Sopenharmony_cilet encoderInfo: media.EncoderInfo; 4011e41f4b71Sopenharmony_ci 4012e41f4b71Sopenharmony_ciavRecorder.getAvailableEncoder().then((info: media.EncoderInfo[]) => { 4013e41f4b71Sopenharmony_ci console.info('Succeeded in getting AvailableEncoder'); 4014e41f4b71Sopenharmony_ci encoderInfo = info[0]; 4015e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 4016e41f4b71Sopenharmony_ci console.error('Failed to get AvailableEncoder and catch error is ' + err.message); 4017e41f4b71Sopenharmony_ci}); 4018e41f4b71Sopenharmony_ci``` 4019e41f4b71Sopenharmony_ci 4020e41f4b71Sopenharmony_ci### getAVRecorderConfig<sup>11+</sup> 4021e41f4b71Sopenharmony_ci 4022e41f4b71Sopenharmony_cigetAVRecorderConfig(callback: AsyncCallback\<AVRecorderConfig>): void 4023e41f4b71Sopenharmony_ci 4024e41f4b71Sopenharmony_ci异步方式获取实时的配置参数。通过注册回调函数获取返回值。 4025e41f4b71Sopenharmony_ci 4026e41f4b71Sopenharmony_ci只能在[prepare()](#prepare9-2)接口调用后调用。 4027e41f4b71Sopenharmony_ci 4028e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4029e41f4b71Sopenharmony_ci 4030e41f4b71Sopenharmony_ci**参数:** 4031e41f4b71Sopenharmony_ci 4032e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4033e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | --------------------------- | 4034e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVRecorderConfig](#avrecorderconfig9)> | 是 | 回调函数。获取实时配置的参数成功时,err为undefined,data为获取到的配置参数,否则为错误对象。 | 4035e41f4b71Sopenharmony_ci 4036e41f4b71Sopenharmony_ci**错误码:** 4037e41f4b71Sopenharmony_ci 4038e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 4039e41f4b71Sopenharmony_ci 4040e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4041e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 4042e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by callback. | 4043e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by callback. | 4044e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 4045e41f4b71Sopenharmony_ci 4046e41f4b71Sopenharmony_ci**示例:** 4047e41f4b71Sopenharmony_ci 4048e41f4b71Sopenharmony_ci```ts 4049e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4050e41f4b71Sopenharmony_ci 4051e41f4b71Sopenharmony_cilet avConfig: media.AVRecorderConfig; 4052e41f4b71Sopenharmony_ci 4053e41f4b71Sopenharmony_ciavRecorder.getAVRecorderConfig((err: BusinessError, config: media.AVRecorderConfig) => { 4054e41f4b71Sopenharmony_ci if (err) { 4055e41f4b71Sopenharmony_ci console.error('Failed to get avConfig and error is ' + err.message); 4056e41f4b71Sopenharmony_ci } else { 4057e41f4b71Sopenharmony_ci console.info('Succeeded in getting AVRecorderConfig'); 4058e41f4b71Sopenharmony_ci avConfig = config; 4059e41f4b71Sopenharmony_ci } 4060e41f4b71Sopenharmony_ci}); 4061e41f4b71Sopenharmony_ci``` 4062e41f4b71Sopenharmony_ci 4063e41f4b71Sopenharmony_ci### getAVRecorderConfig<sup>11+</sup> 4064e41f4b71Sopenharmony_ci 4065e41f4b71Sopenharmony_cigetAVRecorderConfig(): Promise\<AVRecorderConfig>; 4066e41f4b71Sopenharmony_ci 4067e41f4b71Sopenharmony_ci异步方式获取实时的配置参数。通过Promise获取返回值。 4068e41f4b71Sopenharmony_ci 4069e41f4b71Sopenharmony_ci只能在[prepare()](#prepare9-3)接口调用后调用。 4070e41f4b71Sopenharmony_ci 4071e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4072e41f4b71Sopenharmony_ci 4073e41f4b71Sopenharmony_ci**返回值:** 4074e41f4b71Sopenharmony_ci 4075e41f4b71Sopenharmony_ci| 类型 | 说明 | 4076e41f4b71Sopenharmony_ci| ---------------- | -------------------------------- | 4077e41f4b71Sopenharmony_ci| Promise\<[AVRecorderConfig](#avrecorderconfig9)> | 异步获得实时配置参数的回调方法。 | 4078e41f4b71Sopenharmony_ci 4079e41f4b71Sopenharmony_ci**错误码:** 4080e41f4b71Sopenharmony_ci 4081e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 4082e41f4b71Sopenharmony_ci 4083e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4084e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 4085e41f4b71Sopenharmony_ci| 5400102 | Operate not permit. Return by promise. | 4086e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 4087e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 4088e41f4b71Sopenharmony_ci 4089e41f4b71Sopenharmony_ci**示例:** 4090e41f4b71Sopenharmony_ci 4091e41f4b71Sopenharmony_ci```ts 4092e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4093e41f4b71Sopenharmony_ci 4094e41f4b71Sopenharmony_cilet avConfig: media.AVRecorderConfig; 4095e41f4b71Sopenharmony_ci 4096e41f4b71Sopenharmony_ciavRecorder.getAVRecorderConfig().then((config: media.AVRecorderConfig) => { 4097e41f4b71Sopenharmony_ci console.info('Succeeded in getting AVRecorderConfig'); 4098e41f4b71Sopenharmony_ci avConfig = config; 4099e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 4100e41f4b71Sopenharmony_ci console.error('Failed to get AVRecorderConfig and catch error is ' + err.message); 4101e41f4b71Sopenharmony_ci}); 4102e41f4b71Sopenharmony_ci``` 4103e41f4b71Sopenharmony_ci 4104e41f4b71Sopenharmony_ci### on('stateChange')<sup>9+</sup> 4105e41f4b71Sopenharmony_ci 4106e41f4b71Sopenharmony_cion(type: 'stateChange', callback: OnAVRecorderStateChangeHandler): void 4107e41f4b71Sopenharmony_ci 4108e41f4b71Sopenharmony_ci订阅录制状态机AVRecorderState切换的事件,当 AVRecorderState状态机发生变化时,会通过订阅的回调方法通知用户。用户只能订阅一个状态机切换事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 4109e41f4b71Sopenharmony_ci 4110e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4111e41f4b71Sopenharmony_ci 4112e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4113e41f4b71Sopenharmony_ci 4114e41f4b71Sopenharmony_ci**参数:** 4115e41f4b71Sopenharmony_ci 4116e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4117e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 4118e41f4b71Sopenharmony_ci| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 4119e41f4b71Sopenharmony_ci| callback | [OnAVRecorderStateChangeHandler](#onavrecorderstatechangehandler12) | 是 | 状态机切换事件回调方法。 | 4120e41f4b71Sopenharmony_ci 4121e41f4b71Sopenharmony_ci**错误码:** 4122e41f4b71Sopenharmony_ci 4123e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4124e41f4b71Sopenharmony_ci 4125e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4126e41f4b71Sopenharmony_ci| -------- | --------------------------------- | 4127e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by callback. | 4128e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 4129e41f4b71Sopenharmony_ci 4130e41f4b71Sopenharmony_ci**示例:** 4131e41f4b71Sopenharmony_ci 4132e41f4b71Sopenharmony_ci```ts 4133e41f4b71Sopenharmony_ciavRecorder.on('stateChange', async (state: media.AVRecorderState, reason: media.StateChangeReason) => { 4134e41f4b71Sopenharmony_ci console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason); 4135e41f4b71Sopenharmony_ci}); 4136e41f4b71Sopenharmony_ci``` 4137e41f4b71Sopenharmony_ci 4138e41f4b71Sopenharmony_ci### off('stateChange')<sup>9+</sup> 4139e41f4b71Sopenharmony_ci 4140e41f4b71Sopenharmony_cioff(type: 'stateChange', callback?: OnAVRecorderStateChangeHandler): void 4141e41f4b71Sopenharmony_ci 4142e41f4b71Sopenharmony_ci取消订阅播放状态机[AVRecorderState](#avrecorderstate9)切换的事件。 4143e41f4b71Sopenharmony_ci 4144e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4145e41f4b71Sopenharmony_ci 4146e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4147e41f4b71Sopenharmony_ci 4148e41f4b71Sopenharmony_ci**参数:** 4149e41f4b71Sopenharmony_ci 4150e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4151e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 4152e41f4b71Sopenharmony_ci| type | string | 是 | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 | 4153e41f4b71Sopenharmony_ci| callback | [OnAVRecorderStateChangeHandler](#onavrecorderstatechangehandler12) | 否 | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 | 4154e41f4b71Sopenharmony_ci 4155e41f4b71Sopenharmony_ci**示例:** 4156e41f4b71Sopenharmony_ci 4157e41f4b71Sopenharmony_ci```ts 4158e41f4b71Sopenharmony_ciavRecorder.off('stateChange'); 4159e41f4b71Sopenharmony_ci``` 4160e41f4b71Sopenharmony_ci 4161e41f4b71Sopenharmony_ci### on('error')<sup>9+</sup> 4162e41f4b71Sopenharmony_ci 4163e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void 4164e41f4b71Sopenharmony_ci 4165e41f4b71Sopenharmony_ci订阅AVRecorder的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVRecorderState](#avrecorderstate9)也切至error状态,用户需要通过[reset()](#reset9-2)或者[release()](#release9-2)退出录制操作。 4166e41f4b71Sopenharmony_ci 4167e41f4b71Sopenharmony_ci用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 4168e41f4b71Sopenharmony_ci 4169e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4170e41f4b71Sopenharmony_ci 4171e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4172e41f4b71Sopenharmony_ci 4173e41f4b71Sopenharmony_ci**参数:** 4174e41f4b71Sopenharmony_ci 4175e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4176e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ | 4177e41f4b71Sopenharmony_ci| type | string | 是 | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 4178e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录制错误事件回调方法。 | 4179e41f4b71Sopenharmony_ci 4180e41f4b71Sopenharmony_ci**错误码:** 4181e41f4b71Sopenharmony_ci 4182e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4183e41f4b71Sopenharmony_ci 4184e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4185e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 4186e41f4b71Sopenharmony_ci| 201 | Permission denied. | 4187e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 4188e41f4b71Sopenharmony_ci| 801 | Capability not supported. | 4189e41f4b71Sopenharmony_ci| 5400101 | No memory. | 4190e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. | 4191e41f4b71Sopenharmony_ci| 5400103 | I/O error. | 4192e41f4b71Sopenharmony_ci| 5400104 | Time out. | 4193e41f4b71Sopenharmony_ci| 5400105 | Service died. | 4194e41f4b71Sopenharmony_ci| 5400106 | Unsupport format. | 4195e41f4b71Sopenharmony_ci| 5400107 | Audio interrupted. | 4196e41f4b71Sopenharmony_ci 4197e41f4b71Sopenharmony_ci**示例:** 4198e41f4b71Sopenharmony_ci 4199e41f4b71Sopenharmony_ci```ts 4200e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4201e41f4b71Sopenharmony_ci 4202e41f4b71Sopenharmony_ciavRecorder.on('error', (err: BusinessError) => { 4203e41f4b71Sopenharmony_ci console.info('case avRecorder.on(error) called, errMessage is ' + err.message); 4204e41f4b71Sopenharmony_ci}); 4205e41f4b71Sopenharmony_ci``` 4206e41f4b71Sopenharmony_ci 4207e41f4b71Sopenharmony_ci### off('error')<sup>9+</sup> 4208e41f4b71Sopenharmony_ci 4209e41f4b71Sopenharmony_cioff(type: 'error', callback?: ErrorCallback): void 4210e41f4b71Sopenharmony_ci 4211e41f4b71Sopenharmony_ci取消订阅录制错误事件,取消后不再接收到AVRecorder的错误事件。 4212e41f4b71Sopenharmony_ci 4213e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4214e41f4b71Sopenharmony_ci 4215e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4216e41f4b71Sopenharmony_ci 4217e41f4b71Sopenharmony_ci**参数:** 4218e41f4b71Sopenharmony_ci 4219e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4220e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 4221e41f4b71Sopenharmony_ci| type | string | 是 | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 4222e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 录制错误事件回调方法。<br/>从API version 12开始支持此参数。 | 4223e41f4b71Sopenharmony_ci 4224e41f4b71Sopenharmony_ci**示例:** 4225e41f4b71Sopenharmony_ci 4226e41f4b71Sopenharmony_ci```ts 4227e41f4b71Sopenharmony_ciavRecorder.off('error'); 4228e41f4b71Sopenharmony_ci``` 4229e41f4b71Sopenharmony_ci 4230e41f4b71Sopenharmony_ci### on('audioCapturerChange')<sup>11+</sup> 4231e41f4b71Sopenharmony_ci 4232e41f4b71Sopenharmony_cion(type: 'audioCapturerChange', callback: Callback<audio.AudioCapturerChangeInfo>): void 4233e41f4b71Sopenharmony_ci 4234e41f4b71Sopenharmony_ci订阅录音配置变化的回调,任意录音配置的变化会触发变化后的录音配置全量信息回调。 4235e41f4b71Sopenharmony_ci 4236e41f4b71Sopenharmony_ci当用户重复订阅时,以最后一次订阅的回调接口为准。 4237e41f4b71Sopenharmony_ci 4238e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4239e41f4b71Sopenharmony_ci 4240e41f4b71Sopenharmony_ci**参数:** 4241e41f4b71Sopenharmony_ci 4242e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4243e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 4244e41f4b71Sopenharmony_ci| type | string | 是 |录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 | 4245e41f4b71Sopenharmony_ci| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是 | 变化后的录音配置全量信息。| 4246e41f4b71Sopenharmony_ci 4247e41f4b71Sopenharmony_ci**错误码:** 4248e41f4b71Sopenharmony_ci 4249e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4250e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 4251e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 4252e41f4b71Sopenharmony_ci 4253e41f4b71Sopenharmony_ci**示例:** 4254e41f4b71Sopenharmony_ci 4255e41f4b71Sopenharmony_ci```ts 4256e41f4b71Sopenharmony_cilet capturerChangeInfo: audio.AudioCapturerChangeInfo; 4257e41f4b71Sopenharmony_ci 4258e41f4b71Sopenharmony_ciavRecorder.on('audioCapturerChange', (audioCapturerChangeInfo: audio.AudioCapturerChangeInfo) => { 4259e41f4b71Sopenharmony_ci console.info('audioCapturerChange called'); 4260e41f4b71Sopenharmony_ci capturerChangeInfo = audioCapturerChangeInfo; 4261e41f4b71Sopenharmony_ci}); 4262e41f4b71Sopenharmony_ci``` 4263e41f4b71Sopenharmony_ci 4264e41f4b71Sopenharmony_ci### off('audioCapturerChange')<sup>11+</sup> 4265e41f4b71Sopenharmony_ci 4266e41f4b71Sopenharmony_cioff(type: 'audioCapturerChange', callback?: Callback<audio.AudioCapturerChangeInfo>): void 4267e41f4b71Sopenharmony_ci 4268e41f4b71Sopenharmony_ci取消订阅录音变化的回调事件。 4269e41f4b71Sopenharmony_ci 4270e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4271e41f4b71Sopenharmony_ci 4272e41f4b71Sopenharmony_ci**参数:** 4273e41f4b71Sopenharmony_ci 4274e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4275e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 4276e41f4b71Sopenharmony_ci| type | string | 是 | 录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 | 4277e41f4b71Sopenharmony_ci| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 否 | 变化后的录音配置全量信息。<br/>从API version 12开始支持此参数。| 4278e41f4b71Sopenharmony_ci 4279e41f4b71Sopenharmony_ci**示例:** 4280e41f4b71Sopenharmony_ci 4281e41f4b71Sopenharmony_ci```ts 4282e41f4b71Sopenharmony_ciavRecorder.off('audioCapturerChange'); 4283e41f4b71Sopenharmony_ci``` 4284e41f4b71Sopenharmony_ci 4285e41f4b71Sopenharmony_ci### on('photoAssetAvailable')<sup>12+</sup> 4286e41f4b71Sopenharmony_ci 4287e41f4b71Sopenharmony_cion(type: 'photoAssetAvailable', callback: Callback\<photoAccessHelper.PhotoAsset>): void 4288e41f4b71Sopenharmony_ci 4289e41f4b71Sopenharmony_ci订阅媒体资源回调事件,当[FileGenerationMode](#filegenerationmode12)枚举设置为系统创建媒体文件时,会在[stop](#stop9-2)操作结束后把[PhotoAsset](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoasset)对象回调给应用。 4290e41f4b71Sopenharmony_ci 4291e41f4b71Sopenharmony_ci当用户重复订阅时,以最后一次订阅的回调接口为准。 4292e41f4b71Sopenharmony_ci 4293e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4294e41f4b71Sopenharmony_ci 4295e41f4b71Sopenharmony_ci**参数:** 4296e41f4b71Sopenharmony_ci 4297e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4298e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 4299e41f4b71Sopenharmony_ci| type | string | 是 |录像资源的回调类型,支持的事件:'photoAssetAvailable'。 | 4300e41f4b71Sopenharmony_ci| callback | Callback<[photoAccessHelper.PhotoAsset](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoasset)> | 是 | 系统创建的资源文件对应的PhotoAsset对象| 4301e41f4b71Sopenharmony_ci 4302e41f4b71Sopenharmony_ci**错误码:** 4303e41f4b71Sopenharmony_ci 4304e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4305e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 4306e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by callback. | 4307e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 4308e41f4b71Sopenharmony_ci 4309e41f4b71Sopenharmony_ci**示例:** 4310e41f4b71Sopenharmony_ci 4311e41f4b71Sopenharmony_ci```ts 4312e41f4b71Sopenharmony_ciimport { photoAccessHelper } from '@kit.MediaLibraryKit'; 4313e41f4b71Sopenharmony_cilet photoAsset: photoAccessHelper.PhotoAsset; 4314e41f4b71Sopenharmony_ci 4315e41f4b71Sopenharmony_ci// 例:处理photoAsset回调,保存video 4316e41f4b71Sopenharmony_ciasync saveVideo(asset: photoAccessHelper.PhotoAsset) { 4317e41f4b71Sopenharmony_ci console.info("saveVideo called"); 4318e41f4b71Sopenharmony_ci try { 4319e41f4b71Sopenharmony_ci let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(getContext(this)); 4320e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 4321e41f4b71Sopenharmony_ci assetChangeRequest.saveCameraPhoto(); 4322e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(assetChangeRequest); 4323e41f4b71Sopenharmony_ci console.info('apply saveVideo successfully'); 4324e41f4b71Sopenharmony_ci } catch (err) { 4325e41f4b71Sopenharmony_ci console.error(`apply saveVideo failed with error: ${err.code}, ${err.message}`); 4326e41f4b71Sopenharmony_ci } 4327e41f4b71Sopenharmony_ci} 4328e41f4b71Sopenharmony_ci// 注册photoAsset监听 4329e41f4b71Sopenharmony_ciavRecorder.on('photoAssetAvailable', (asset: photoAccessHelper.PhotoAsset) => { 4330e41f4b71Sopenharmony_ci console.info('photoAssetAvailable called'); 4331e41f4b71Sopenharmony_ci if (asset != undefined) { 4332e41f4b71Sopenharmony_ci photoAsset = asset; 4333e41f4b71Sopenharmony_ci // 处理photoAsset回调 4334e41f4b71Sopenharmony_ci // 例: this.saveVideo(asset); 4335e41f4b71Sopenharmony_ci } else { 4336e41f4b71Sopenharmony_ci console.error('photoAsset is undefined'); 4337e41f4b71Sopenharmony_ci } 4338e41f4b71Sopenharmony_ci}); 4339e41f4b71Sopenharmony_ci``` 4340e41f4b71Sopenharmony_ci 4341e41f4b71Sopenharmony_ci### off('photoAssetAvailable')<sup>12+</sup> 4342e41f4b71Sopenharmony_ci 4343e41f4b71Sopenharmony_cioff(type: 'photoAssetAvailable', callback?: Callback<photoAccessHelper.PhotoAsset>): void 4344e41f4b71Sopenharmony_ci 4345e41f4b71Sopenharmony_ci取消订阅媒体资源的回调类型。 4346e41f4b71Sopenharmony_ci 4347e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4348e41f4b71Sopenharmony_ci 4349e41f4b71Sopenharmony_ci**参数:** 4350e41f4b71Sopenharmony_ci 4351e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4352e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 4353e41f4b71Sopenharmony_ci| type | string | 是 | 录音配置变化的回调类型,支持的事件:'photoAssetAvailable'。 | 4354e41f4b71Sopenharmony_ci 4355e41f4b71Sopenharmony_ci**示例:** 4356e41f4b71Sopenharmony_ci 4357e41f4b71Sopenharmony_ci```ts 4358e41f4b71Sopenharmony_ciavRecorder.off('photoAssetAvailable'); 4359e41f4b71Sopenharmony_ci``` 4360e41f4b71Sopenharmony_ci 4361e41f4b71Sopenharmony_ci## AVRecorderState<sup>9+</sup> 4362e41f4b71Sopenharmony_ci 4363e41f4b71Sopenharmony_citype AVRecorderState = 'idle' | 'prepared' | 'started' | 'paused' | 'stopped' | 'released' | 'error' 4364e41f4b71Sopenharmony_ci 4365e41f4b71Sopenharmony_ci音视频录制的状态机。可通过state属性获取当前状态。 4366e41f4b71Sopenharmony_ci 4367e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 4368e41f4b71Sopenharmony_ci 4369e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4370e41f4b71Sopenharmony_ci 4371e41f4b71Sopenharmony_ci| 类型 | 说明 | 4372e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | 4373e41f4b71Sopenharmony_ci| 'idle' | 闲置状态。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,进入prepared状态。AVRecorder刚被创建,或者在任何非released状态下调用[AVRecorder.reset()](#reset9-2)方法,均进入idle状态。 | 4374e41f4b71Sopenharmony_ci| 'prepared' | 参数设置完成。此时可以调用[AVRecorder.start()](#start9)方法开始录制,进入started状态。 | 4375e41f4b71Sopenharmony_ci| 'started' | 正在录制。此时可以调用[AVRecorder.pause()](#pause9-2)方法暂停录制,进入paused状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 | 4376e41f4b71Sopenharmony_ci| 'paused' | 录制暂停。此时可以调用[AVRecorder.resume()](#resume9)方法继续录制,进入started状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 | 4377e41f4b71Sopenharmony_ci| 'stopped' | 录制停止。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,重新进入prepared状态。 | 4378e41f4b71Sopenharmony_ci| 'released' | 录制资源释放。此时不能再进行任何操作。在任何其他状态下,均可以通过调用[AVRecorder.release()](#release9-2)方法进入released状态。 | 4379e41f4b71Sopenharmony_ci| 'error' | 错误状态。当AVRecorder实例发生不可逆错误,会转换至当前状态。切换至error状态时会伴随[AVRecorder.on('error')事件](#onerror9-1),该事件会上报详细错误原因。在error状态时,用户需要调用[AVRecorder.reset()](#reset9-2)方法重置AVRecorder实例,或者调用[AVRecorder.release()](#release9-2)方法释放资源。 | 4380e41f4b71Sopenharmony_ci 4381e41f4b71Sopenharmony_ci## OnAVRecorderStateChangeHandler<sup>12+</sup> 4382e41f4b71Sopenharmony_ci 4383e41f4b71Sopenharmony_citype OnAVRecorderStateChangeHandler = (state: AVRecorderState, reason: StateChangeReason) => void 4384e41f4b71Sopenharmony_ci 4385e41f4b71Sopenharmony_ci状态机切换事件回调方法。 4386e41f4b71Sopenharmony_ci 4387e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 4388e41f4b71Sopenharmony_ci 4389e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer 4390e41f4b71Sopenharmony_ci 4391e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4392e41f4b71Sopenharmony_ci| ------ | ------ | ------ | ------------------------------------------------------------ | 4393e41f4b71Sopenharmony_ci| state | [AVRecorderState](#avrecorderstate9) | 必填 | 当前播放状态。 | 4394e41f4b71Sopenharmony_ci| reason | [StateChangeReason](#statechangereason9) | 必填 | 当前播放状态的切换原因。 | 4395e41f4b71Sopenharmony_ci 4396e41f4b71Sopenharmony_ci## AVRecorderConfig<sup>9+</sup> 4397e41f4b71Sopenharmony_ci 4398e41f4b71Sopenharmony_ci表示音视频录制的参数设置。 4399e41f4b71Sopenharmony_ci 4400e41f4b71Sopenharmony_ci通过audioSourceType和videoSourceType区分纯音频录制、纯视频录制或音视频录制。纯音频录制时,仅需要设置audioSourceType;纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。 4401e41f4b71Sopenharmony_ci 4402e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4403e41f4b71Sopenharmony_ci 4404e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 4405e41f4b71Sopenharmony_ci| --------------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | 4406e41f4b71Sopenharmony_ci| audioSourceType | [AudioSourceType](#audiosourcetype9) | 否 | 选择录制的音频源类型。选择音频录制时必填。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。| 4407e41f4b71Sopenharmony_ci| videoSourceType | [VideoSourceType](#videosourcetype9) | 否 | 选择录制的视频源类型。选择视频录制时必填。 | 4408e41f4b71Sopenharmony_ci| profile | [AVRecorderProfile](#avrecorderprofile9) | 是 | 录制的profile,必要参数。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。| 4409e41f4b71Sopenharmony_ci| url | string | 是 | 录制输出URL:fd://xx (fd number) ,必要参数。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4410e41f4b71Sopenharmony_ci|fileGenerationMode<sup>12+</sup> | [FileGenerationMode](#filegenerationmode12) | 否 | 创建媒体文件的模式,配合[on('photoAssetAvailable')](#onphotoassetavailable12)监听使用。| 4411e41f4b71Sopenharmony_ci| rotation<sup>(deprecated)</sup> | number | 否 | 录制的视频旋转角度,mp4格式支持0,90,180,270,默认值为0。<br>从API version 6开始支持,从API version 12开始废弃。建议使用[AVMetadata](#avmetadata11).videoOrientation替代。如果同时设置两个值,将会采用[AVMetadata](#avmetadata11).videoOrientation。 | 4412e41f4b71Sopenharmony_ci| location<sup>(deprecated)</sup> | [Location](#location) | 否 | 录制的地理位置,默认不记录地理位置信息。<br>从API version 6开始支持,从API version 12开始废弃。建议使用 [AVMetadata](#avmetadata11).location。如果同时设置两个值,将会采用[AVMetadata](#avmetadata11).location。 | 4413e41f4b71Sopenharmony_ci| metadata<sup>12+</sup> | [AVMetadata](#avmetadata11) | 否 | 设置元数据信息。详情见 [AVMetadata](#avmetadata11)。 | 4414e41f4b71Sopenharmony_ci 4415e41f4b71Sopenharmony_ci## AVRecorderProfile<sup>9+</sup> 4416e41f4b71Sopenharmony_ci 4417e41f4b71Sopenharmony_ci音视频录制的配置文件。 4418e41f4b71Sopenharmony_ci 4419e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4420e41f4b71Sopenharmony_ci 4421e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 4422e41f4b71Sopenharmony_ci| ---------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | 4423e41f4b71Sopenharmony_ci| 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 开始,该接口支持在原子化服务中使用。 | 4424e41f4b71Sopenharmony_ci| audioChannels | number | 否 | 音频采集声道数,选择音频录制时必填。<br>- AAC编码格式支持范围[1 - 8]。<br>- G711-mulaw编码格式支持范围[1 - 1]。<br>- MP3编码格式支持范围[1 - 2]。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4425e41f4b71Sopenharmony_ci| audioCodec | [CodecMimeType](#codecmimetype8) | 否 | 音频编码格式,选择音频录制时必填。当前支持AUDIO_AAC,AUDIO_MP3,AUDIO_G711MU。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4426e41f4b71Sopenharmony_ci| 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 开始,该接口支持在原子化服务中使用。 | 4427e41f4b71Sopenharmony_ci| fileFormat | [ContainerFormatType](#containerformattype8) | 是 | 文件的容器格式,必要参数。当前支持MP4、M4A、MP3、WAV封装格式,不支持在MP4封装格式下使用AUDIO_MP3编码格式。<br>**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。| 4428e41f4b71Sopenharmony_ci| videoBitrate | number | 否 | 视频编码比特率,选择视频录制时必填,支持范围[10000 - 100000000]。 | 4429e41f4b71Sopenharmony_ci| videoCodec | [CodecMimeType](#codecmimetype8) | 否 | 视频编码格式,选择视频录制时必填。当前支持VIDEO_AVC。| 4430e41f4b71Sopenharmony_ci| videoFrameWidth | number | 否 | 视频帧的宽,选择视频录制时必填,支持范围[176 - 4096]。 | 4431e41f4b71Sopenharmony_ci| videoFrameHeight | number | 否 | 视频帧的高,选择视频录制时必填,支持范围[144 - 4096]。 | 4432e41f4b71Sopenharmony_ci| videoFrameRate | number | 否 | 视频帧率,选择视频录制时必填,支持范围[1 - 60]。 | 4433e41f4b71Sopenharmony_ci| isHdr<sup>11+</sup> | boolean | 否 | HDR编码,选择视频录制时选填,isHdr默认为false,对应编码格式没有要求,isHdr为true时,对应的编码格式必须为video/hevc。| 4434e41f4b71Sopenharmony_ci| enableTemporalScale<sup>12+</sup> | boolean | 否 | 视频录制是否支持时域分层编码功能,选择视频录制时选填,enableTemporalScale默认为false。设置为true时,编码输出的码流中部分帧可以支持跳过不编码。| 4435e41f4b71Sopenharmony_ci 4436e41f4b71Sopenharmony_ci## AudioSourceType<sup>9+</sup> 4437e41f4b71Sopenharmony_ci 4438e41f4b71Sopenharmony_ci表示视频录制中音频源类型的枚举。 4439e41f4b71Sopenharmony_ci 4440e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4441e41f4b71Sopenharmony_ci 4442e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 4443e41f4b71Sopenharmony_ci| ------------------------- | ---- | ---------------------- | 4444e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_DEFAULT | 0 | 默认的音频输入源类型。 | 4445e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_MIC | 1 | 表示MIC的音频输入源。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4446e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_VOICE_RECOGNITION<sup>12+</sup> | 2 | 表示语音识别场景的音频源。 | 4447e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_VOICE_COMMUNICATION<sup>12+</sup> | 7 | 表示语音通话场景的音频源。 | 4448e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_VOICE_MESSAGE<sup>12+</sup> | 10 | 表示短语音消息的音频源。 | 4449e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_CAMCORDER<sup>12+</sup> | 13 | 表示相机录像的音频源。 | 4450e41f4b71Sopenharmony_ci 4451e41f4b71Sopenharmony_ci## VideoSourceType<sup>9+</sup> 4452e41f4b71Sopenharmony_ci 4453e41f4b71Sopenharmony_ci表示视频录制中视频源类型的枚举。 4454e41f4b71Sopenharmony_ci 4455e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4456e41f4b71Sopenharmony_ci 4457e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 4458e41f4b71Sopenharmony_ci| ----------------------------- | ---- | ------------------------------- | 4459e41f4b71Sopenharmony_ci| VIDEO_SOURCE_TYPE_SURFACE_YUV | 0 | 输入surface中携带的是raw data。 | 4460e41f4b71Sopenharmony_ci| VIDEO_SOURCE_TYPE_SURFACE_ES | 1 | 输入surface中携带的是ES data。 | 4461e41f4b71Sopenharmony_ci 4462e41f4b71Sopenharmony_ci## ContainerFormatType<sup>8+</sup> 4463e41f4b71Sopenharmony_ci 4464e41f4b71Sopenharmony_ci表示容器格式类型的枚举,缩写为CFT。 4465e41f4b71Sopenharmony_ci 4466e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 4467e41f4b71Sopenharmony_ci 4468e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 4469e41f4b71Sopenharmony_ci| ----------- | ----- | --------------------- | 4470e41f4b71Sopenharmony_ci| CFT_MPEG_4 | 'mp4' | 视频的容器格式,MP4。 | 4471e41f4b71Sopenharmony_ci| CFT_MPEG_4A | 'm4a' | 音频的容器格式,M4A。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 | 4472e41f4b71Sopenharmony_ci| CFT_MP3<sup>12+</sup> | 'mp3' | 音频的容器格式,MP3。 | 4473e41f4b71Sopenharmony_ci| CFT_WAV<sup>12+</sup> | 'wav' | 音频的容器格式,WAV。 | 4474e41f4b71Sopenharmony_ci 4475e41f4b71Sopenharmony_ci## Location 4476e41f4b71Sopenharmony_ci 4477e41f4b71Sopenharmony_ci视频录制的地理位置。 4478e41f4b71Sopenharmony_ci 4479e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 4480e41f4b71Sopenharmony_ci 4481e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 4482e41f4b71Sopenharmony_ci| --------- | ------ | ---- | ---------------- | 4483e41f4b71Sopenharmony_ci| latitude | number | 是 | 地理位置的纬度。 | 4484e41f4b71Sopenharmony_ci| longitude | number | 是 | 地理位置的经度。 | 4485e41f4b71Sopenharmony_ci 4486e41f4b71Sopenharmony_ci## EncoderInfo<sup>11+</sup> 4487e41f4b71Sopenharmony_ci 4488e41f4b71Sopenharmony_ci编码器和规格参数 4489e41f4b71Sopenharmony_ci 4490e41f4b71Sopenharmony_ci系统能力:SystemCapability.Multimedia.Media.AVRecorder 4491e41f4b71Sopenharmony_ci 4492e41f4b71Sopenharmony_ci| 名称 | 类型 | 可读 | 可写 | 说明 | 4493e41f4b71Sopenharmony_ci| ---------- | -------------------------------- | ---- | ---- | ------------------------------------------------------------ | 4494e41f4b71Sopenharmony_ci| mimeType | [CodecMimeType](#codecmimetype8) | 是 | 否 | 编码器MIME类型名称 | 4495e41f4b71Sopenharmony_ci| type | string | 是 | 否 | 编码器类型,audio表示音频编码器,video表示视频编码器 | 4496e41f4b71Sopenharmony_ci| bitRate | [Range](#range11) | 是 | 否 | 比特率,包含该编码器的最大和最小值 | 4497e41f4b71Sopenharmony_ci| frameRate | [Range](#range11) | 是 | 否 | 视频帧率,包含帧率的最大和最小值,仅视频编码器拥有 | 4498e41f4b71Sopenharmony_ci| width | [Range](#range11) | 是 | 否 | 视频帧的宽度,包含宽度的最大和最小值,仅视频编码器拥有 | 4499e41f4b71Sopenharmony_ci| height | [Range](#range11) | 是 | 否 | 视频帧的高度,包含高度的最大和最小值,仅视频编码器拥有 | 4500e41f4b71Sopenharmony_ci| channels | [Range](#range11) | 是 | 否 | 音频采集声道数,包含声道数的最大和最小值,仅音频编码器拥有 | 4501e41f4b71Sopenharmony_ci| sampleRate | Array\<number> | 是 | 否 | 音频采样率,包含所有可以使用的音频采样率值,仅音频编码器拥有 | 4502e41f4b71Sopenharmony_ci 4503e41f4b71Sopenharmony_ci## Range<sup>11+</sup> 4504e41f4b71Sopenharmony_ci 4505e41f4b71Sopenharmony_ci表示一个类型的范围 4506e41f4b71Sopenharmony_ci 4507e41f4b71Sopenharmony_ci系统能力:SystemCapability.Multimedia.Media.AVRecorder 4508e41f4b71Sopenharmony_ci 4509e41f4b71Sopenharmony_ci| 名称 | 类型 | 可读 | 可写 | 说明 | 4510e41f4b71Sopenharmony_ci| ---- | ------ | ---- | ---- | ------------ | 4511e41f4b71Sopenharmony_ci| min | number | 是 | 否 | 范围的最小值 | 4512e41f4b71Sopenharmony_ci| max | number | 是 | 否 | 范围的最大值 | 4513e41f4b71Sopenharmony_ci 4514e41f4b71Sopenharmony_ci## FileGenerationMode<sup>12+</sup> 4515e41f4b71Sopenharmony_ci 4516e41f4b71Sopenharmony_ci表示创建媒体文件模式的枚举。 4517e41f4b71Sopenharmony_ci 4518e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 4519e41f4b71Sopenharmony_ci 4520e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 4521e41f4b71Sopenharmony_ci| ----------------------------- | ---- | ------------------------------- | 4522e41f4b71Sopenharmony_ci| APP_CREATE | 0 | 由应用自行在沙箱创建媒体文件。 | 4523e41f4b71Sopenharmony_ci| AUTO_CREATE_CAMERA_SCENE | 1 | 由系统创建媒体文件,当前仅在相机录制场景下生效,会忽略应用设置的url。 | 4524e41f4b71Sopenharmony_ci 4525e41f4b71Sopenharmony_ci## AVTranscoder<sup>12+</sup> 4526e41f4b71Sopenharmony_ci 4527e41f4b71Sopenharmony_ci视频转码管理类,用于视频转码。在调用AVTranscoder的方法前,需要先通过createAVTranscoder()构建一个AVTranscoder实例。 4528e41f4b71Sopenharmony_ci 4529e41f4b71Sopenharmony_ci视频转码demo可参考:[视频转码开发指导](../../media/media/using-avtranscoder-for-transcodering.md) 4530e41f4b71Sopenharmony_ci 4531e41f4b71Sopenharmony_ci### 属性 4532e41f4b71Sopenharmony_ci 4533e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4534e41f4b71Sopenharmony_ci 4535e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 4536e41f4b71Sopenharmony_ci| ------- | ------------------------------------ | ---- | ---- | ------------------ | 4537e41f4b71Sopenharmony_ci| fdSrc<sup>12+</sup> | [AVFileDescriptor](#avfiledescriptor9) | 否 | 否 | 源媒体文件描述,通过该属性设置数据源。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。 | 4538e41f4b71Sopenharmony_ci| fdDst<sup>12+</sup> | number | 否 | 否 | 目标媒体文件描述,通过该属性设置数据输出。在创建AVTranscoder实例后,必须设置fdSrc和fdDst属性。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。 | 4539e41f4b71Sopenharmony_ci 4540e41f4b71Sopenharmony_ci### prepare<sup>12+</sup> 4541e41f4b71Sopenharmony_ci 4542e41f4b71Sopenharmony_ciprepare(config: AVTranscoderConfig): Promise\<void> 4543e41f4b71Sopenharmony_ci 4544e41f4b71Sopenharmony_ci异步方式进行视频转码的参数设置。通过Promise获取返回值。 4545e41f4b71Sopenharmony_ci 4546e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4547e41f4b71Sopenharmony_ci 4548e41f4b71Sopenharmony_ci**参数:** 4549e41f4b71Sopenharmony_ci 4550e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4551e41f4b71Sopenharmony_ci| ------ | -------------------------------------- | ---- | -------------------------- | 4552e41f4b71Sopenharmony_ci| config | [AVTranscoderConfig](#avtranscoderconfig12) | 是 | 配置视频转码的相关参数。 | 4553e41f4b71Sopenharmony_ci 4554e41f4b71Sopenharmony_ci**返回值:** 4555e41f4b71Sopenharmony_ci 4556e41f4b71Sopenharmony_ci| 类型 | 说明 | 4557e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ | 4558e41f4b71Sopenharmony_ci| Promise\<void> | 异步视频转码prepare方法的Promise返回值。 | 4559e41f4b71Sopenharmony_ci 4560e41f4b71Sopenharmony_ci**错误码:** 4561e41f4b71Sopenharmony_ci 4562e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4563e41f4b71Sopenharmony_ci 4564e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4565e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 4566e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. | 4567e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 4568e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 4569e41f4b71Sopenharmony_ci| 5400106 | Unsupported format. Returned by promise. | 4570e41f4b71Sopenharmony_ci 4571e41f4b71Sopenharmony_ci**示例:** 4572e41f4b71Sopenharmony_ci 4573e41f4b71Sopenharmony_ci```ts 4574e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4575e41f4b71Sopenharmony_ci 4576e41f4b71Sopenharmony_ci// 配置参数以实际硬件设备支持的范围为准 4577e41f4b71Sopenharmony_cilet avTranscoderConfig: media.AVTranscoderConfig = { 4578e41f4b71Sopenharmony_ci audioBitrate : 200000, 4579e41f4b71Sopenharmony_ci audioCodec : media.CodecMimeType.AUDIO_AAC, 4580e41f4b71Sopenharmony_ci fileFormat : media.ContainerFormatType.CFT_MPEG_4, 4581e41f4b71Sopenharmony_ci videoBitrate : 3000000, 4582e41f4b71Sopenharmony_ci videoCodec : media.CodecMimeType.VIDEO_AVC, 4583e41f4b71Sopenharmony_ci videoFrameWidth : 1280, 4584e41f4b71Sopenharmony_ci videoFrameHeight : 720, 4585e41f4b71Sopenharmony_ci} 4586e41f4b71Sopenharmony_ci 4587e41f4b71Sopenharmony_ciavTranscoder.prepare(avTranscoderConfig).then(() => { 4588e41f4b71Sopenharmony_ci console.info('prepare success'); 4589e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 4590e41f4b71Sopenharmony_ci console.error('prepare failed and catch error is ' + err.message); 4591e41f4b71Sopenharmony_ci}); 4592e41f4b71Sopenharmony_ci``` 4593e41f4b71Sopenharmony_ci 4594e41f4b71Sopenharmony_ci### start<sup>12+</sup> 4595e41f4b71Sopenharmony_ci 4596e41f4b71Sopenharmony_cistart(): Promise\<void> 4597e41f4b71Sopenharmony_ci 4598e41f4b71Sopenharmony_ci异步方式开始视频转码。通过Promise获取返回值。 4599e41f4b71Sopenharmony_ci 4600e41f4b71Sopenharmony_ci需要[prepare()](#prepare12)事件成功触发后,才能调用start方法。 4601e41f4b71Sopenharmony_ci 4602e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4603e41f4b71Sopenharmony_ci 4604e41f4b71Sopenharmony_ci**返回值:** 4605e41f4b71Sopenharmony_ci 4606e41f4b71Sopenharmony_ci| 类型 | 说明 | 4607e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 4608e41f4b71Sopenharmony_ci| Promise\<void> | 异步开始视频转码方法的Promise返回值。 | 4609e41f4b71Sopenharmony_ci 4610e41f4b71Sopenharmony_ci**错误码:** 4611e41f4b71Sopenharmony_ci 4612e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4613e41f4b71Sopenharmony_ci 4614e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4615e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 4616e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 4617e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 4618e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 4619e41f4b71Sopenharmony_ci 4620e41f4b71Sopenharmony_ci**示例:** 4621e41f4b71Sopenharmony_ci 4622e41f4b71Sopenharmony_ci```ts 4623e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4624e41f4b71Sopenharmony_ci 4625e41f4b71Sopenharmony_ciavTranscoder.start().then(() => { 4626e41f4b71Sopenharmony_ci console.info('start AVTranscoder success'); 4627e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 4628e41f4b71Sopenharmony_ci console.error('start AVTranscoder failed and catch error is ' + err.message); 4629e41f4b71Sopenharmony_ci}); 4630e41f4b71Sopenharmony_ci``` 4631e41f4b71Sopenharmony_ci 4632e41f4b71Sopenharmony_ci### pause<sup>12+</sup> 4633e41f4b71Sopenharmony_ci 4634e41f4b71Sopenharmony_cipause(): Promise\<void> 4635e41f4b71Sopenharmony_ci 4636e41f4b71Sopenharmony_ci异步方式暂停视频转码。通过Promise获取返回值。 4637e41f4b71Sopenharmony_ci 4638e41f4b71Sopenharmony_ci需要[start()](#start12)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume12)接口来恢复转码。 4639e41f4b71Sopenharmony_ci 4640e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4641e41f4b71Sopenharmony_ci 4642e41f4b71Sopenharmony_ci**返回值:** 4643e41f4b71Sopenharmony_ci 4644e41f4b71Sopenharmony_ci| 类型 | 说明 | 4645e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 4646e41f4b71Sopenharmony_ci| Promise\<void> | 异步暂停视频转码方法的Promise返回值。 | 4647e41f4b71Sopenharmony_ci 4648e41f4b71Sopenharmony_ci**错误码:** 4649e41f4b71Sopenharmony_ci 4650e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4651e41f4b71Sopenharmony_ci 4652e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4653e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 4654e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 4655e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 4656e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 4657e41f4b71Sopenharmony_ci 4658e41f4b71Sopenharmony_ci**示例:** 4659e41f4b71Sopenharmony_ci 4660e41f4b71Sopenharmony_ci```ts 4661e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4662e41f4b71Sopenharmony_ci 4663e41f4b71Sopenharmony_ciavTranscoder.pause().then(() => { 4664e41f4b71Sopenharmony_ci console.info('pause AVTranscoder success'); 4665e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 4666e41f4b71Sopenharmony_ci console.error('pause AVTranscoder failed and catch error is ' + err.message); 4667e41f4b71Sopenharmony_ci}); 4668e41f4b71Sopenharmony_ci``` 4669e41f4b71Sopenharmony_ci 4670e41f4b71Sopenharmony_ci### resume<sup>12+</sup> 4671e41f4b71Sopenharmony_ci 4672e41f4b71Sopenharmony_ciresume(): Promise\<void> 4673e41f4b71Sopenharmony_ci 4674e41f4b71Sopenharmony_ci异步方式恢复视频转码。通过Promise获取返回值。 4675e41f4b71Sopenharmony_ci 4676e41f4b71Sopenharmony_ci需要在[pause()](#pause12)事件成功触发后,才能调用resume方法。 4677e41f4b71Sopenharmony_ci 4678e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4679e41f4b71Sopenharmony_ci 4680e41f4b71Sopenharmony_ci**返回值:** 4681e41f4b71Sopenharmony_ci 4682e41f4b71Sopenharmony_ci| 类型 | 说明 | 4683e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 4684e41f4b71Sopenharmony_ci| Promise\<void> | 异步恢复视频转码方法的Promise返回值。 | 4685e41f4b71Sopenharmony_ci 4686e41f4b71Sopenharmony_ci**错误码:** 4687e41f4b71Sopenharmony_ci 4688e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4689e41f4b71Sopenharmony_ci 4690e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4691e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 4692e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 4693e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 4694e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 4695e41f4b71Sopenharmony_ci 4696e41f4b71Sopenharmony_ci**示例:** 4697e41f4b71Sopenharmony_ci 4698e41f4b71Sopenharmony_ci```ts 4699e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4700e41f4b71Sopenharmony_ci 4701e41f4b71Sopenharmony_ciavTranscoder.resume().then(() => { 4702e41f4b71Sopenharmony_ci console.info('resume AVTranscoder success'); 4703e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 4704e41f4b71Sopenharmony_ci console.error('resume AVTranscoder failed and catch error is ' + err.message); 4705e41f4b71Sopenharmony_ci}); 4706e41f4b71Sopenharmony_ci``` 4707e41f4b71Sopenharmony_ci 4708e41f4b71Sopenharmony_ci### cancel<sup>12+</sup> 4709e41f4b71Sopenharmony_ci 4710e41f4b71Sopenharmony_cicancel(): Promise\<void> 4711e41f4b71Sopenharmony_ci 4712e41f4b71Sopenharmony_ci异步方式取消视频转码。通过Promise获取返回值。 4713e41f4b71Sopenharmony_ci 4714e41f4b71Sopenharmony_ci需要在[prepare()](#prepare12)、[start()](#start12)、[pause()](#pause12)或[resume()](#resume12)事件成功触发后,才能调用cancel方法。 4715e41f4b71Sopenharmony_ci 4716e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4717e41f4b71Sopenharmony_ci 4718e41f4b71Sopenharmony_ci**返回值:** 4719e41f4b71Sopenharmony_ci 4720e41f4b71Sopenharmony_ci| 类型 | 说明 | 4721e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 4722e41f4b71Sopenharmony_ci| Promise\<void> | 异步取消视频转码方法的Promise返回值。 | 4723e41f4b71Sopenharmony_ci 4724e41f4b71Sopenharmony_ci**错误码:** 4725e41f4b71Sopenharmony_ci 4726e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4727e41f4b71Sopenharmony_ci 4728e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4729e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 4730e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 4731e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 4732e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 4733e41f4b71Sopenharmony_ci 4734e41f4b71Sopenharmony_ci**示例:** 4735e41f4b71Sopenharmony_ci 4736e41f4b71Sopenharmony_ci```ts 4737e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4738e41f4b71Sopenharmony_ci 4739e41f4b71Sopenharmony_ciavTranscoder.cancel().then(() => { 4740e41f4b71Sopenharmony_ci console.info('cancel AVTranscoder success'); 4741e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 4742e41f4b71Sopenharmony_ci console.error('cancel AVTranscoder failed and catch error is ' + err.message); 4743e41f4b71Sopenharmony_ci}); 4744e41f4b71Sopenharmony_ci``` 4745e41f4b71Sopenharmony_ci 4746e41f4b71Sopenharmony_ci### release<sup>12+</sup> 4747e41f4b71Sopenharmony_ci 4748e41f4b71Sopenharmony_cirelease(): Promise\<void> 4749e41f4b71Sopenharmony_ci 4750e41f4b71Sopenharmony_ci异步方式释放视频转码资源。通过Promise获取返回值。 4751e41f4b71Sopenharmony_ci 4752e41f4b71Sopenharmony_ci释放视频转码资源之后,该AVTranscoder实例不能再进行任何操作。 4753e41f4b71Sopenharmony_ci 4754e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4755e41f4b71Sopenharmony_ci 4756e41f4b71Sopenharmony_ci**返回值:** 4757e41f4b71Sopenharmony_ci 4758e41f4b71Sopenharmony_ci| 类型 | 说明 | 4759e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------- | 4760e41f4b71Sopenharmony_ci| Promise\<void> | 异步释放视频转码资源方法的Promise返回值。 | 4761e41f4b71Sopenharmony_ci 4762e41f4b71Sopenharmony_ci**错误码:** 4763e41f4b71Sopenharmony_ci 4764e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4765e41f4b71Sopenharmony_ci 4766e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4767e41f4b71Sopenharmony_ci| -------- | --------------------------------- | 4768e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 4769e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 4770e41f4b71Sopenharmony_ci 4771e41f4b71Sopenharmony_ci**示例:** 4772e41f4b71Sopenharmony_ci 4773e41f4b71Sopenharmony_ci```ts 4774e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4775e41f4b71Sopenharmony_ci 4776e41f4b71Sopenharmony_ciavTranscoder.release().then(() => { 4777e41f4b71Sopenharmony_ci console.info('release AVTranscoder success'); 4778e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 4779e41f4b71Sopenharmony_ci console.error('release AVTranscoder failed and catch error is ' + err.message); 4780e41f4b71Sopenharmony_ci}); 4781e41f4b71Sopenharmony_ci``` 4782e41f4b71Sopenharmony_ci 4783e41f4b71Sopenharmony_ci### on('progressUpdate')<sup>12+</sup> 4784e41f4b71Sopenharmony_ci 4785e41f4b71Sopenharmony_cion(type: 'progressUpdate', callback: Callback\<number>): void 4786e41f4b71Sopenharmony_ci 4787e41f4b71Sopenharmony_ci注册转码进度更新事件,并通过注册的回调方法通知用户。用户只能注册一个进度更新事件的回调方法,当用户重复注册时,以最后一次注册的回调接口为准。 4788e41f4b71Sopenharmony_ci 4789e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4790e41f4b71Sopenharmony_ci 4791e41f4b71Sopenharmony_ci**参数:** 4792e41f4b71Sopenharmony_ci 4793e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4794e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 4795e41f4b71Sopenharmony_ci| type | string | 是 | 进度更新事件回调类型,支持的事件:'progressUpdate',在转码过程中系统会自动触发此事件。 | 4796e41f4b71Sopenharmony_ci| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 是 | 进度更新事件回调方法,progress: number,表示当前转码进度 | 4797e41f4b71Sopenharmony_ci 4798e41f4b71Sopenharmony_ci**示例:** 4799e41f4b71Sopenharmony_ci 4800e41f4b71Sopenharmony_ci```ts 4801e41f4b71Sopenharmony_ciavTranscoder.on('progressUpdate', (progress: number) => { 4802e41f4b71Sopenharmony_ci console.info('avTranscoder progressUpdate = ' + progress); 4803e41f4b71Sopenharmony_ci}); 4804e41f4b71Sopenharmony_ci``` 4805e41f4b71Sopenharmony_ci 4806e41f4b71Sopenharmony_ci### off('progressUpdate')<sup>12+</sup> 4807e41f4b71Sopenharmony_ci 4808e41f4b71Sopenharmony_cioff(type:'progressUpdate', callback?: Callback\<number>): void 4809e41f4b71Sopenharmony_ci 4810e41f4b71Sopenharmony_ci取消注册转码进度更新事件。 4811e41f4b71Sopenharmony_ci 4812e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4813e41f4b71Sopenharmony_ci 4814e41f4b71Sopenharmony_ci**参数:** 4815e41f4b71Sopenharmony_ci 4816e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4817e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 4818e41f4b71Sopenharmony_ci| type | string | 是 | 进度更新事件回调类型,支持的事件:'progressUpdate',用户操作和系统都会触发此事件。 | 4819e41f4b71Sopenharmony_ci| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 否 | 已注册的进度更新事件回调。由于当前回调注册时,仅会保留最后一次注册的回调,建议此参数缺省。 | 4820e41f4b71Sopenharmony_ci 4821e41f4b71Sopenharmony_ci**示例:** 4822e41f4b71Sopenharmony_ci 4823e41f4b71Sopenharmony_ci```ts 4824e41f4b71Sopenharmony_ciavTranscoder.off('progressUpdate'); 4825e41f4b71Sopenharmony_ci``` 4826e41f4b71Sopenharmony_ci 4827e41f4b71Sopenharmony_ci### on('error')<sup>12+</sup> 4828e41f4b71Sopenharmony_ci 4829e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void 4830e41f4b71Sopenharmony_ci 4831e41f4b71Sopenharmony_ci注册AVtranscoder的错误事件,该事件仅用于错误提示。如果AVTranscoder上报error事件,用户需要通过[release()](#release12)退出转码操作。 4832e41f4b71Sopenharmony_ci 4833e41f4b71Sopenharmony_ci用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。 4834e41f4b71Sopenharmony_ci 4835e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4836e41f4b71Sopenharmony_ci 4837e41f4b71Sopenharmony_ci**参数:** 4838e41f4b71Sopenharmony_ci 4839e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4840e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ | 4841e41f4b71Sopenharmony_ci| type | string | 是 | 转码错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 | 4842e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 转码错误事件回调方法。 | 4843e41f4b71Sopenharmony_ci 4844e41f4b71Sopenharmony_ci**错误码:** 4845e41f4b71Sopenharmony_ci 4846e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。 4847e41f4b71Sopenharmony_ci 4848e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4849e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 4850e41f4b71Sopenharmony_ci| 401 | The parameter check failed. | 4851e41f4b71Sopenharmony_ci| 801 | Capability not supported. | 4852e41f4b71Sopenharmony_ci| 5400101 | No memory. | 4853e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. | 4854e41f4b71Sopenharmony_ci| 5400103 | I/O error. | 4855e41f4b71Sopenharmony_ci| 5400104 | Time out. | 4856e41f4b71Sopenharmony_ci| 5400105 | Service died. | 4857e41f4b71Sopenharmony_ci| 5400106 | Unsupport format. | 4858e41f4b71Sopenharmony_ci 4859e41f4b71Sopenharmony_ci**示例:** 4860e41f4b71Sopenharmony_ci 4861e41f4b71Sopenharmony_ci```ts 4862e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4863e41f4b71Sopenharmony_ci 4864e41f4b71Sopenharmony_ciavTranscoder.on('error', (err: BusinessError) => { 4865e41f4b71Sopenharmony_ci console.info('case avTranscoder.on(error) called, errMessage is ' + err.message); 4866e41f4b71Sopenharmony_ci}); 4867e41f4b71Sopenharmony_ci``` 4868e41f4b71Sopenharmony_ci 4869e41f4b71Sopenharmony_ci### off('error')<sup>12+</sup> 4870e41f4b71Sopenharmony_ci 4871e41f4b71Sopenharmony_cioff(type:'error', callback?: ErrorCallback): void 4872e41f4b71Sopenharmony_ci 4873e41f4b71Sopenharmony_ci取消注册转码错误事件,取消后不再接收到AVTranscoder的错误事件。 4874e41f4b71Sopenharmony_ci 4875e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4876e41f4b71Sopenharmony_ci 4877e41f4b71Sopenharmony_ci**参数:** 4878e41f4b71Sopenharmony_ci 4879e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4880e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 4881e41f4b71Sopenharmony_ci| type | string | 是 | 转码错误事件回调类型'error'。 <br>- 'error':转码过程中发生错误,触发该事件。 | 4882e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 错误事件回调方法 | 4883e41f4b71Sopenharmony_ci 4884e41f4b71Sopenharmony_ci**示例:** 4885e41f4b71Sopenharmony_ci 4886e41f4b71Sopenharmony_ci```ts 4887e41f4b71Sopenharmony_ciavTranscoder.off('error'); 4888e41f4b71Sopenharmony_ci``` 4889e41f4b71Sopenharmony_ci 4890e41f4b71Sopenharmony_ci### on('complete')<sup>12+</sup> 4891e41f4b71Sopenharmony_ci 4892e41f4b71Sopenharmony_cion(type: 'complete', callback: Callback\<void>): void 4893e41f4b71Sopenharmony_ci 4894e41f4b71Sopenharmony_ci注册转码完成事件,并通过注册的回调方法通知用户。用户只能注册一个进度更新事件的回调方法,当用户重复注册时,以最后一次注册的回调接口为准。 4895e41f4b71Sopenharmony_ci 4896e41f4b71Sopenharmony_ci当AVTranscoder上报complete事件时,当前转码操作已完成,用户可通过[release()](#release12)退出转码操作。 4897e41f4b71Sopenharmony_ci 4898e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4899e41f4b71Sopenharmony_ci 4900e41f4b71Sopenharmony_ci**参数:** 4901e41f4b71Sopenharmony_ci 4902e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4903e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 4904e41f4b71Sopenharmony_ci| type | string | 是 | 完成事件回调类型,支持的事件:'complete',在转码过程中系统会自动触发此事件。 | 4905e41f4b71Sopenharmony_ci| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 是 | 完成事件回调方法 | 4906e41f4b71Sopenharmony_ci 4907e41f4b71Sopenharmony_ci**示例:** 4908e41f4b71Sopenharmony_ci 4909e41f4b71Sopenharmony_ci```ts 4910e41f4b71Sopenharmony_ciavTranscoder.on('complete', () => { 4911e41f4b71Sopenharmony_ci console.info('avTranscoder complete'); 4912e41f4b71Sopenharmony_ci}); 4913e41f4b71Sopenharmony_ci``` 4914e41f4b71Sopenharmony_ci 4915e41f4b71Sopenharmony_ci### off('complete')<sup>12+</sup> 4916e41f4b71Sopenharmony_ci 4917e41f4b71Sopenharmony_cioff(type:'complete', callback?: Callback\<void>): void 4918e41f4b71Sopenharmony_ci 4919e41f4b71Sopenharmony_ci取消注册转码完成事件。 4920e41f4b71Sopenharmony_ci 4921e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4922e41f4b71Sopenharmony_ci 4923e41f4b71Sopenharmony_ci**参数:** 4924e41f4b71Sopenharmony_ci 4925e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4926e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 4927e41f4b71Sopenharmony_ci| type | string | 是 | 转码完成事件回调类型,支持的事件:'complete',用户操作和系统都会触发此事件。 | 4928e41f4b71Sopenharmony_ci| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 否 | 完成事件回调方法 | 4929e41f4b71Sopenharmony_ci 4930e41f4b71Sopenharmony_ci**示例:** 4931e41f4b71Sopenharmony_ci 4932e41f4b71Sopenharmony_ci```ts 4933e41f4b71Sopenharmony_ciavTranscoder.off('complete'); 4934e41f4b71Sopenharmony_ci``` 4935e41f4b71Sopenharmony_ci 4936e41f4b71Sopenharmony_ci## AVTranscoderConfig<sup>12+</sup> 4937e41f4b71Sopenharmony_ci 4938e41f4b71Sopenharmony_ci表示视频转码的参数设置。 4939e41f4b71Sopenharmony_ci 4940e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder 4941e41f4b71Sopenharmony_ci 4942e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 4943e41f4b71Sopenharmony_ci| --------------- | ---------------------------------------- |---- | ---- | ------------------------------------------------------------ | 4944e41f4b71Sopenharmony_ci| audioBitrate | number | 否 | 是 | 输出音频的码率,单位为比特率(bps)。用户不设置,则默认设置为48Kbps| 4945e41f4b71Sopenharmony_ci| audioCodec | [CodecMimeType](#codecmimetype8) | 否 | 是 | 输出音频的编码格式,当前仅支持AAC。 | 4946e41f4b71Sopenharmony_ci| fileFormat | [ContainerFormatType](#containerformattype8) | 否 | 否 | 输出视频文件的封装格式,当前视频文件仅支持MP4。| 4947e41f4b71Sopenharmony_ci| videoBitrate | number | 否 | 是 | 输出视频的码率,单位为比特率(bps)。用户不设置,则默认码率按输出视频的分辨率设置,[240p,480P]默认码率值为1Mbps,(480P,720P]默认码率值为2Mbps,(720P,1080P]默认码率值为4Mbps,1080P及以上默认值为8Mbps。| 4948e41f4b71Sopenharmony_ci| videoCodec | [CodecMimeType](#codecmimetype8) | 否 | 是 | 输出视频的编码格式,当前仅支持AVC和HEVC。| 4949e41f4b71Sopenharmony_ci| videoFrameWidth | number | 否 | 是 | 输出视频帧的宽,单位为像素(px)。用户不设置,则默认设置为源视频帧的宽| 4950e41f4b71Sopenharmony_ci| videoFrameHeight | number | 否 | 是 | 输出视频帧的高,单位为像素(px)。用户不设置,则默认设置为源视频帧的高| 4951e41f4b71Sopenharmony_ci 4952e41f4b71Sopenharmony_ci 4953e41f4b71Sopenharmony_ci 4954e41f4b71Sopenharmony_ci## AVMetadataExtractor<sup>11+</sup> 4955e41f4b71Sopenharmony_ci 4956e41f4b71Sopenharmony_ci元数据获取类,用于从媒体资源中获取元数据。在调用AVMetadataExtractor的方法前,需要先通过[createAVMetadataExtractor()](#mediacreateavmetadataextractor11)构建一个AVMetadataExtractor实例。 4957e41f4b71Sopenharmony_ci 4958e41f4b71Sopenharmony_ci获取音频或视频元数据的demo可参考:[获取音视频元数据开发指导](../../media/media/avmetadataextractor.md)。 4959e41f4b71Sopenharmony_ci 4960e41f4b71Sopenharmony_ci### 属性 4961e41f4b71Sopenharmony_ci 4962e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 4963e41f4b71Sopenharmony_ci 4964e41f4b71Sopenharmony_ci| 名称 | 类型 | 可读 | 可写 | 说明 | 4965e41f4b71Sopenharmony_ci| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 4966e41f4b71Sopenharmony_ci| 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。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致音视频元数据获取异常。 | 4967e41f4b71Sopenharmony_ci| dataSrc<sup>11+</sup> | [AVDataSrcDescriptor](#avdatasrcdescriptor10) | 是 | 是 | 流式媒体资源描述,通过该属性设置数据源。在获取元数据之前,必须设置数据源属性,只能设置fdSrc和dataSrc的其中一个。<br/> 当应用从远端获取音视频媒体文件,在应用未下载完整音视频资源时,可以设置dataSrc提前获取该资源的元数据。| 4968e41f4b71Sopenharmony_ci 4969e41f4b71Sopenharmony_ci### fetchMetadata<sup>11+</sup> 4970e41f4b71Sopenharmony_ci 4971e41f4b71Sopenharmony_cifetchMetadata(callback: AsyncCallback\<AVMetadata>): void 4972e41f4b71Sopenharmony_ci 4973e41f4b71Sopenharmony_ci异步方式获取媒体元数据。通过注册回调函数获取返回值。 4974e41f4b71Sopenharmony_ci 4975e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 4976e41f4b71Sopenharmony_ci 4977e41f4b71Sopenharmony_ci**参数:** 4978e41f4b71Sopenharmony_ci 4979e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 4980e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- | 4981e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVMetadata](#avmetadata11)> | 是 | 回调函数。异步返回音视频元数据对象(AVMetadata)。| 4982e41f4b71Sopenharmony_ci 4983e41f4b71Sopenharmony_ci**错误码:** 4984e41f4b71Sopenharmony_ci 4985e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 4986e41f4b71Sopenharmony_ci 4987e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 4988e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 4989e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by callback. | 4990e41f4b71Sopenharmony_ci| 5400106 | Unsupported format. Returned by callback. | 4991e41f4b71Sopenharmony_ci 4992e41f4b71Sopenharmony_ci**示例:** 4993e41f4b71Sopenharmony_ci 4994e41f4b71Sopenharmony_ci```ts 4995e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4996e41f4b71Sopenharmony_ci 4997e41f4b71Sopenharmony_ciavMetadataExtractor.fetchMetadata((error: BusinessError, metadata: media.AVMetadata) => { 4998e41f4b71Sopenharmony_ci if (error) { 4999e41f4b71Sopenharmony_ci console.error(`Failed to fetch Metadata, err = ${JSON.stringify(error)}`); 5000e41f4b71Sopenharmony_ci return; 5001e41f4b71Sopenharmony_ci } 5002e41f4b71Sopenharmony_ci console.info(`Succeeded in fetching Metadata, genre: ${metadata.genre}`); 5003e41f4b71Sopenharmony_ci}); 5004e41f4b71Sopenharmony_ci``` 5005e41f4b71Sopenharmony_ci 5006e41f4b71Sopenharmony_ci### fetchMetadata<sup>11+</sup> 5007e41f4b71Sopenharmony_ci 5008e41f4b71Sopenharmony_cifetchMetadata(): Promise\<AVMetadata> 5009e41f4b71Sopenharmony_ci 5010e41f4b71Sopenharmony_ci异步方式获取媒体元数据。通过Promise获取返回值。 5011e41f4b71Sopenharmony_ci 5012e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5013e41f4b71Sopenharmony_ci 5014e41f4b71Sopenharmony_ci**返回值:** 5015e41f4b71Sopenharmony_ci 5016e41f4b71Sopenharmony_ci| 类型 | 说明 | 5017e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- | 5018e41f4b71Sopenharmony_ci| Promise\<[AVMetadata](#avmetadata11)> | Promise对象。异步返回音视频元数据对象(AVMetadata)。 | 5019e41f4b71Sopenharmony_ci 5020e41f4b71Sopenharmony_ci**错误码:** 5021e41f4b71Sopenharmony_ci 5022e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5023e41f4b71Sopenharmony_ci 5024e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 5025e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 5026e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by promise. | 5027e41f4b71Sopenharmony_ci| 5400106 | Unsupported format. Returned by promise. | 5028e41f4b71Sopenharmony_ci 5029e41f4b71Sopenharmony_ci**示例:** 5030e41f4b71Sopenharmony_ci 5031e41f4b71Sopenharmony_ci```ts 5032e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5033e41f4b71Sopenharmony_ci 5034e41f4b71Sopenharmony_ciavMetadataExtractor.fetchMetadata().then((metadata: media.AVMetadata) => { 5035e41f4b71Sopenharmony_ci console.info(`Succeeded in fetching Metadata, genre: ${metadata.genre}`) 5036e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 5037e41f4b71Sopenharmony_ci console.error(`Failed to fetch Metadata, error message:${error.message}`); 5038e41f4b71Sopenharmony_ci}); 5039e41f4b71Sopenharmony_ci``` 5040e41f4b71Sopenharmony_ci 5041e41f4b71Sopenharmony_ci### fetchAlbumCover<sup>11+</sup> 5042e41f4b71Sopenharmony_ci 5043e41f4b71Sopenharmony_cifetchAlbumCover(callback: AsyncCallback\<image.PixelMap>): void 5044e41f4b71Sopenharmony_ci 5045e41f4b71Sopenharmony_ci异步方式获取音频专辑封面。通过注册回调函数获取返回值。 5046e41f4b71Sopenharmony_ci 5047e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5048e41f4b71Sopenharmony_ci 5049e41f4b71Sopenharmony_ci**参数:** 5050e41f4b71Sopenharmony_ci 5051e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5052e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- | 5053e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | 是 | 回调函数。异步返回专辑封面。 | 5054e41f4b71Sopenharmony_ci 5055e41f4b71Sopenharmony_ci**错误码:** 5056e41f4b71Sopenharmony_ci 5057e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5058e41f4b71Sopenharmony_ci 5059e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 5060e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 5061e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 5062e41f4b71Sopenharmony_ci| 5400106 | Unsupported format. Returned by callback. | 5063e41f4b71Sopenharmony_ci 5064e41f4b71Sopenharmony_ci**示例:** 5065e41f4b71Sopenharmony_ci 5066e41f4b71Sopenharmony_ci```ts 5067e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5068e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit'; 5069e41f4b71Sopenharmony_ci 5070e41f4b71Sopenharmony_cilet pixel_map : image.PixelMap | undefined = undefined; 5071e41f4b71Sopenharmony_ci 5072e41f4b71Sopenharmony_ciavMetadataExtractor.fetchAlbumCover((error: BusinessError, pixelMap: image.PixelMap) => { 5073e41f4b71Sopenharmony_ci if (error) { 5074e41f4b71Sopenharmony_ci console.error(`Failed to fetch AlbumCover, error = ${JSON.stringify(error)}`); 5075e41f4b71Sopenharmony_ci return; 5076e41f4b71Sopenharmony_ci } 5077e41f4b71Sopenharmony_ci pixel_map = pixelMap; 5078e41f4b71Sopenharmony_ci}); 5079e41f4b71Sopenharmony_ci``` 5080e41f4b71Sopenharmony_ci 5081e41f4b71Sopenharmony_ci### fetchAlbumCover<sup>11+</sup> 5082e41f4b71Sopenharmony_ci 5083e41f4b71Sopenharmony_cifetchAlbumCover(): Promise\<image.PixelMap> 5084e41f4b71Sopenharmony_ci 5085e41f4b71Sopenharmony_ci异步方式获取专辑封面。通过Promise获取返回值。 5086e41f4b71Sopenharmony_ci 5087e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5088e41f4b71Sopenharmony_ci 5089e41f4b71Sopenharmony_ci**返回值:** 5090e41f4b71Sopenharmony_ci 5091e41f4b71Sopenharmony_ci| 类型 | 说明 | 5092e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- | 5093e41f4b71Sopenharmony_ci| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise对象。异步返回专辑封面。 | 5094e41f4b71Sopenharmony_ci 5095e41f4b71Sopenharmony_ci**错误码:** 5096e41f4b71Sopenharmony_ci 5097e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5098e41f4b71Sopenharmony_ci 5099e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 5100e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 5101e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by promise. | 5102e41f4b71Sopenharmony_ci| 5400106 | Unsupported format. Returned by promise. | 5103e41f4b71Sopenharmony_ci 5104e41f4b71Sopenharmony_ci**示例:** 5105e41f4b71Sopenharmony_ci 5106e41f4b71Sopenharmony_ci```ts 5107e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5108e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit'; 5109e41f4b71Sopenharmony_ci 5110e41f4b71Sopenharmony_cilet pixel_map : image.PixelMap | undefined = undefined; 5111e41f4b71Sopenharmony_ci 5112e41f4b71Sopenharmony_ciavMetadataExtractor.fetchAlbumCover().then((pixelMap: image.PixelMap) => { 5113e41f4b71Sopenharmony_ci pixel_map = pixelMap; 5114e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 5115e41f4b71Sopenharmony_ci console.error(`Failed to fetch AlbumCover, error message:${error.message}`); 5116e41f4b71Sopenharmony_ci}); 5117e41f4b71Sopenharmony_ci``` 5118e41f4b71Sopenharmony_ci 5119e41f4b71Sopenharmony_ci### release<sup>11+</sup> 5120e41f4b71Sopenharmony_ci 5121e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void 5122e41f4b71Sopenharmony_ci 5123e41f4b71Sopenharmony_ci异步方式释放资源。通过注册回调函数获取返回值。 5124e41f4b71Sopenharmony_ci 5125e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5126e41f4b71Sopenharmony_ci 5127e41f4b71Sopenharmony_ci**参数:** 5128e41f4b71Sopenharmony_ci 5129e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5130e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- | 5131e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 |回调函数。当释放资源成功,err为undefined,否则为错误对象。 | 5132e41f4b71Sopenharmony_ci 5133e41f4b71Sopenharmony_ci**错误码:** 5134e41f4b71Sopenharmony_ci 5135e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5136e41f4b71Sopenharmony_ci 5137e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 5138e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 5139e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by callback. | 5140e41f4b71Sopenharmony_ci 5141e41f4b71Sopenharmony_ci**示例:** 5142e41f4b71Sopenharmony_ci 5143e41f4b71Sopenharmony_ci```ts 5144e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5145e41f4b71Sopenharmony_ci 5146e41f4b71Sopenharmony_ciavMetadataExtractor.release((error: BusinessError) => { 5147e41f4b71Sopenharmony_ci if (error) { 5148e41f4b71Sopenharmony_ci console.error(`Failed to release, err = ${JSON.stringify(error)}`); 5149e41f4b71Sopenharmony_ci return; 5150e41f4b71Sopenharmony_ci } 5151e41f4b71Sopenharmony_ci console.info(`Succeeded in releasing.`); 5152e41f4b71Sopenharmony_ci}); 5153e41f4b71Sopenharmony_ci``` 5154e41f4b71Sopenharmony_ci 5155e41f4b71Sopenharmony_ci### release<sup>11+</sup> 5156e41f4b71Sopenharmony_ci 5157e41f4b71Sopenharmony_cirelease(): Promise\<void> 5158e41f4b71Sopenharmony_ci 5159e41f4b71Sopenharmony_ci异步方式释放资源。通过Promise获取返回值。 5160e41f4b71Sopenharmony_ci 5161e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5162e41f4b71Sopenharmony_ci 5163e41f4b71Sopenharmony_ci**返回值:** 5164e41f4b71Sopenharmony_ci 5165e41f4b71Sopenharmony_ci| 类型 | 说明 | 5166e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- | 5167e41f4b71Sopenharmony_ci| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 | 5168e41f4b71Sopenharmony_ci 5169e41f4b71Sopenharmony_ci**错误码:** 5170e41f4b71Sopenharmony_ci 5171e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 5172e41f4b71Sopenharmony_ci 5173e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 5174e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 5175e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by promise. | 5176e41f4b71Sopenharmony_ci 5177e41f4b71Sopenharmony_ci**示例:** 5178e41f4b71Sopenharmony_ci 5179e41f4b71Sopenharmony_ci```ts 5180e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5181e41f4b71Sopenharmony_ci 5182e41f4b71Sopenharmony_ciavMetadataExtractor.release().then(() => { 5183e41f4b71Sopenharmony_ci console.info(`Succeeded in releasing.`); 5184e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 5185e41f4b71Sopenharmony_ci console.error(`Failed to release, error message:${error.message}`); 5186e41f4b71Sopenharmony_ci}); 5187e41f4b71Sopenharmony_ci``` 5188e41f4b71Sopenharmony_ci 5189e41f4b71Sopenharmony_ci## AVMetadata<sup>11+</sup> 5190e41f4b71Sopenharmony_ci 5191e41f4b71Sopenharmony_ci音视频元数据,包含各个元数据字段。在[AVRecorderConfig](#avrecorderconfig9)中使用时未声明为当前版本只读的参数可以作为使用[AVRecorder](#avrecorder9)录制时的入参。 5192e41f4b71Sopenharmony_ci 5193e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 5194e41f4b71Sopenharmony_ci 5195e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 5196e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 5197e41f4b71Sopenharmony_ci| album | string | 否 | 专辑的标题。当前版本为只读参数。 | 5198e41f4b71Sopenharmony_ci| albumArtist | string | 否 | 专辑的艺术家。当前版本为只读参数。 | 5199e41f4b71Sopenharmony_ci| artist | string | 否 | 媒体资源的艺术家。当前版本为只读参数。 | 5200e41f4b71Sopenharmony_ci| author | string | 否 | 媒体资源的作者。当前版本为只读参数。 | 5201e41f4b71Sopenharmony_ci| dateTime | string | 否 | 媒体资源的创建时间。当前版本为只读参数。 | 5202e41f4b71Sopenharmony_ci| dateTimeFormat | string | 否 | 媒体资源的创建时间,按YYYY-MM-DD HH:mm:ss格式输出。当前版本为只读参数。 | 5203e41f4b71Sopenharmony_ci| composer | string | 否 | 媒体资源的作曲家。当前版本为只读参数。 | 5204e41f4b71Sopenharmony_ci| duration | string | 否 | 媒体资源的时长。当前版本为只读参数。 | 5205e41f4b71Sopenharmony_ci| genre | string | 否 | 媒体资源的类型或体裁。| 5206e41f4b71Sopenharmony_ci| hasAudio | string | 否 | 媒体资源是否包含音频。当前版本为只读参数。 | 5207e41f4b71Sopenharmony_ci| hasVideo | string | 否 | 媒体资源是否包含视频。当前版本为只读参数。 | 5208e41f4b71Sopenharmony_ci| mimeType | string | 否 | 媒体资源的mime类型。当前版本为只读参数。 | 5209e41f4b71Sopenharmony_ci| trackCount | string | 否 | 媒体资源的轨道数量。当前版本为只读参数。 | 5210e41f4b71Sopenharmony_ci| sampleRate | string | 否 | 音频的采样率,单位为赫兹(Hz)。当前版本为只读参数。 | 5211e41f4b71Sopenharmony_ci| title | string | 否 | 媒体资源的标题。当前版本为只读参数。当前版本为只读参数。 | 5212e41f4b71Sopenharmony_ci| videoHeight | string | 否 | 视频的高度,单位为像素。当前版本为只读参数。 | 5213e41f4b71Sopenharmony_ci| videoWidth | string | 否 | 视频的宽度,单位为像素。当前版本为只读参数。 | 5214e41f4b71Sopenharmony_ci| videoOrientation | string | 否 | 视频的旋转方向,单位为度(°)。| 5215e41f4b71Sopenharmony_ci| hdrType<sup>12+</sup> | [HdrType](#hdrtype12) | 否 | 媒体资源的HDR类型。当前版本为只读参数。 | 5216e41f4b71Sopenharmony_ci| location<sup>12+</sup> | [Location](#location) | 否 | 视频的地理位置信息。 | 5217e41f4b71Sopenharmony_ci| customInfo<sup>12+</sup> | Record<string, string> | 否 | 从moov.meta.list 获取的自定义参数键值映射。| 5218e41f4b71Sopenharmony_ci 5219e41f4b71Sopenharmony_ci## HdrType<sup>12+</sup> 5220e41f4b71Sopenharmony_ci 5221e41f4b71Sopenharmony_ci表示视频HDR类型的枚举。 5222e41f4b71Sopenharmony_ci 5223e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 5224e41f4b71Sopenharmony_ci 5225e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 5226e41f4b71Sopenharmony_ci| ------------------------- | ---- | ---------------------- | 5227e41f4b71Sopenharmony_ci| AV_HDR_TYPE_NONE | 0 | 表示无HDR类型。 | 5228e41f4b71Sopenharmony_ci| AV_HDR_TYPE_VIVID | 1 | 表示为HDR VIVID类型。 | 5229e41f4b71Sopenharmony_ci 5230e41f4b71Sopenharmony_ci## media.createAudioPlayer<sup>(deprecated)</sup> 5231e41f4b71Sopenharmony_ci 5232e41f4b71Sopenharmony_cicreateAudioPlayer(): AudioPlayer 5233e41f4b71Sopenharmony_ci 5234e41f4b71Sopenharmony_ci同步方式创建音频播放实例。 5235e41f4b71Sopenharmony_ci 5236e41f4b71Sopenharmony_ci> **说明:** 5237e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。 5238e41f4b71Sopenharmony_ci 5239e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5240e41f4b71Sopenharmony_ci 5241e41f4b71Sopenharmony_ci**返回值:** 5242e41f4b71Sopenharmony_ci 5243e41f4b71Sopenharmony_ci| 类型 | 说明 | 5244e41f4b71Sopenharmony_ci| --------------------------- | ------------------------------------------------------------ | 5245e41f4b71Sopenharmony_ci| [AudioPlayer](#audioplayerdeprecated) | 返回AudioPlayer类实例,失败时返回null。可用于音频播放、暂停、停止等操作。 | 5246e41f4b71Sopenharmony_ci 5247e41f4b71Sopenharmony_ci**示例:** 5248e41f4b71Sopenharmony_ci 5249e41f4b71Sopenharmony_ci```ts 5250e41f4b71Sopenharmony_cilet audioPlayer: media.AudioPlayer = media.createAudioPlayer(); 5251e41f4b71Sopenharmony_ci``` 5252e41f4b71Sopenharmony_ci 5253e41f4b71Sopenharmony_ci## media.createVideoPlayer<sup>(deprecated)</sup> 5254e41f4b71Sopenharmony_ci 5255e41f4b71Sopenharmony_cicreateVideoPlayer(callback: AsyncCallback\<VideoPlayer>): void 5256e41f4b71Sopenharmony_ci 5257e41f4b71Sopenharmony_ci异步方式创建视频播放实例,通过注册回调函数获取返回值。 5258e41f4b71Sopenharmony_ci 5259e41f4b71Sopenharmony_ci> **说明:** 5260e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。 5261e41f4b71Sopenharmony_ci 5262e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5263e41f4b71Sopenharmony_ci 5264e41f4b71Sopenharmony_ci**参数:** 5265e41f4b71Sopenharmony_ci 5266e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5267e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ | 5268e41f4b71Sopenharmony_ci| callback | AsyncCallback<[VideoPlayer](#videoplayerdeprecated)> | 是 | 回调函数。创建VideoPlayer实例成功时,err为undefined,data为获取到的VideoPlayer实例,否则为错误对象。 | 5269e41f4b71Sopenharmony_ci 5270e41f4b71Sopenharmony_ci**示例:** 5271e41f4b71Sopenharmony_ci 5272e41f4b71Sopenharmony_ci```ts 5273e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5274e41f4b71Sopenharmony_ci 5275e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer; 5276e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 5277e41f4b71Sopenharmony_ci if (video != null) { 5278e41f4b71Sopenharmony_ci videoPlayer = video; 5279e41f4b71Sopenharmony_ci console.info('Succeeded in creating VideoPlayer'); 5280e41f4b71Sopenharmony_ci } else { 5281e41f4b71Sopenharmony_ci console.error(`Failed to create VideoPlayer, error:${error}`); 5282e41f4b71Sopenharmony_ci } 5283e41f4b71Sopenharmony_ci}); 5284e41f4b71Sopenharmony_ci``` 5285e41f4b71Sopenharmony_ci 5286e41f4b71Sopenharmony_ci## media.createVideoPlayer<sup>(deprecated)</sup> 5287e41f4b71Sopenharmony_ci 5288e41f4b71Sopenharmony_cicreateVideoPlayer(): Promise\<VideoPlayer> 5289e41f4b71Sopenharmony_ci 5290e41f4b71Sopenharmony_ci异步方式创建视频播放实例,通过Promise获取返回值。 5291e41f4b71Sopenharmony_ci 5292e41f4b71Sopenharmony_ci> **说明:** 5293e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9-1)替代。 5294e41f4b71Sopenharmony_ci 5295e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5296e41f4b71Sopenharmony_ci 5297e41f4b71Sopenharmony_ci**返回值:** 5298e41f4b71Sopenharmony_ci 5299e41f4b71Sopenharmony_ci| 类型 | 说明 | 5300e41f4b71Sopenharmony_ci| ------------------------------------ | ------------------------------------------------------------ | 5301e41f4b71Sopenharmony_ci| Promise<[VideoPlayer](#videoplayerdeprecated)> | Promise对象。异步返回VideoPlayer实例,失败时返回null。可用于管理和播放视频媒体。 | 5302e41f4b71Sopenharmony_ci 5303e41f4b71Sopenharmony_ci**示例:** 5304e41f4b71Sopenharmony_ci 5305e41f4b71Sopenharmony_ci```ts 5306e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5307e41f4b71Sopenharmony_ci 5308e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer; 5309e41f4b71Sopenharmony_cimedia.createVideoPlayer().then((video: media.VideoPlayer) => { 5310e41f4b71Sopenharmony_ci if (video != null) { 5311e41f4b71Sopenharmony_ci videoPlayer = video; 5312e41f4b71Sopenharmony_ci console.info('Succeeded in creating VideoPlayer'); 5313e41f4b71Sopenharmony_ci } else { 5314e41f4b71Sopenharmony_ci console.error('Failed to create VideoPlayer'); 5315e41f4b71Sopenharmony_ci } 5316e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 5317e41f4b71Sopenharmony_ci console.error(`Failed to create VideoPlayer, error:${error}`); 5318e41f4b71Sopenharmony_ci}); 5319e41f4b71Sopenharmony_ci``` 5320e41f4b71Sopenharmony_ci 5321e41f4b71Sopenharmony_ci## media.createAudioRecorder<sup>(deprecated)</sup> 5322e41f4b71Sopenharmony_ci 5323e41f4b71Sopenharmony_cicreateAudioRecorder(): AudioRecorder 5324e41f4b71Sopenharmony_ci 5325e41f4b71Sopenharmony_ci创建音频录制的实例来控制音频的录制。 5326e41f4b71Sopenharmony_ci一台设备只允许创建一个录制实例。 5327e41f4b71Sopenharmony_ci 5328e41f4b71Sopenharmony_ci> **说明:** 5329e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVRecorder](#mediacreateavrecorder9)替代。 5330e41f4b71Sopenharmony_ci 5331e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 5332e41f4b71Sopenharmony_ci 5333e41f4b71Sopenharmony_ci**返回值:** 5334e41f4b71Sopenharmony_ci 5335e41f4b71Sopenharmony_ci| 类型 | 说明 | 5336e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 5337e41f4b71Sopenharmony_ci| [AudioRecorder](#audiorecorderdeprecated) | 返回AudioRecorder类实例,失败时返回null。可用于录制音频媒体。 | 5338e41f4b71Sopenharmony_ci 5339e41f4b71Sopenharmony_ci**示例:** 5340e41f4b71Sopenharmony_ci 5341e41f4b71Sopenharmony_ci```ts 5342e41f4b71Sopenharmony_cilet audioRecorder: media.AudioRecorder = media.createAudioRecorder(); 5343e41f4b71Sopenharmony_ci``` 5344e41f4b71Sopenharmony_ci 5345e41f4b71Sopenharmony_ci## MediaErrorCode<sup>(deprecated)</sup> 5346e41f4b71Sopenharmony_ci 5347e41f4b71Sopenharmony_ci媒体服务错误类型枚举。 5348e41f4b71Sopenharmony_ci 5349e41f4b71Sopenharmony_ci> **说明:** 5350e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 11开始废弃,建议使用[媒体错误码](#averrorcode9)替代。 5351e41f4b71Sopenharmony_ci 5352e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 5353e41f4b71Sopenharmony_ci 5354e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 5355e41f4b71Sopenharmony_ci| -------------------------- | ---- | -------------------------------------- | 5356e41f4b71Sopenharmony_ci| MSERR_OK | 0 | 表示操作成功。 | 5357e41f4b71Sopenharmony_ci| MSERR_NO_MEMORY | 1 | 表示申请内存失败,系统可能无可用内存。 | 5358e41f4b71Sopenharmony_ci| MSERR_OPERATION_NOT_PERMIT | 2 | 表示无权限执行此操作。 | 5359e41f4b71Sopenharmony_ci| MSERR_INVALID_VAL | 3 | 表示传入入参无效。 | 5360e41f4b71Sopenharmony_ci| MSERR_IO | 4 | 表示发生IO错误。 | 5361e41f4b71Sopenharmony_ci| MSERR_TIMEOUT | 5 | 表示操作超时。 | 5362e41f4b71Sopenharmony_ci| MSERR_UNKNOWN | 6 | 表示未知错误。 | 5363e41f4b71Sopenharmony_ci| MSERR_SERVICE_DIED | 7 | 表示服务端失效。 | 5364e41f4b71Sopenharmony_ci| MSERR_INVALID_STATE | 8 | 表示在当前状态下,不允许执行此操作。 | 5365e41f4b71Sopenharmony_ci| MSERR_UNSUPPORTED | 9 | 表示在当前版本下,不支持此操作。 | 5366e41f4b71Sopenharmony_ci 5367e41f4b71Sopenharmony_ci## AudioPlayer<sup>(deprecated)</sup> 5368e41f4b71Sopenharmony_ci 5369e41f4b71Sopenharmony_ci> **说明:** 5370e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。 5371e41f4b71Sopenharmony_ci 5372e41f4b71Sopenharmony_ci音频播放管理类,用于管理和播放音频媒体。在调用AudioPlayer的方法前,需要先通过[createAudioPlayer()](#mediacreateaudioplayerdeprecated)构建一个AudioPlayer实例。 5373e41f4b71Sopenharmony_ci 5374e41f4b71Sopenharmony_ci### 属性<sup>(deprecated)</sup> 5375e41f4b71Sopenharmony_ci 5376e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5377e41f4b71Sopenharmony_ci 5378e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 5379e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 5380e41f4b71Sopenharmony_ci| 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。 | 5381e41f4b71Sopenharmony_ci| 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/> | 5382e41f4b71Sopenharmony_ci| loop | boolean | 否 | 否 | 音频循环播放属性,设置为'true'表示循环播放。 | 5383e41f4b71Sopenharmony_ci| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 是 | 是 | 音频焦点模型。 | 5384e41f4b71Sopenharmony_ci| currentTime | number | 是 | 否 | 音频的当前播放位置,单位为毫秒(ms)。 | 5385e41f4b71Sopenharmony_ci| duration | number | 是 | 否 | 音频时长,单位为毫秒(ms)。 | 5386e41f4b71Sopenharmony_ci| state | [AudioState](#audiostatedeprecated) | 是 | 否 | 可以查询音频播放的状态,该状态不可作为调用play/pause/stop等状态切换的触发条件。 | 5387e41f4b71Sopenharmony_ci 5388e41f4b71Sopenharmony_ci### play<sup>(deprecated)</sup> 5389e41f4b71Sopenharmony_ci 5390e41f4b71Sopenharmony_ciplay(): void 5391e41f4b71Sopenharmony_ci 5392e41f4b71Sopenharmony_ci开始播放音频资源,需在'dataLoad'事件成功触发后,才能调用。 5393e41f4b71Sopenharmony_ci 5394e41f4b71Sopenharmony_ci> **说明:** 5395e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。 5396e41f4b71Sopenharmony_ci 5397e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5398e41f4b71Sopenharmony_ci 5399e41f4b71Sopenharmony_ci**示例:** 5400e41f4b71Sopenharmony_ci 5401e41f4b71Sopenharmony_ci```ts 5402e41f4b71Sopenharmony_ciaudioPlayer.on('play', () => { //设置'play'事件回调 5403e41f4b71Sopenharmony_ci console.info('audio play called'); 5404e41f4b71Sopenharmony_ci}); 5405e41f4b71Sopenharmony_ciaudioPlayer.play(); 5406e41f4b71Sopenharmony_ci``` 5407e41f4b71Sopenharmony_ci 5408e41f4b71Sopenharmony_ci### pause<sup>(deprecated)</sup> 5409e41f4b71Sopenharmony_ci 5410e41f4b71Sopenharmony_cipause(): void 5411e41f4b71Sopenharmony_ci 5412e41f4b71Sopenharmony_ci暂停播放音频资源。 5413e41f4b71Sopenharmony_ci 5414e41f4b71Sopenharmony_ci> **说明:** 5415e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。 5416e41f4b71Sopenharmony_ci 5417e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5418e41f4b71Sopenharmony_ci 5419e41f4b71Sopenharmony_ci**示例:** 5420e41f4b71Sopenharmony_ci 5421e41f4b71Sopenharmony_ci```ts 5422e41f4b71Sopenharmony_ciaudioPlayer.on('pause', () => { //设置'pause'事件回调 5423e41f4b71Sopenharmony_ci console.info('audio pause called'); 5424e41f4b71Sopenharmony_ci}); 5425e41f4b71Sopenharmony_ciaudioPlayer.pause(); 5426e41f4b71Sopenharmony_ci``` 5427e41f4b71Sopenharmony_ci 5428e41f4b71Sopenharmony_ci### stop<sup>(deprecated)</sup> 5429e41f4b71Sopenharmony_ci 5430e41f4b71Sopenharmony_cistop(): void 5431e41f4b71Sopenharmony_ci 5432e41f4b71Sopenharmony_ci停止播放音频资源。 5433e41f4b71Sopenharmony_ci 5434e41f4b71Sopenharmony_ci> **说明:** 5435e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。 5436e41f4b71Sopenharmony_ci 5437e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5438e41f4b71Sopenharmony_ci 5439e41f4b71Sopenharmony_ci**示例:** 5440e41f4b71Sopenharmony_ci 5441e41f4b71Sopenharmony_ci```ts 5442e41f4b71Sopenharmony_ciaudioPlayer.on('stop', () => { //设置'stop'事件回调 5443e41f4b71Sopenharmony_ci console.info('audio stop called'); 5444e41f4b71Sopenharmony_ci}); 5445e41f4b71Sopenharmony_ciaudioPlayer.stop(); 5446e41f4b71Sopenharmony_ci``` 5447e41f4b71Sopenharmony_ci 5448e41f4b71Sopenharmony_ci### reset<sup>(deprecated)</sup> 5449e41f4b71Sopenharmony_ci 5450e41f4b71Sopenharmony_cireset(): void 5451e41f4b71Sopenharmony_ci 5452e41f4b71Sopenharmony_ci重置播放音频资源。 5453e41f4b71Sopenharmony_ci 5454e41f4b71Sopenharmony_ci> **说明:** 5455e41f4b71Sopenharmony_ci> 从API version 7开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。 5456e41f4b71Sopenharmony_ci 5457e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5458e41f4b71Sopenharmony_ci 5459e41f4b71Sopenharmony_ci**示例:** 5460e41f4b71Sopenharmony_ci 5461e41f4b71Sopenharmony_ci```ts 5462e41f4b71Sopenharmony_ciaudioPlayer.on('reset', () => { //设置'reset'事件回调 5463e41f4b71Sopenharmony_ci console.info('audio reset called'); 5464e41f4b71Sopenharmony_ci}); 5465e41f4b71Sopenharmony_ciaudioPlayer.reset(); 5466e41f4b71Sopenharmony_ci``` 5467e41f4b71Sopenharmony_ci 5468e41f4b71Sopenharmony_ci### seek<sup>(deprecated)</sup> 5469e41f4b71Sopenharmony_ci 5470e41f4b71Sopenharmony_ciseek(timeMs: number): void 5471e41f4b71Sopenharmony_ci 5472e41f4b71Sopenharmony_ci跳转到指定播放位置。 5473e41f4b71Sopenharmony_ci 5474e41f4b71Sopenharmony_ci> **说明:** 5475e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 5476e41f4b71Sopenharmony_ci 5477e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5478e41f4b71Sopenharmony_ci 5479e41f4b71Sopenharmony_ci**参数:** 5480e41f4b71Sopenharmony_ci 5481e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5482e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----------------------------------------------------------- | 5483e41f4b71Sopenharmony_ci| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围[0, duration]。 | 5484e41f4b71Sopenharmony_ci 5485e41f4b71Sopenharmony_ci**示例:** 5486e41f4b71Sopenharmony_ci 5487e41f4b71Sopenharmony_ci```ts 5488e41f4b71Sopenharmony_ciaudioPlayer.on('timeUpdate', (seekDoneTime: number) => { //设置'timeUpdate'事件回调 5489e41f4b71Sopenharmony_ci if (seekDoneTime == null) { 5490e41f4b71Sopenharmony_ci console.error('Failed to seek'); 5491e41f4b71Sopenharmony_ci return; 5492e41f4b71Sopenharmony_ci } 5493e41f4b71Sopenharmony_ci console.info('Succeeded in seek. seekDoneTime: ' + seekDoneTime); 5494e41f4b71Sopenharmony_ci}); 5495e41f4b71Sopenharmony_ciaudioPlayer.seek(30000); //seek到30000ms的位置 5496e41f4b71Sopenharmony_ci``` 5497e41f4b71Sopenharmony_ci 5498e41f4b71Sopenharmony_ci### setVolume<sup>(deprecated)</sup> 5499e41f4b71Sopenharmony_ci 5500e41f4b71Sopenharmony_cisetVolume(vol: number): void 5501e41f4b71Sopenharmony_ci 5502e41f4b71Sopenharmony_ci设置音量。 5503e41f4b71Sopenharmony_ci 5504e41f4b71Sopenharmony_ci> **说明:** 5505e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。 5506e41f4b71Sopenharmony_ci 5507e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5508e41f4b71Sopenharmony_ci 5509e41f4b71Sopenharmony_ci**参数:** 5510e41f4b71Sopenharmony_ci 5511e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5512e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 5513e41f4b71Sopenharmony_ci| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 5514e41f4b71Sopenharmony_ci 5515e41f4b71Sopenharmony_ci**示例:** 5516e41f4b71Sopenharmony_ci 5517e41f4b71Sopenharmony_ci```ts 5518e41f4b71Sopenharmony_ciaudioPlayer.on('volumeChange', () => { //设置'volumeChange'事件回调 5519e41f4b71Sopenharmony_ci console.info('audio volumeChange called'); 5520e41f4b71Sopenharmony_ci}); 5521e41f4b71Sopenharmony_ciaudioPlayer.setVolume(1); //设置音量到100% 5522e41f4b71Sopenharmony_ci``` 5523e41f4b71Sopenharmony_ci 5524e41f4b71Sopenharmony_ci### release<sup>(deprecated)</sup> 5525e41f4b71Sopenharmony_ci 5526e41f4b71Sopenharmony_cirelease(): void 5527e41f4b71Sopenharmony_ci 5528e41f4b71Sopenharmony_ci释放音频资源。 5529e41f4b71Sopenharmony_ci 5530e41f4b71Sopenharmony_ci> **说明:** 5531e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。 5532e41f4b71Sopenharmony_ci 5533e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5534e41f4b71Sopenharmony_ci 5535e41f4b71Sopenharmony_ci**示例:** 5536e41f4b71Sopenharmony_ci 5537e41f4b71Sopenharmony_ci```ts 5538e41f4b71Sopenharmony_ciaudioPlayer.release(); 5539e41f4b71Sopenharmony_ciaudioPlayer = undefined; 5540e41f4b71Sopenharmony_ci``` 5541e41f4b71Sopenharmony_ci 5542e41f4b71Sopenharmony_ci### getTrackDescription<sup>(deprecated)</sup> 5543e41f4b71Sopenharmony_ci 5544e41f4b71Sopenharmony_cigetTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void 5545e41f4b71Sopenharmony_ci 5546e41f4b71Sopenharmony_ci获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。通过回调函数获取返回值。 5547e41f4b71Sopenharmony_ci 5548e41f4b71Sopenharmony_ci> **说明:** 5549e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。 5550e41f4b71Sopenharmony_ci 5551e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5552e41f4b71Sopenharmony_ci 5553e41f4b71Sopenharmony_ci**参数:** 5554e41f4b71Sopenharmony_ci 5555e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5556e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ | 5557e41f4b71Sopenharmony_ci| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是 | 回调函数。获取音频轨道信息成功时,err为undefined,data为获取到的MediaDescription数组,否则为错误对象。 | 5558e41f4b71Sopenharmony_ci 5559e41f4b71Sopenharmony_ci**示例:** 5560e41f4b71Sopenharmony_ci 5561e41f4b71Sopenharmony_ci```ts 5562e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5563e41f4b71Sopenharmony_ci 5564e41f4b71Sopenharmony_ciaudioPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 5565e41f4b71Sopenharmony_ci if (arrList != null) { 5566e41f4b71Sopenharmony_ci console.info('Succeeded in getting TrackDescription'); 5567e41f4b71Sopenharmony_ci } else { 5568e41f4b71Sopenharmony_ci console.error(`Failed to get TrackDescription, error:${error}`); 5569e41f4b71Sopenharmony_ci } 5570e41f4b71Sopenharmony_ci}); 5571e41f4b71Sopenharmony_ci``` 5572e41f4b71Sopenharmony_ci 5573e41f4b71Sopenharmony_ci### getTrackDescription<sup>(deprecated)</sup> 5574e41f4b71Sopenharmony_ci 5575e41f4b71Sopenharmony_cigetTrackDescription(): Promise\<Array\<MediaDescription>> 5576e41f4b71Sopenharmony_ci 5577e41f4b71Sopenharmony_ci获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。通过Promise获取返回值。 5578e41f4b71Sopenharmony_ci 5579e41f4b71Sopenharmony_ci> **说明:** 5580e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。 5581e41f4b71Sopenharmony_ci 5582e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5583e41f4b71Sopenharmony_ci 5584e41f4b71Sopenharmony_ci**返回值:** 5585e41f4b71Sopenharmony_ci 5586e41f4b71Sopenharmony_ci| 类型 | 说明 | 5587e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ----------------------------------------------- | 5588e41f4b71Sopenharmony_ci| Promise<Array<[MediaDescription](#mediadescription8)>> | 音频轨道信息MediaDescription数组Promise返回值。 | 5589e41f4b71Sopenharmony_ci 5590e41f4b71Sopenharmony_ci**示例:** 5591e41f4b71Sopenharmony_ci 5592e41f4b71Sopenharmony_ci```ts 5593e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5594e41f4b71Sopenharmony_ci 5595e41f4b71Sopenharmony_ciaudioPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => { 5596e41f4b71Sopenharmony_ci console.info('Succeeded in getting TrackDescription'); 5597e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 5598e41f4b71Sopenharmony_ci console.error(`Failed to get TrackDescription, error:${error}`); 5599e41f4b71Sopenharmony_ci}); 5600e41f4b71Sopenharmony_ci``` 5601e41f4b71Sopenharmony_ci 5602e41f4b71Sopenharmony_ci### on('bufferingUpdate')<sup>(deprecated)</sup> 5603e41f4b71Sopenharmony_ci 5604e41f4b71Sopenharmony_cion(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void 5605e41f4b71Sopenharmony_ci 5606e41f4b71Sopenharmony_ci开始订阅音频缓存更新事件。仅网络播放支持该订阅事件。 5607e41f4b71Sopenharmony_ci 5608e41f4b71Sopenharmony_ci> **说明:** 5609e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。 5610e41f4b71Sopenharmony_ci 5611e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5612e41f4b71Sopenharmony_ci 5613e41f4b71Sopenharmony_ci**参数:** 5614e41f4b71Sopenharmony_ci 5615e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5616e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 5617e41f4b71Sopenharmony_ci| type | string | 是 | 音频缓存事件回调类型,支持的事件:'bufferingUpdate'。 | 5618e41f4b71Sopenharmony_ci| callback | function | 是 | 音频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)value值固定为0。 | 5619e41f4b71Sopenharmony_ci 5620e41f4b71Sopenharmony_ci**示例:** 5621e41f4b71Sopenharmony_ci 5622e41f4b71Sopenharmony_ci```ts 5623e41f4b71Sopenharmony_ciaudioPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => { 5624e41f4b71Sopenharmony_ci console.info('audio bufferingInfo type: ' + infoType); 5625e41f4b71Sopenharmony_ci console.info('audio bufferingInfo value: ' + value); 5626e41f4b71Sopenharmony_ci}); 5627e41f4b71Sopenharmony_ci``` 5628e41f4b71Sopenharmony_ci 5629e41f4b71Sopenharmony_ci### on('play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange')<sup>(deprecated)</sup> 5630e41f4b71Sopenharmony_ci 5631e41f4b71Sopenharmony_cion(type: 'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange', callback: () => void): void 5632e41f4b71Sopenharmony_ci 5633e41f4b71Sopenharmony_ci开始订阅音频播放事件。 5634e41f4b71Sopenharmony_ci 5635e41f4b71Sopenharmony_ci> **说明:** 5636e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。 5637e41f4b71Sopenharmony_ci 5638e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5639e41f4b71Sopenharmony_ci 5640e41f4b71Sopenharmony_ci**参数:** 5641e41f4b71Sopenharmony_ci 5642e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5643e41f4b71Sopenharmony_ci| -------- | ---------- | ---- | ------------------------------------------------------------ | 5644e41f4b71Sopenharmony_ci| 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)调用,播放音量改变后触发该事件。 | 5645e41f4b71Sopenharmony_ci| callback | () => void | 是 | 播放事件回调方法。 | 5646e41f4b71Sopenharmony_ci 5647e41f4b71Sopenharmony_ci**示例:** 5648e41f4b71Sopenharmony_ci 5649e41f4b71Sopenharmony_ci```ts 5650e41f4b71Sopenharmony_ciimport { fileIo as fs } from '@kit.CoreFileKit'; 5651e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5652e41f4b71Sopenharmony_ci 5653e41f4b71Sopenharmony_cilet audioPlayer: media.AudioPlayer = media.createAudioPlayer(); //创建一个音频播放实例 5654e41f4b71Sopenharmony_ciaudioPlayer.on('dataLoad', () => { //设置'dataLoad'事件回调,src属性设置成功后,触发此回调 5655e41f4b71Sopenharmony_ci console.info('audio set source called'); 5656e41f4b71Sopenharmony_ci audioPlayer.play(); //开始播放,并触发'play'事件回调 5657e41f4b71Sopenharmony_ci}); 5658e41f4b71Sopenharmony_ciaudioPlayer.on('play', () => { //设置'play'事件回调 5659e41f4b71Sopenharmony_ci console.info('audio play called'); 5660e41f4b71Sopenharmony_ci audioPlayer.seek(30000); //调用seek方法,并触发'timeUpdate'事件回调 5661e41f4b71Sopenharmony_ci}); 5662e41f4b71Sopenharmony_ciaudioPlayer.on('pause', () => { //设置'pause'事件回调 5663e41f4b71Sopenharmony_ci console.info('audio pause called'); 5664e41f4b71Sopenharmony_ci audioPlayer.stop(); //停止播放,并触发'stop'事件回调 5665e41f4b71Sopenharmony_ci}); 5666e41f4b71Sopenharmony_ciaudioPlayer.on('reset', () => { //设置'reset'事件回调 5667e41f4b71Sopenharmony_ci console.info('audio reset called'); 5668e41f4b71Sopenharmony_ci audioPlayer.release(); //释放播放实例资源 5669e41f4b71Sopenharmony_ci audioPlayer = undefined; 5670e41f4b71Sopenharmony_ci}); 5671e41f4b71Sopenharmony_ciaudioPlayer.on('timeUpdate', (seekDoneTime: number) => { //设置'timeUpdate'事件回调 5672e41f4b71Sopenharmony_ci if (seekDoneTime == null) { 5673e41f4b71Sopenharmony_ci console.error('Failed to seek'); 5674e41f4b71Sopenharmony_ci return; 5675e41f4b71Sopenharmony_ci } 5676e41f4b71Sopenharmony_ci console.info('Succeeded in seek, and seek time is ' + seekDoneTime); 5677e41f4b71Sopenharmony_ci audioPlayer.setVolume(0.5); //设置音量为50%,并触发'volumeChange'事件回调 5678e41f4b71Sopenharmony_ci}); 5679e41f4b71Sopenharmony_ciaudioPlayer.on('volumeChange', () => { //设置'volumeChange'事件回调 5680e41f4b71Sopenharmony_ci console.info('audio volumeChange called'); 5681e41f4b71Sopenharmony_ci audioPlayer.pause(); //暂停播放,并触发'pause'事件回调 5682e41f4b71Sopenharmony_ci}); 5683e41f4b71Sopenharmony_ciaudioPlayer.on('finish', () => { //设置'finish'事件回调 5684e41f4b71Sopenharmony_ci console.info('audio play finish'); 5685e41f4b71Sopenharmony_ci audioPlayer.stop(); //停止播放,并触发'stop'事件回调 5686e41f4b71Sopenharmony_ci}); 5687e41f4b71Sopenharmony_ciaudioPlayer.on('error', (error: BusinessError) => { //设置'error'事件回调 5688e41f4b71Sopenharmony_ci console.error(`audio error called, error: ${error}`); 5689e41f4b71Sopenharmony_ci}); 5690e41f4b71Sopenharmony_ci 5691e41f4b71Sopenharmony_ci// 用户选择音频设置fd(本地播放) 5692e41f4b71Sopenharmony_cilet fdPath = 'fd://'; 5693e41f4b71Sopenharmony_ci// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" 命令,将其推送到设备上 5694e41f4b71Sopenharmony_cilet path = '/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3'; 5695e41f4b71Sopenharmony_cifs.open(path).then((file) => { 5696e41f4b71Sopenharmony_ci fdPath = fdPath + '' + file.fd; 5697e41f4b71Sopenharmony_ci console.info('Succeeded in opening fd, fd is' + fdPath); 5698e41f4b71Sopenharmony_ci audioPlayer.src = fdPath; //设置src属性,并触发'dataLoad'事件回调 5699e41f4b71Sopenharmony_ci}, (err: BusinessError) => { 5700e41f4b71Sopenharmony_ci console.error('Failed to open fd, err is' + err); 5701e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 5702e41f4b71Sopenharmony_ci console.error('Failed to open fd, err is' + err); 5703e41f4b71Sopenharmony_ci}); 5704e41f4b71Sopenharmony_ci``` 5705e41f4b71Sopenharmony_ci 5706e41f4b71Sopenharmony_ci### on('timeUpdate')<sup>(deprecated)</sup> 5707e41f4b71Sopenharmony_ci 5708e41f4b71Sopenharmony_cion(type: 'timeUpdate', callback: Callback\<number>): void 5709e41f4b71Sopenharmony_ci 5710e41f4b71Sopenharmony_ci开始订阅音频播放时间更新事件。处于播放状态时,每隔1s上报一次该事件。 5711e41f4b71Sopenharmony_ci 5712e41f4b71Sopenharmony_ci> **说明:** 5713e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('timeUpdate')](#ontimeupdate9)替代。 5714e41f4b71Sopenharmony_ci 5715e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5716e41f4b71Sopenharmony_ci 5717e41f4b71Sopenharmony_ci**参数:** 5718e41f4b71Sopenharmony_ci 5719e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5720e41f4b71Sopenharmony_ci| -------- | ----------------- | ---- | ------------------------------------------------------------ | 5721e41f4b71Sopenharmony_ci| type | string | 是 | 播放事件回调类型,支持的事件包括:'timeUpdate'。<br>- 'timeUpdate':音频播放时间戳更新,开始播放后自动触发该事件。 | 5722e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是 | 播放事件回调方法。回调方法入参为更新后的时间戳。 | 5723e41f4b71Sopenharmony_ci 5724e41f4b71Sopenharmony_ci**示例:** 5725e41f4b71Sopenharmony_ci 5726e41f4b71Sopenharmony_ci```ts 5727e41f4b71Sopenharmony_ciaudioPlayer.on('timeUpdate', (newTime: number) => { //设置'timeUpdate'事件回调 5728e41f4b71Sopenharmony_ci if (newTime == null) { 5729e41f4b71Sopenharmony_ci console.error('Failed to do timeUpadate'); 5730e41f4b71Sopenharmony_ci return; 5731e41f4b71Sopenharmony_ci } 5732e41f4b71Sopenharmony_ci console.info('Succeeded in doing timeUpadate. seekDoneTime: ' + newTime); 5733e41f4b71Sopenharmony_ci}); 5734e41f4b71Sopenharmony_ciaudioPlayer.play(); //开始播放后,自动触发时间戳更新事件 5735e41f4b71Sopenharmony_ci``` 5736e41f4b71Sopenharmony_ci 5737e41f4b71Sopenharmony_ci### on('audioInterrupt')<sup>(deprecated)</sup> 5738e41f4b71Sopenharmony_ci 5739e41f4b71Sopenharmony_cion(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void 5740e41f4b71Sopenharmony_ci 5741e41f4b71Sopenharmony_ci监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。 5742e41f4b71Sopenharmony_ci 5743e41f4b71Sopenharmony_ci> **说明:** 5744e41f4b71Sopenharmony_ci> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。 5745e41f4b71Sopenharmony_ci 5746e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5747e41f4b71Sopenharmony_ci 5748e41f4b71Sopenharmony_ci**参数:** 5749e41f4b71Sopenharmony_ci 5750e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5751e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | 5752e41f4b71Sopenharmony_ci| type | string | 是 | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 | 5753e41f4b71Sopenharmony_ci| callback | function | 是 | 音频焦点变化事件回调方法。 | 5754e41f4b71Sopenharmony_ci 5755e41f4b71Sopenharmony_ci**示例:** 5756e41f4b71Sopenharmony_ci 5757e41f4b71Sopenharmony_ci```ts 5758e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit'; 5759e41f4b71Sopenharmony_ci 5760e41f4b71Sopenharmony_ciaudioPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => { 5761e41f4b71Sopenharmony_ci console.info('audioInterrupt called,and InterruptEvent info is:' + info) 5762e41f4b71Sopenharmony_ci}) 5763e41f4b71Sopenharmony_ci``` 5764e41f4b71Sopenharmony_ci 5765e41f4b71Sopenharmony_ci### on('error')<sup>(deprecated)</sup> 5766e41f4b71Sopenharmony_ci 5767e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void 5768e41f4b71Sopenharmony_ci 5769e41f4b71Sopenharmony_ci开始订阅音频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。 5770e41f4b71Sopenharmony_ci 5771e41f4b71Sopenharmony_ci> **说明:** 5772e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。 5773e41f4b71Sopenharmony_ci 5774e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5775e41f4b71Sopenharmony_ci 5776e41f4b71Sopenharmony_ci**参数:** 5777e41f4b71Sopenharmony_ci 5778e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5779e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ | 5780e41f4b71Sopenharmony_ci| type | string | 是 | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':音频播放中发生错误,触发该事件。 | 5781e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 播放错误事件回调方法。 | 5782e41f4b71Sopenharmony_ci 5783e41f4b71Sopenharmony_ci**示例:** 5784e41f4b71Sopenharmony_ci 5785e41f4b71Sopenharmony_ci```ts 5786e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5787e41f4b71Sopenharmony_ci 5788e41f4b71Sopenharmony_ciaudioPlayer.on('error', (error: BusinessError) => { //设置'error'事件回调 5789e41f4b71Sopenharmony_ci console.error(`audio error called, error: ${error}`); 5790e41f4b71Sopenharmony_ci}); 5791e41f4b71Sopenharmony_ciaudioPlayer.setVolume(3); //设置volume为无效值,触发'error'事件 5792e41f4b71Sopenharmony_ci``` 5793e41f4b71Sopenharmony_ci 5794e41f4b71Sopenharmony_ci## AudioState<sup>(deprecated)</sup> 5795e41f4b71Sopenharmony_ci 5796e41f4b71Sopenharmony_citype AudioState = 'idle' | 'playing' | 'paused' | 'stopped' | 'error' 5797e41f4b71Sopenharmony_ci 5798e41f4b71Sopenharmony_ci音频播放的状态机。可通过state属性获取当前状态。 5799e41f4b71Sopenharmony_ci 5800e41f4b71Sopenharmony_ci> **说明:** 5801e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。 5802e41f4b71Sopenharmony_ci 5803e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer 5804e41f4b71Sopenharmony_ci 5805e41f4b71Sopenharmony_ci| 类型 | 说明 | 5806e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------- | 5807e41f4b71Sopenharmony_ci| 'idle' | 音频播放空闲,dataload/reset成功后处于此状态。 | 5808e41f4b71Sopenharmony_ci| 'playing' | 音频正在播放,play成功后处于此状态。 | 5809e41f4b71Sopenharmony_ci| 'paused' | 音频暂停播放,pause成功后处于此状态。 | 5810e41f4b71Sopenharmony_ci| 'stopped' | 音频播放停止,stop/播放结束后处于此状态。 | 5811e41f4b71Sopenharmony_ci| 'error' | 错误状态。 | 5812e41f4b71Sopenharmony_ci 5813e41f4b71Sopenharmony_ci## VideoPlayer<sup>(deprecated)</sup> 5814e41f4b71Sopenharmony_ci 5815e41f4b71Sopenharmony_ci> **说明:** 5816e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。 5817e41f4b71Sopenharmony_ci 5818e41f4b71Sopenharmony_ci视频播放管理类,用于管理和播放视频媒体。在调用VideoPlayer的方法前,需要先通过[createVideoPlayer()](#mediacreatevideoplayerdeprecated)构建一个VideoPlayer实例。 5819e41f4b71Sopenharmony_ci 5820e41f4b71Sopenharmony_ci### 属性 5821e41f4b71Sopenharmony_ci 5822e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5823e41f4b71Sopenharmony_ci 5824e41f4b71Sopenharmony_ci| 名称 | 类型 | 只读 | 可选 | 说明 | 5825e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 5826e41f4b71Sopenharmony_ci| 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。 | 5827e41f4b71Sopenharmony_ci| 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/> | 5828e41f4b71Sopenharmony_ci| loop<sup>8+</sup> | boolean | 否 | 否 | 视频循环播放属性,设置为'true'表示循环播放。 | 5829e41f4b71Sopenharmony_ci| videoScaleType<sup>9+</sup> | [VideoScaleType](#videoscaletype9) | 否 | 是 | 视频缩放模式。默认值为VIDEO_SCALE_TYPE_FIT。 | 5830e41f4b71Sopenharmony_ci| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 否 | 是 | 音频焦点模型。 | 5831e41f4b71Sopenharmony_ci| currentTime<sup>8+</sup> | number | 是 | 否 | 视频的当前播放位置,单位为毫秒(ms)。 | 5832e41f4b71Sopenharmony_ci| duration<sup>8+</sup> | number | 是 | 否 | 视频时长,单位为毫秒(ms),返回-1表示直播模式。 | 5833e41f4b71Sopenharmony_ci| state<sup>8+</sup> | [VideoPlayState](#videoplaystatedeprecated) | 是 | 否 | 视频播放的状态。 | 5834e41f4b71Sopenharmony_ci| width<sup>8+</sup> | number | 是 | 否 | 视频宽,单位为像素(px)。 | 5835e41f4b71Sopenharmony_ci| height<sup>8+</sup> | number | 是 | 否 | 视频高,单位为像素(px)。 | 5836e41f4b71Sopenharmony_ci 5837e41f4b71Sopenharmony_ci### setDisplaySurface<sup>(deprecated)</sup> 5838e41f4b71Sopenharmony_ci 5839e41f4b71Sopenharmony_cisetDisplaySurface(surfaceId: string, callback: AsyncCallback\<void>): void 5840e41f4b71Sopenharmony_ci 5841e41f4b71Sopenharmony_ci设置SurfaceId。通过回调函数获取返回值。 5842e41f4b71Sopenharmony_ci 5843e41f4b71Sopenharmony_ci*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。 5844e41f4b71Sopenharmony_ci 5845e41f4b71Sopenharmony_ci> **说明:** 5846e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。 5847e41f4b71Sopenharmony_ci 5848e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5849e41f4b71Sopenharmony_ci 5850e41f4b71Sopenharmony_ci**参数:** 5851e41f4b71Sopenharmony_ci 5852e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5853e41f4b71Sopenharmony_ci| --------- | -------------------- | ---- | ------------------------- | 5854e41f4b71Sopenharmony_ci| surfaceId | string | 是 | SurfaceId | 5855e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当设置SurfaceId成功,err为undefined,否则为错误对象。 | 5856e41f4b71Sopenharmony_ci 5857e41f4b71Sopenharmony_ci**示例:** 5858e41f4b71Sopenharmony_ci 5859e41f4b71Sopenharmony_ci```ts 5860e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5861e41f4b71Sopenharmony_ci 5862e41f4b71Sopenharmony_cilet surfaceId: string = ''; 5863e41f4b71Sopenharmony_civideoPlayer.setDisplaySurface(surfaceId, (err: BusinessError) => { 5864e41f4b71Sopenharmony_ci if (err) { 5865e41f4b71Sopenharmony_ci console.error('Failed to set DisplaySurface!'); 5866e41f4b71Sopenharmony_ci } else { 5867e41f4b71Sopenharmony_ci console.info('Succeeded in setting DisplaySurface!'); 5868e41f4b71Sopenharmony_ci } 5869e41f4b71Sopenharmony_ci}); 5870e41f4b71Sopenharmony_ci``` 5871e41f4b71Sopenharmony_ci 5872e41f4b71Sopenharmony_ci### setDisplaySurface<sup>(deprecated)</sup> 5873e41f4b71Sopenharmony_ci 5874e41f4b71Sopenharmony_cisetDisplaySurface(surfaceId: string): Promise\<void> 5875e41f4b71Sopenharmony_ci 5876e41f4b71Sopenharmony_ci设置SurfaceId。通过Promise获取返回值。 5877e41f4b71Sopenharmony_ci 5878e41f4b71Sopenharmony_ci*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。 5879e41f4b71Sopenharmony_ci 5880e41f4b71Sopenharmony_ci> **说明:** 5881e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。 5882e41f4b71Sopenharmony_ci 5883e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5884e41f4b71Sopenharmony_ci 5885e41f4b71Sopenharmony_ci**参数:** 5886e41f4b71Sopenharmony_ci 5887e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5888e41f4b71Sopenharmony_ci| --------- | ------ | ---- | --------- | 5889e41f4b71Sopenharmony_ci| surfaceId | string | 是 | SurfaceId | 5890e41f4b71Sopenharmony_ci 5891e41f4b71Sopenharmony_ci**返回值:** 5892e41f4b71Sopenharmony_ci 5893e41f4b71Sopenharmony_ci| 类型 | 说明 | 5894e41f4b71Sopenharmony_ci| -------------- | ------------------------------ | 5895e41f4b71Sopenharmony_ci| Promise\<void> | 设置SurfaceId的Promise返回值。 | 5896e41f4b71Sopenharmony_ci 5897e41f4b71Sopenharmony_ci**示例:** 5898e41f4b71Sopenharmony_ci 5899e41f4b71Sopenharmony_ci```ts 5900e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5901e41f4b71Sopenharmony_ci 5902e41f4b71Sopenharmony_cilet surfaceId: string = ''; 5903e41f4b71Sopenharmony_civideoPlayer.setDisplaySurface(surfaceId).then(() => { 5904e41f4b71Sopenharmony_ci console.info('Succeeded in setting DisplaySurface'); 5905e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 5906e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 5907e41f4b71Sopenharmony_ci}); 5908e41f4b71Sopenharmony_ci``` 5909e41f4b71Sopenharmony_ci 5910e41f4b71Sopenharmony_ci### prepare<sup>(deprecated)</sup> 5911e41f4b71Sopenharmony_ci 5912e41f4b71Sopenharmony_ciprepare(callback: AsyncCallback\<void>): void 5913e41f4b71Sopenharmony_ci 5914e41f4b71Sopenharmony_ci准备播放视频。通过回调函数获取返回值。 5915e41f4b71Sopenharmony_ci 5916e41f4b71Sopenharmony_ci> **说明:** 5917e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9)替代。 5918e41f4b71Sopenharmony_ci 5919e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5920e41f4b71Sopenharmony_ci 5921e41f4b71Sopenharmony_ci**参数:** 5922e41f4b71Sopenharmony_ci 5923e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5924e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ | 5925e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当准备播放视频成功,err为undefined,否则为错误对象。| 5926e41f4b71Sopenharmony_ci 5927e41f4b71Sopenharmony_ci**示例:** 5928e41f4b71Sopenharmony_ci 5929e41f4b71Sopenharmony_ci```ts 5930e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5931e41f4b71Sopenharmony_ci 5932e41f4b71Sopenharmony_civideoPlayer.prepare((err: BusinessError) => { 5933e41f4b71Sopenharmony_ci if (err) { 5934e41f4b71Sopenharmony_ci console.error('Failed to prepare!'); 5935e41f4b71Sopenharmony_ci } else { 5936e41f4b71Sopenharmony_ci console.info('Succeeded in preparing!'); 5937e41f4b71Sopenharmony_ci } 5938e41f4b71Sopenharmony_ci}); 5939e41f4b71Sopenharmony_ci``` 5940e41f4b71Sopenharmony_ci 5941e41f4b71Sopenharmony_ci### prepare<sup>(deprecated)</sup> 5942e41f4b71Sopenharmony_ci 5943e41f4b71Sopenharmony_ciprepare(): Promise\<void> 5944e41f4b71Sopenharmony_ci 5945e41f4b71Sopenharmony_ci准备播放视频。通过Promise获取返回值。 5946e41f4b71Sopenharmony_ci 5947e41f4b71Sopenharmony_ci> **说明:** 5948e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9-1)替代。 5949e41f4b71Sopenharmony_ci 5950e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5951e41f4b71Sopenharmony_ci 5952e41f4b71Sopenharmony_ci**返回值:** 5953e41f4b71Sopenharmony_ci 5954e41f4b71Sopenharmony_ci| 类型 | 说明 | 5955e41f4b71Sopenharmony_ci| -------------- | ----------------------------- | 5956e41f4b71Sopenharmony_ci| Promise\<void> | 准备播放视频的Promise返回值。 | 5957e41f4b71Sopenharmony_ci 5958e41f4b71Sopenharmony_ci**示例:** 5959e41f4b71Sopenharmony_ci 5960e41f4b71Sopenharmony_ci```ts 5961e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5962e41f4b71Sopenharmony_ci 5963e41f4b71Sopenharmony_civideoPlayer.prepare().then(() => { 5964e41f4b71Sopenharmony_ci console.info('Succeeded in preparing'); 5965e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 5966e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 5967e41f4b71Sopenharmony_ci}); 5968e41f4b71Sopenharmony_ci``` 5969e41f4b71Sopenharmony_ci 5970e41f4b71Sopenharmony_ci### play<sup>(deprecated)</sup> 5971e41f4b71Sopenharmony_ci 5972e41f4b71Sopenharmony_ciplay(callback: AsyncCallback\<void>): void 5973e41f4b71Sopenharmony_ci 5974e41f4b71Sopenharmony_ci开始播放视频。通过回调函数获取返回值。 5975e41f4b71Sopenharmony_ci 5976e41f4b71Sopenharmony_ci> **说明:** 5977e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。 5978e41f4b71Sopenharmony_ci 5979e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 5980e41f4b71Sopenharmony_ci 5981e41f4b71Sopenharmony_ci**参数:** 5982e41f4b71Sopenharmony_ci 5983e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 5984e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ | 5985e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当开始播放视频成功,err为undefined,否则为错误对象。 | 5986e41f4b71Sopenharmony_ci 5987e41f4b71Sopenharmony_ci**示例:** 5988e41f4b71Sopenharmony_ci 5989e41f4b71Sopenharmony_ci```ts 5990e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 5991e41f4b71Sopenharmony_ci 5992e41f4b71Sopenharmony_civideoPlayer.play((err: BusinessError) => { 5993e41f4b71Sopenharmony_ci if (err) { 5994e41f4b71Sopenharmony_ci console.error('Failed to play!'); 5995e41f4b71Sopenharmony_ci } else { 5996e41f4b71Sopenharmony_ci console.info('Succeeded in playing!'); 5997e41f4b71Sopenharmony_ci } 5998e41f4b71Sopenharmony_ci}); 5999e41f4b71Sopenharmony_ci``` 6000e41f4b71Sopenharmony_ci 6001e41f4b71Sopenharmony_ci### play<sup>(deprecated)</sup> 6002e41f4b71Sopenharmony_ci 6003e41f4b71Sopenharmony_ciplay(): Promise\<void> 6004e41f4b71Sopenharmony_ci 6005e41f4b71Sopenharmony_ci开始播放视频。通过Promise获取返回值。 6006e41f4b71Sopenharmony_ci 6007e41f4b71Sopenharmony_ci> **说明:** 6008e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9-1)替代。 6009e41f4b71Sopenharmony_ci 6010e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6011e41f4b71Sopenharmony_ci 6012e41f4b71Sopenharmony_ci**返回值:** 6013e41f4b71Sopenharmony_ci 6014e41f4b71Sopenharmony_ci| 类型 | 说明 | 6015e41f4b71Sopenharmony_ci| -------------- | ----------------------------- | 6016e41f4b71Sopenharmony_ci| Promise\<void> | 开始播放视频的Promise返回值。 | 6017e41f4b71Sopenharmony_ci 6018e41f4b71Sopenharmony_ci**示例:** 6019e41f4b71Sopenharmony_ci 6020e41f4b71Sopenharmony_ci```ts 6021e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6022e41f4b71Sopenharmony_ci 6023e41f4b71Sopenharmony_civideoPlayer.play().then(() => { 6024e41f4b71Sopenharmony_ci console.info('Succeeded in playing'); 6025e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 6026e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 6027e41f4b71Sopenharmony_ci}); 6028e41f4b71Sopenharmony_ci``` 6029e41f4b71Sopenharmony_ci 6030e41f4b71Sopenharmony_ci### pause<sup>(deprecated)</sup> 6031e41f4b71Sopenharmony_ci 6032e41f4b71Sopenharmony_cipause(callback: AsyncCallback\<void>): void 6033e41f4b71Sopenharmony_ci 6034e41f4b71Sopenharmony_ci通过回调方式暂停播放视频。通过回调函数获取返回值。 6035e41f4b71Sopenharmony_ci 6036e41f4b71Sopenharmony_ci> **说明:** 6037e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。 6038e41f4b71Sopenharmony_ci 6039e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6040e41f4b71Sopenharmony_ci 6041e41f4b71Sopenharmony_ci**参数:** 6042e41f4b71Sopenharmony_ci 6043e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6044e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ | 6045e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当暂停播放视频成功,err为undefined,否则为错误对象。 | 6046e41f4b71Sopenharmony_ci 6047e41f4b71Sopenharmony_ci**示例:** 6048e41f4b71Sopenharmony_ci 6049e41f4b71Sopenharmony_ci```ts 6050e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6051e41f4b71Sopenharmony_ci 6052e41f4b71Sopenharmony_civideoPlayer.pause((err: BusinessError) => { 6053e41f4b71Sopenharmony_ci if (err) { 6054e41f4b71Sopenharmony_ci console.error('Failed to pause!'); 6055e41f4b71Sopenharmony_ci } else { 6056e41f4b71Sopenharmony_ci console.info('Succeeded in pausing!'); 6057e41f4b71Sopenharmony_ci } 6058e41f4b71Sopenharmony_ci}); 6059e41f4b71Sopenharmony_ci``` 6060e41f4b71Sopenharmony_ci 6061e41f4b71Sopenharmony_ci### pause<sup>(deprecated)</sup> 6062e41f4b71Sopenharmony_ci 6063e41f4b71Sopenharmony_cipause(): Promise\<void> 6064e41f4b71Sopenharmony_ci 6065e41f4b71Sopenharmony_ci暂停播放视频。通过Promise获取返回值。 6066e41f4b71Sopenharmony_ci 6067e41f4b71Sopenharmony_ci> **说明:** 6068e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9-1)替代。 6069e41f4b71Sopenharmony_ci 6070e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6071e41f4b71Sopenharmony_ci 6072e41f4b71Sopenharmony_ci**返回值:** 6073e41f4b71Sopenharmony_ci 6074e41f4b71Sopenharmony_ci| 类型 | 说明 | 6075e41f4b71Sopenharmony_ci| -------------- | ----------------------------- | 6076e41f4b71Sopenharmony_ci| Promise\<void> | 暂停播放视频的Promise返回值。 | 6077e41f4b71Sopenharmony_ci 6078e41f4b71Sopenharmony_ci**示例:** 6079e41f4b71Sopenharmony_ci 6080e41f4b71Sopenharmony_ci```ts 6081e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6082e41f4b71Sopenharmony_ci 6083e41f4b71Sopenharmony_civideoPlayer.pause().then(() => { 6084e41f4b71Sopenharmony_ci console.info('Succeeded in pausing'); 6085e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 6086e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 6087e41f4b71Sopenharmony_ci}); 6088e41f4b71Sopenharmony_ci``` 6089e41f4b71Sopenharmony_ci 6090e41f4b71Sopenharmony_ci### stop<sup>(deprecated)</sup> 6091e41f4b71Sopenharmony_ci 6092e41f4b71Sopenharmony_cistop(callback: AsyncCallback\<void>): void 6093e41f4b71Sopenharmony_ci 6094e41f4b71Sopenharmony_ci通过回调方式停止播放视频。通过回调函数获取返回值。 6095e41f4b71Sopenharmony_ci 6096e41f4b71Sopenharmony_ci> **说明:** 6097e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。 6098e41f4b71Sopenharmony_ci 6099e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6100e41f4b71Sopenharmony_ci 6101e41f4b71Sopenharmony_ci**参数:** 6102e41f4b71Sopenharmony_ci 6103e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6104e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ | 6105e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当停止播放视频成功,err为undefined,否则为错误对象。 | 6106e41f4b71Sopenharmony_ci 6107e41f4b71Sopenharmony_ci**示例:** 6108e41f4b71Sopenharmony_ci 6109e41f4b71Sopenharmony_ci```ts 6110e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6111e41f4b71Sopenharmony_ci 6112e41f4b71Sopenharmony_civideoPlayer.stop((err: BusinessError) => { 6113e41f4b71Sopenharmony_ci if (err) { 6114e41f4b71Sopenharmony_ci console.error('Failed to stop!'); 6115e41f4b71Sopenharmony_ci } else { 6116e41f4b71Sopenharmony_ci console.info('Succeeded in stopping!'); 6117e41f4b71Sopenharmony_ci } 6118e41f4b71Sopenharmony_ci}); 6119e41f4b71Sopenharmony_ci``` 6120e41f4b71Sopenharmony_ci 6121e41f4b71Sopenharmony_ci### stop<sup>(deprecated)</sup> 6122e41f4b71Sopenharmony_ci 6123e41f4b71Sopenharmony_cistop(): Promise\<void> 6124e41f4b71Sopenharmony_ci 6125e41f4b71Sopenharmony_ci停止播放视频。通过Promise获取返回值。 6126e41f4b71Sopenharmony_ci 6127e41f4b71Sopenharmony_ci> **说明:** 6128e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9-1)替代。 6129e41f4b71Sopenharmony_ci 6130e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6131e41f4b71Sopenharmony_ci 6132e41f4b71Sopenharmony_ci**返回值:** 6133e41f4b71Sopenharmony_ci 6134e41f4b71Sopenharmony_ci| 类型 | 说明 | 6135e41f4b71Sopenharmony_ci| -------------- | ----------------------------- | 6136e41f4b71Sopenharmony_ci| Promise\<void> | 停止播放视频的Promise返回值。 | 6137e41f4b71Sopenharmony_ci 6138e41f4b71Sopenharmony_ci**示例:** 6139e41f4b71Sopenharmony_ci 6140e41f4b71Sopenharmony_ci```ts 6141e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6142e41f4b71Sopenharmony_ci 6143e41f4b71Sopenharmony_civideoPlayer.stop().then(() => { 6144e41f4b71Sopenharmony_ci console.info('Succeeded in stopping'); 6145e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 6146e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 6147e41f4b71Sopenharmony_ci}); 6148e41f4b71Sopenharmony_ci``` 6149e41f4b71Sopenharmony_ci 6150e41f4b71Sopenharmony_ci### reset<sup>(deprecated)</sup> 6151e41f4b71Sopenharmony_ci 6152e41f4b71Sopenharmony_cireset(callback: AsyncCallback\<void>): void 6153e41f4b71Sopenharmony_ci 6154e41f4b71Sopenharmony_ci重置播放视频。通过回调函数获取返回值。 6155e41f4b71Sopenharmony_ci 6156e41f4b71Sopenharmony_ci> **说明:** 6157e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。 6158e41f4b71Sopenharmony_ci 6159e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6160e41f4b71Sopenharmony_ci 6161e41f4b71Sopenharmony_ci**参数:** 6162e41f4b71Sopenharmony_ci 6163e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6164e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ | 6165e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当重置播放视频成功,err为undefined,否则为错误对象。 | 6166e41f4b71Sopenharmony_ci 6167e41f4b71Sopenharmony_ci**示例:** 6168e41f4b71Sopenharmony_ci 6169e41f4b71Sopenharmony_ci```ts 6170e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6171e41f4b71Sopenharmony_ci 6172e41f4b71Sopenharmony_civideoPlayer.reset((err: BusinessError) => { 6173e41f4b71Sopenharmony_ci if (err) { 6174e41f4b71Sopenharmony_ci console.error('Failed to reset!'); 6175e41f4b71Sopenharmony_ci } else { 6176e41f4b71Sopenharmony_ci console.info('Succeeded in resetting!'); 6177e41f4b71Sopenharmony_ci } 6178e41f4b71Sopenharmony_ci}); 6179e41f4b71Sopenharmony_ci``` 6180e41f4b71Sopenharmony_ci 6181e41f4b71Sopenharmony_ci### reset<sup>(deprecated)</sup> 6182e41f4b71Sopenharmony_ci 6183e41f4b71Sopenharmony_cireset(): Promise\<void> 6184e41f4b71Sopenharmony_ci 6185e41f4b71Sopenharmony_ci重置播放视频。通过Promise获取返回值。 6186e41f4b71Sopenharmony_ci 6187e41f4b71Sopenharmony_ci> **说明:** 6188e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9-1)替代。 6189e41f4b71Sopenharmony_ci 6190e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6191e41f4b71Sopenharmony_ci 6192e41f4b71Sopenharmony_ci**返回值:** 6193e41f4b71Sopenharmony_ci 6194e41f4b71Sopenharmony_ci| 类型 | 说明 | 6195e41f4b71Sopenharmony_ci| -------------- | ----------------------------- | 6196e41f4b71Sopenharmony_ci| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 6197e41f4b71Sopenharmony_ci 6198e41f4b71Sopenharmony_ci**示例:** 6199e41f4b71Sopenharmony_ci 6200e41f4b71Sopenharmony_ci```ts 6201e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6202e41f4b71Sopenharmony_ci 6203e41f4b71Sopenharmony_civideoPlayer.reset().then(() => { 6204e41f4b71Sopenharmony_ci console.info('Succeeded in resetting'); 6205e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 6206e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 6207e41f4b71Sopenharmony_ci}); 6208e41f4b71Sopenharmony_ci``` 6209e41f4b71Sopenharmony_ci 6210e41f4b71Sopenharmony_ci### seek<sup>(deprecated)</sup> 6211e41f4b71Sopenharmony_ci 6212e41f4b71Sopenharmony_ciseek(timeMs: number, callback: AsyncCallback\<number>): void 6213e41f4b71Sopenharmony_ci 6214e41f4b71Sopenharmony_ci跳转到指定播放位置,默认跳转到指定时间点的上一个关键帧。通过回调函数获取返回值。 6215e41f4b71Sopenharmony_ci 6216e41f4b71Sopenharmony_ci> **说明:** 6217e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 6218e41f4b71Sopenharmony_ci 6219e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6220e41f4b71Sopenharmony_ci 6221e41f4b71Sopenharmony_ci**参数:** 6222e41f4b71Sopenharmony_ci 6223e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6224e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 6225e41f4b71Sopenharmony_ci| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 6226e41f4b71Sopenharmony_ci| callback | AsyncCallback\<number> | 是 | 回调函数。跳转到指定播放位置成功时,err为undefined,data为获取到的跳转到的播放位置,否则为错误对象。 | 6227e41f4b71Sopenharmony_ci 6228e41f4b71Sopenharmony_ci**示例:** 6229e41f4b71Sopenharmony_ci 6230e41f4b71Sopenharmony_ci```ts 6231e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6232e41f4b71Sopenharmony_ci 6233e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer; 6234e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6235e41f4b71Sopenharmony_ci if (video != null) { 6236e41f4b71Sopenharmony_ci videoPlayer = video; 6237e41f4b71Sopenharmony_ci console.info('Succeeded in creating VideoPlayer'); 6238e41f4b71Sopenharmony_ci } else { 6239e41f4b71Sopenharmony_ci console.error(`Failed to create VideoPlayer, error:${error}`); 6240e41f4b71Sopenharmony_ci } 6241e41f4b71Sopenharmony_ci}); 6242e41f4b71Sopenharmony_ci 6243e41f4b71Sopenharmony_cilet seekTime: number = 5000; 6244e41f4b71Sopenharmony_civideoPlayer.seek(seekTime, (err: BusinessError, result: number) => { 6245e41f4b71Sopenharmony_ci if (err) { 6246e41f4b71Sopenharmony_ci console.error('Failed to do seek!'); 6247e41f4b71Sopenharmony_ci } else { 6248e41f4b71Sopenharmony_ci console.info('Succeeded in doing seek!'); 6249e41f4b71Sopenharmony_ci } 6250e41f4b71Sopenharmony_ci}); 6251e41f4b71Sopenharmony_ci``` 6252e41f4b71Sopenharmony_ci 6253e41f4b71Sopenharmony_ci### seek<sup>(deprecated)</sup> 6254e41f4b71Sopenharmony_ci 6255e41f4b71Sopenharmony_ciseek(timeMs: number, mode:SeekMode, callback: AsyncCallback\<number>): void 6256e41f4b71Sopenharmony_ci 6257e41f4b71Sopenharmony_ci跳转到指定播放位置。通过回调函数获取返回值。 6258e41f4b71Sopenharmony_ci 6259e41f4b71Sopenharmony_ci> **说明:** 6260e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 6261e41f4b71Sopenharmony_ci 6262e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6263e41f4b71Sopenharmony_ci 6264e41f4b71Sopenharmony_ci**参数:** 6265e41f4b71Sopenharmony_ci 6266e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6267e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ------------------------------------------------------------ | 6268e41f4b71Sopenharmony_ci| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 6269e41f4b71Sopenharmony_ci| mode | [SeekMode](#seekmode8) | 是 | 跳转模式。 | 6270e41f4b71Sopenharmony_ci| callback | AsyncCallback\<number> | 是 | 回调函数。跳转到指定播放位置成功时,err为undefined,data为获取到的跳转到的播放位置,否则为错误对象。 | 6271e41f4b71Sopenharmony_ci 6272e41f4b71Sopenharmony_ci**示例:** 6273e41f4b71Sopenharmony_ci 6274e41f4b71Sopenharmony_ci```ts 6275e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6276e41f4b71Sopenharmony_ci 6277e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer | null = null; 6278e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6279e41f4b71Sopenharmony_ci if (video != null) { 6280e41f4b71Sopenharmony_ci videoPlayer = video; 6281e41f4b71Sopenharmony_ci console.info('Succeeded in creating VideoPlayer'); 6282e41f4b71Sopenharmony_ci } else { 6283e41f4b71Sopenharmony_ci console.error(`Failed to create VideoPlayer, error:${error}`); 6284e41f4b71Sopenharmony_ci } 6285e41f4b71Sopenharmony_ci}); 6286e41f4b71Sopenharmony_cilet seekTime: number = 5000; 6287e41f4b71Sopenharmony_ciif (videoPlayer) { 6288e41f4b71Sopenharmony_ci (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC, (err: BusinessError, result: number) => { 6289e41f4b71Sopenharmony_ci if (err) { 6290e41f4b71Sopenharmony_ci console.error('Failed to do seek!'); 6291e41f4b71Sopenharmony_ci } else { 6292e41f4b71Sopenharmony_ci console.info('Succeeded in doing seek!'); 6293e41f4b71Sopenharmony_ci } 6294e41f4b71Sopenharmony_ci }); 6295e41f4b71Sopenharmony_ci} 6296e41f4b71Sopenharmony_ci``` 6297e41f4b71Sopenharmony_ci 6298e41f4b71Sopenharmony_ci### seek<sup>(deprecated)</sup> 6299e41f4b71Sopenharmony_ci 6300e41f4b71Sopenharmony_ciseek(timeMs: number, mode?:SeekMode): Promise\<number> 6301e41f4b71Sopenharmony_ci 6302e41f4b71Sopenharmony_ci跳转到指定播放位置,如果没有设置mode则跳转到指定时间点的上一个关键帧。通过Promise获取返回值。 6303e41f4b71Sopenharmony_ci 6304e41f4b71Sopenharmony_ci> **说明:** 6305e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。 6306e41f4b71Sopenharmony_ci 6307e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6308e41f4b71Sopenharmony_ci 6309e41f4b71Sopenharmony_ci**参数:** 6310e41f4b71Sopenharmony_ci 6311e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6312e41f4b71Sopenharmony_ci| ------ | ---------------------- | ---- | ------------------------------------------------------------ | 6313e41f4b71Sopenharmony_ci| timeMs | number | 是 | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 | 6314e41f4b71Sopenharmony_ci| mode | [SeekMode](#seekmode8) | 否 | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式。 | 6315e41f4b71Sopenharmony_ci 6316e41f4b71Sopenharmony_ci**返回值:** 6317e41f4b71Sopenharmony_ci 6318e41f4b71Sopenharmony_ci| 类型 | 说明 | 6319e41f4b71Sopenharmony_ci| ---------------- | ------------------------------------------- | 6320e41f4b71Sopenharmony_ci| Promise\<number> | 跳转到指定播放位置的Promise返回值,单位ms。 | 6321e41f4b71Sopenharmony_ci 6322e41f4b71Sopenharmony_ci**示例:** 6323e41f4b71Sopenharmony_ci 6324e41f4b71Sopenharmony_ci```ts 6325e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6326e41f4b71Sopenharmony_ci 6327e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer | null = null; 6328e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6329e41f4b71Sopenharmony_ci if (video != null) { 6330e41f4b71Sopenharmony_ci videoPlayer = video; 6331e41f4b71Sopenharmony_ci console.info('Succeeded in creating VideoPlayer'); 6332e41f4b71Sopenharmony_ci } else { 6333e41f4b71Sopenharmony_ci console.error(`Failed to create VideoPlayer, error:${error}`); 6334e41f4b71Sopenharmony_ci } 6335e41f4b71Sopenharmony_ci}); 6336e41f4b71Sopenharmony_cilet seekTime: number = 5000; 6337e41f4b71Sopenharmony_ciif (videoPlayer) { 6338e41f4b71Sopenharmony_ci (videoPlayer as media.VideoPlayer).seek(seekTime).then((seekDoneTime: number) => { // seekDoneTime表示seek完成后的时间点 6339e41f4b71Sopenharmony_ci console.info('Succeeded in doing seek'); 6340e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 6341e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 6342e41f4b71Sopenharmony_ci }); 6343e41f4b71Sopenharmony_ci 6344e41f4b71Sopenharmony_ci (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime: number) => { 6345e41f4b71Sopenharmony_ci console.info('Succeeded in doing seek'); 6346e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 6347e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 6348e41f4b71Sopenharmony_ci }); 6349e41f4b71Sopenharmony_ci} 6350e41f4b71Sopenharmony_ci``` 6351e41f4b71Sopenharmony_ci 6352e41f4b71Sopenharmony_ci### setVolume<sup>(deprecated)</sup> 6353e41f4b71Sopenharmony_ci 6354e41f4b71Sopenharmony_cisetVolume(vol: number, callback: AsyncCallback\<void>): void 6355e41f4b71Sopenharmony_ci 6356e41f4b71Sopenharmony_ci设置音量。通过回调函数获取返回值。 6357e41f4b71Sopenharmony_ci 6358e41f4b71Sopenharmony_ci> **说明:** 6359e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。 6360e41f4b71Sopenharmony_ci 6361e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6362e41f4b71Sopenharmony_ci 6363e41f4b71Sopenharmony_ci**参数:** 6364e41f4b71Sopenharmony_ci 6365e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6366e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------------------------------ | 6367e41f4b71Sopenharmony_ci| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 6368e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当设置音量成功,err为undefined,否则为错误对象。 | 6369e41f4b71Sopenharmony_ci 6370e41f4b71Sopenharmony_ci**示例:** 6371e41f4b71Sopenharmony_ci 6372e41f4b71Sopenharmony_ci```ts 6373e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6374e41f4b71Sopenharmony_ci 6375e41f4b71Sopenharmony_cilet vol: number = 0.5; 6376e41f4b71Sopenharmony_civideoPlayer.setVolume(vol, (err: BusinessError) => { 6377e41f4b71Sopenharmony_ci if (err) { 6378e41f4b71Sopenharmony_ci console.error('Failed to set Volume!'); 6379e41f4b71Sopenharmony_ci } else { 6380e41f4b71Sopenharmony_ci console.info('Succeeded in setting Volume!'); 6381e41f4b71Sopenharmony_ci } 6382e41f4b71Sopenharmony_ci}); 6383e41f4b71Sopenharmony_ci``` 6384e41f4b71Sopenharmony_ci 6385e41f4b71Sopenharmony_ci### setVolume<sup>(deprecated)</sup> 6386e41f4b71Sopenharmony_ci 6387e41f4b71Sopenharmony_cisetVolume(vol: number): Promise\<void> 6388e41f4b71Sopenharmony_ci 6389e41f4b71Sopenharmony_ci设置音量。通过Promise获取返回值。 6390e41f4b71Sopenharmony_ci 6391e41f4b71Sopenharmony_ci> **说明:** 6392e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。 6393e41f4b71Sopenharmony_ci 6394e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6395e41f4b71Sopenharmony_ci 6396e41f4b71Sopenharmony_ci**参数:** 6397e41f4b71Sopenharmony_ci 6398e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6399e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ | 6400e41f4b71Sopenharmony_ci| vol | number | 是 | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 | 6401e41f4b71Sopenharmony_ci 6402e41f4b71Sopenharmony_ci**返回值:** 6403e41f4b71Sopenharmony_ci 6404e41f4b71Sopenharmony_ci| 类型 | 说明 | 6405e41f4b71Sopenharmony_ci| -------------- | ------------------------- | 6406e41f4b71Sopenharmony_ci| Promise\<void> | 设置音量的Promise返回值。 | 6407e41f4b71Sopenharmony_ci 6408e41f4b71Sopenharmony_ci**示例:** 6409e41f4b71Sopenharmony_ci 6410e41f4b71Sopenharmony_ci```ts 6411e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6412e41f4b71Sopenharmony_ci 6413e41f4b71Sopenharmony_cilet vol: number = 0.5; 6414e41f4b71Sopenharmony_civideoPlayer.setVolume(vol).then(() => { 6415e41f4b71Sopenharmony_ci console.info('Succeeded in setting Volume'); 6416e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 6417e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 6418e41f4b71Sopenharmony_ci}); 6419e41f4b71Sopenharmony_ci``` 6420e41f4b71Sopenharmony_ci 6421e41f4b71Sopenharmony_ci### release<sup>(deprecated)</sup> 6422e41f4b71Sopenharmony_ci 6423e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void 6424e41f4b71Sopenharmony_ci 6425e41f4b71Sopenharmony_ci释放视频资源。通过回调函数获取返回值。 6426e41f4b71Sopenharmony_ci 6427e41f4b71Sopenharmony_ci> **说明:** 6428e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。 6429e41f4b71Sopenharmony_ci 6430e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6431e41f4b71Sopenharmony_ci 6432e41f4b71Sopenharmony_ci**参数:** 6433e41f4b71Sopenharmony_ci 6434e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6435e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ | 6436e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当释放视频资源成功,err为undefined,否则为错误对象。 | 6437e41f4b71Sopenharmony_ci 6438e41f4b71Sopenharmony_ci**示例:** 6439e41f4b71Sopenharmony_ci 6440e41f4b71Sopenharmony_ci```ts 6441e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6442e41f4b71Sopenharmony_ci 6443e41f4b71Sopenharmony_civideoPlayer.release((err: BusinessError) => { 6444e41f4b71Sopenharmony_ci if (err) { 6445e41f4b71Sopenharmony_ci console.error('Failed to release!'); 6446e41f4b71Sopenharmony_ci } else { 6447e41f4b71Sopenharmony_ci console.info('Succeeded in releasing!'); 6448e41f4b71Sopenharmony_ci } 6449e41f4b71Sopenharmony_ci}); 6450e41f4b71Sopenharmony_ci``` 6451e41f4b71Sopenharmony_ci 6452e41f4b71Sopenharmony_ci### release<sup>(deprecated)</sup> 6453e41f4b71Sopenharmony_ci 6454e41f4b71Sopenharmony_cirelease(): Promise\<void> 6455e41f4b71Sopenharmony_ci 6456e41f4b71Sopenharmony_ci释放视频资源。通过Promise获取返回值。 6457e41f4b71Sopenharmony_ci 6458e41f4b71Sopenharmony_ci> **说明:** 6459e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9-1)替代。 6460e41f4b71Sopenharmony_ci 6461e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6462e41f4b71Sopenharmony_ci 6463e41f4b71Sopenharmony_ci**返回值:** 6464e41f4b71Sopenharmony_ci 6465e41f4b71Sopenharmony_ci| 类型 | 说明 | 6466e41f4b71Sopenharmony_ci| -------------- | ----------------------------- | 6467e41f4b71Sopenharmony_ci| Promise\<void> | 释放视频资源的Promise返回值。 | 6468e41f4b71Sopenharmony_ci 6469e41f4b71Sopenharmony_ci**示例:** 6470e41f4b71Sopenharmony_ci 6471e41f4b71Sopenharmony_ci```ts 6472e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6473e41f4b71Sopenharmony_ci 6474e41f4b71Sopenharmony_civideoPlayer.release().then(() => { 6475e41f4b71Sopenharmony_ci console.info('Succeeded in releasing'); 6476e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 6477e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 6478e41f4b71Sopenharmony_ci}); 6479e41f4b71Sopenharmony_ci``` 6480e41f4b71Sopenharmony_ci 6481e41f4b71Sopenharmony_ci### getTrackDescription<sup>(deprecated)</sup> 6482e41f4b71Sopenharmony_ci 6483e41f4b71Sopenharmony_cigetTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void 6484e41f4b71Sopenharmony_ci 6485e41f4b71Sopenharmony_ci获取视频轨道信息。通过回调函数获取返回值。 6486e41f4b71Sopenharmony_ci 6487e41f4b71Sopenharmony_ci> **说明:** 6488e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。 6489e41f4b71Sopenharmony_ci 6490e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6491e41f4b71Sopenharmony_ci 6492e41f4b71Sopenharmony_ci**参数:** 6493e41f4b71Sopenharmony_ci 6494e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6495e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ | 6496e41f4b71Sopenharmony_ci| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是 | 回调函数。获取视频轨道信息成功时,err为undefined,data为获取到的视频轨道信息MediaDescription数组,否则为错误对象。 | 6497e41f4b71Sopenharmony_ci 6498e41f4b71Sopenharmony_ci**示例:** 6499e41f4b71Sopenharmony_ci 6500e41f4b71Sopenharmony_ci```ts 6501e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6502e41f4b71Sopenharmony_ci 6503e41f4b71Sopenharmony_civideoPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => { 6504e41f4b71Sopenharmony_ci if ((arrList) != null) { 6505e41f4b71Sopenharmony_ci console.info('Succeeded in getting TrackDescription'); 6506e41f4b71Sopenharmony_ci } else { 6507e41f4b71Sopenharmony_ci console.error(`Failed to get TrackDescription, error:${error}`); 6508e41f4b71Sopenharmony_ci } 6509e41f4b71Sopenharmony_ci}); 6510e41f4b71Sopenharmony_ci``` 6511e41f4b71Sopenharmony_ci 6512e41f4b71Sopenharmony_ci### getTrackDescription<sup>(deprecated)</sup> 6513e41f4b71Sopenharmony_ci 6514e41f4b71Sopenharmony_cigetTrackDescription(): Promise\<Array\<MediaDescription>> 6515e41f4b71Sopenharmony_ci 6516e41f4b71Sopenharmony_ci获取视频轨道信息。通过Promise获取返回值。 6517e41f4b71Sopenharmony_ci 6518e41f4b71Sopenharmony_ci> **说明:** 6519e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。 6520e41f4b71Sopenharmony_ci 6521e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6522e41f4b71Sopenharmony_ci 6523e41f4b71Sopenharmony_ci**返回值:** 6524e41f4b71Sopenharmony_ci 6525e41f4b71Sopenharmony_ci| 类型 | 说明 | 6526e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ----------------------------------------------- | 6527e41f4b71Sopenharmony_ci| Promise<Array<[MediaDescription](#mediadescription8)>> | Promise对象,返回获取的视频轨道信息MediaDescription数组。 | 6528e41f4b71Sopenharmony_ci 6529e41f4b71Sopenharmony_ci**示例:** 6530e41f4b71Sopenharmony_ci 6531e41f4b71Sopenharmony_ci```ts 6532e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6533e41f4b71Sopenharmony_ci 6534e41f4b71Sopenharmony_civideoPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => { 6535e41f4b71Sopenharmony_ci if (arrList != null) { 6536e41f4b71Sopenharmony_ci console.info('Succeeded in getting TrackDescription'); 6537e41f4b71Sopenharmony_ci } else { 6538e41f4b71Sopenharmony_ci console.error('Failed to get TrackDescription'); 6539e41f4b71Sopenharmony_ci } 6540e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 6541e41f4b71Sopenharmony_ci console.error(`video catchCallback, error:${error}`); 6542e41f4b71Sopenharmony_ci}); 6543e41f4b71Sopenharmony_ci``` 6544e41f4b71Sopenharmony_ci 6545e41f4b71Sopenharmony_ci### setSpeed<sup>(deprecated)</sup> 6546e41f4b71Sopenharmony_ci 6547e41f4b71Sopenharmony_cisetSpeed(speed: number, callback: AsyncCallback\<number>): void 6548e41f4b71Sopenharmony_ci 6549e41f4b71Sopenharmony_ci设置播放速度。通过回调函数获取返回值。 6550e41f4b71Sopenharmony_ci 6551e41f4b71Sopenharmony_ci> **说明:** 6552e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。 6553e41f4b71Sopenharmony_ci 6554e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6555e41f4b71Sopenharmony_ci 6556e41f4b71Sopenharmony_ci**参数:** 6557e41f4b71Sopenharmony_ci 6558e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6559e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ---------------------------------------------------------- | 6560e41f4b71Sopenharmony_ci| speed | number | 是 | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 6561e41f4b71Sopenharmony_ci| callback | AsyncCallback\<number> | 是 | 回调函数。设置播放速度成功时,err为undefined,data为设置的播放速度,否则为错误对象。 | 6562e41f4b71Sopenharmony_ci 6563e41f4b71Sopenharmony_ci**示例:** 6564e41f4b71Sopenharmony_ci 6565e41f4b71Sopenharmony_ci```ts 6566e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6567e41f4b71Sopenharmony_ci 6568e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer | null = null; 6569e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6570e41f4b71Sopenharmony_ci if (video != null) { 6571e41f4b71Sopenharmony_ci videoPlayer = video; 6572e41f4b71Sopenharmony_ci console.info('Succeeded in creating VideoPlayer'); 6573e41f4b71Sopenharmony_ci } else { 6574e41f4b71Sopenharmony_ci console.error(`Failed to create VideoPlayer, error:${error}`); 6575e41f4b71Sopenharmony_ci } 6576e41f4b71Sopenharmony_ci}); 6577e41f4b71Sopenharmony_cilet speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X; 6578e41f4b71Sopenharmony_ciif (videoPlayer) { 6579e41f4b71Sopenharmony_ci (videoPlayer as media.VideoPlayer).setSpeed(speed, (err: BusinessError, result: number) => { 6580e41f4b71Sopenharmony_ci if (err) { 6581e41f4b71Sopenharmony_ci console.error('Failed to set Speed!'); 6582e41f4b71Sopenharmony_ci } else { 6583e41f4b71Sopenharmony_ci console.info('Succeeded in setting Speed!'); 6584e41f4b71Sopenharmony_ci } 6585e41f4b71Sopenharmony_ci }); 6586e41f4b71Sopenharmony_ci} 6587e41f4b71Sopenharmony_ci``` 6588e41f4b71Sopenharmony_ci 6589e41f4b71Sopenharmony_ci### setSpeed<sup>(deprecated)</sup> 6590e41f4b71Sopenharmony_ci 6591e41f4b71Sopenharmony_cisetSpeed(speed: number): Promise\<number> 6592e41f4b71Sopenharmony_ci 6593e41f4b71Sopenharmony_ci设置播放速度。通过Promise获取返回值。 6594e41f4b71Sopenharmony_ci 6595e41f4b71Sopenharmony_ci> **说明:** 6596e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。 6597e41f4b71Sopenharmony_ci 6598e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6599e41f4b71Sopenharmony_ci 6600e41f4b71Sopenharmony_ci**参数:** 6601e41f4b71Sopenharmony_ci 6602e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6603e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------------------------------------------------- | 6604e41f4b71Sopenharmony_ci| speed | number | 是 | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 6605e41f4b71Sopenharmony_ci 6606e41f4b71Sopenharmony_ci**返回值:** 6607e41f4b71Sopenharmony_ci 6608e41f4b71Sopenharmony_ci| 类型 | 说明 | 6609e41f4b71Sopenharmony_ci| ---------------- | ------------------------------------------------------------ | 6610e41f4b71Sopenharmony_ci| Promise\<number> | Promise对象,返回设置的播放速度,具体见[PlaybackSpeed](#playbackspeed8)。 | 6611e41f4b71Sopenharmony_ci 6612e41f4b71Sopenharmony_ci**示例:** 6613e41f4b71Sopenharmony_ci 6614e41f4b71Sopenharmony_ci```ts 6615e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6616e41f4b71Sopenharmony_ci 6617e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer | null = null; 6618e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => { 6619e41f4b71Sopenharmony_ci if (video != null) { 6620e41f4b71Sopenharmony_ci videoPlayer = video; 6621e41f4b71Sopenharmony_ci console.info('Succeeded in creating VideoPlayer'); 6622e41f4b71Sopenharmony_ci } else { 6623e41f4b71Sopenharmony_ci console.error(`Failed to create VideoPlayer, error:${error}`); 6624e41f4b71Sopenharmony_ci } 6625e41f4b71Sopenharmony_ci}); 6626e41f4b71Sopenharmony_cilet speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X; 6627e41f4b71Sopenharmony_ciif (videoPlayer) { 6628e41f4b71Sopenharmony_ci (videoPlayer as media.VideoPlayer).setSpeed(speed).then((result: number) => { 6629e41f4b71Sopenharmony_ci console.info('Succeeded in setting Speed'); 6630e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 6631e41f4b71Sopenharmony_ci console.error(`Failed to set Speed, error:${error}`);//todo:: error 6632e41f4b71Sopenharmony_ci }); 6633e41f4b71Sopenharmony_ci} 6634e41f4b71Sopenharmony_ci``` 6635e41f4b71Sopenharmony_ci 6636e41f4b71Sopenharmony_ci### on('playbackCompleted')<sup>(deprecated)</sup> 6637e41f4b71Sopenharmony_ci 6638e41f4b71Sopenharmony_cion(type: 'playbackCompleted', callback: Callback\<void>): void 6639e41f4b71Sopenharmony_ci 6640e41f4b71Sopenharmony_ci开始监听视频播放完成事件。 6641e41f4b71Sopenharmony_ci 6642e41f4b71Sopenharmony_ci> **说明:** 6643e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。 6644e41f4b71Sopenharmony_ci 6645e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6646e41f4b71Sopenharmony_ci 6647e41f4b71Sopenharmony_ci**参数:** 6648e41f4b71Sopenharmony_ci 6649e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6650e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ----------------------------------------------------------- | 6651e41f4b71Sopenharmony_ci| type | string | 是 | 视频播放完成事件回调类型,支持的事件:'playbackCompleted'。 | 6652e41f4b71Sopenharmony_ci| callback | Callback\<void> | 是 | 视频播放完成事件回调方法。 | 6653e41f4b71Sopenharmony_ci 6654e41f4b71Sopenharmony_ci**示例:** 6655e41f4b71Sopenharmony_ci 6656e41f4b71Sopenharmony_ci```ts 6657e41f4b71Sopenharmony_civideoPlayer.on('playbackCompleted', () => { 6658e41f4b71Sopenharmony_ci console.info('playbackCompleted called!'); 6659e41f4b71Sopenharmony_ci}); 6660e41f4b71Sopenharmony_ci``` 6661e41f4b71Sopenharmony_ci 6662e41f4b71Sopenharmony_ci### on('bufferingUpdate')<sup>(deprecated)</sup> 6663e41f4b71Sopenharmony_ci 6664e41f4b71Sopenharmony_cion(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void 6665e41f4b71Sopenharmony_ci 6666e41f4b71Sopenharmony_ci开始监听视频缓存更新事件。仅网络播放支持该订阅事件。 6667e41f4b71Sopenharmony_ci 6668e41f4b71Sopenharmony_ci> **说明:** 6669e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。 6670e41f4b71Sopenharmony_ci 6671e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6672e41f4b71Sopenharmony_ci 6673e41f4b71Sopenharmony_ci**参数:** 6674e41f4b71Sopenharmony_ci 6675e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6676e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 6677e41f4b71Sopenharmony_ci| type | string | 是 | 视频缓存事件回调类型,支持的事件:'bufferingUpdate'。 | 6678e41f4b71Sopenharmony_ci| callback | function | 是 | 视频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)value值固定为0。 | 6679e41f4b71Sopenharmony_ci 6680e41f4b71Sopenharmony_ci**示例:** 6681e41f4b71Sopenharmony_ci 6682e41f4b71Sopenharmony_ci```ts 6683e41f4b71Sopenharmony_civideoPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => { 6684e41f4b71Sopenharmony_ci console.info('video bufferingInfo type: ' + infoType); 6685e41f4b71Sopenharmony_ci console.info('video bufferingInfo value: ' + value); 6686e41f4b71Sopenharmony_ci}); 6687e41f4b71Sopenharmony_ci``` 6688e41f4b71Sopenharmony_ci 6689e41f4b71Sopenharmony_ci### on('startRenderFrame')<sup>(deprecated)</sup> 6690e41f4b71Sopenharmony_ci 6691e41f4b71Sopenharmony_cion(type: 'startRenderFrame', callback: Callback\<void>): void 6692e41f4b71Sopenharmony_ci 6693e41f4b71Sopenharmony_ci开始监听视频播放首帧送显上报事件。 6694e41f4b71Sopenharmony_ci 6695e41f4b71Sopenharmony_ci> **说明:** 6696e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('startRenderFrame')](#onstartrenderframe9)替代。 6697e41f4b71Sopenharmony_ci 6698e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6699e41f4b71Sopenharmony_ci 6700e41f4b71Sopenharmony_ci**参数:** 6701e41f4b71Sopenharmony_ci 6702e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6703e41f4b71Sopenharmony_ci| -------- | --------------- | ---- | ------------------------------------------------------------ | 6704e41f4b71Sopenharmony_ci| type | string | 是 | 视频播放首帧送显上报事件回调类型,支持的事件:'startRenderFrame'。 | 6705e41f4b71Sopenharmony_ci| callback | Callback\<void> | 是 | 视频播放首帧送显上报事件回调方法。 | 6706e41f4b71Sopenharmony_ci 6707e41f4b71Sopenharmony_ci**示例:** 6708e41f4b71Sopenharmony_ci 6709e41f4b71Sopenharmony_ci```ts 6710e41f4b71Sopenharmony_civideoPlayer.on('startRenderFrame', () => { 6711e41f4b71Sopenharmony_ci console.info('startRenderFrame called!'); 6712e41f4b71Sopenharmony_ci}); 6713e41f4b71Sopenharmony_ci``` 6714e41f4b71Sopenharmony_ci 6715e41f4b71Sopenharmony_ci### on('videoSizeChanged')<sup>(deprecated)</sup> 6716e41f4b71Sopenharmony_ci 6717e41f4b71Sopenharmony_cion(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void 6718e41f4b71Sopenharmony_ci 6719e41f4b71Sopenharmony_ci开始监听视频播放宽高变化事件。 6720e41f4b71Sopenharmony_ci 6721e41f4b71Sopenharmony_ci> **说明:** 6722e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('videoSizeChange')](#onvideosizechange9)替代。 6723e41f4b71Sopenharmony_ci 6724e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6725e41f4b71Sopenharmony_ci 6726e41f4b71Sopenharmony_ci**参数:** 6727e41f4b71Sopenharmony_ci 6728e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6729e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 6730e41f4b71Sopenharmony_ci| type | string | 是 | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChanged'。 | 6731e41f4b71Sopenharmony_ci| callback | function | 是 | 视频播放宽高变化事件回调方法,width表示宽,height表示高。 | 6732e41f4b71Sopenharmony_ci 6733e41f4b71Sopenharmony_ci**示例:** 6734e41f4b71Sopenharmony_ci 6735e41f4b71Sopenharmony_ci```ts 6736e41f4b71Sopenharmony_civideoPlayer.on('videoSizeChanged', (width: number, height: number) => { 6737e41f4b71Sopenharmony_ci console.info('video width is: ' + width); 6738e41f4b71Sopenharmony_ci console.info('video height is: ' + height); 6739e41f4b71Sopenharmony_ci}); 6740e41f4b71Sopenharmony_ci``` 6741e41f4b71Sopenharmony_ci### on('audioInterrupt')<sup>(deprecated)</sup> 6742e41f4b71Sopenharmony_ci 6743e41f4b71Sopenharmony_cion(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void 6744e41f4b71Sopenharmony_ci 6745e41f4b71Sopenharmony_ci监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。 6746e41f4b71Sopenharmony_ci 6747e41f4b71Sopenharmony_ci> **说明:** 6748e41f4b71Sopenharmony_ci> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。 6749e41f4b71Sopenharmony_ci 6750e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6751e41f4b71Sopenharmony_ci 6752e41f4b71Sopenharmony_ci**参数:** 6753e41f4b71Sopenharmony_ci 6754e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6755e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- | 6756e41f4b71Sopenharmony_ci| type | string | 是 | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 | 6757e41f4b71Sopenharmony_ci| callback | function | 是 | 音频焦点变化事件回调方法。 | 6758e41f4b71Sopenharmony_ci 6759e41f4b71Sopenharmony_ci**示例:** 6760e41f4b71Sopenharmony_ci 6761e41f4b71Sopenharmony_ci```ts 6762e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit'; 6763e41f4b71Sopenharmony_ci 6764e41f4b71Sopenharmony_civideoPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => { 6765e41f4b71Sopenharmony_ci console.info('audioInterrupt called,and InterruptEvent info is:' + info) 6766e41f4b71Sopenharmony_ci}) 6767e41f4b71Sopenharmony_ci``` 6768e41f4b71Sopenharmony_ci 6769e41f4b71Sopenharmony_ci### on('error')<sup>(deprecated)</sup> 6770e41f4b71Sopenharmony_ci 6771e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void 6772e41f4b71Sopenharmony_ci 6773e41f4b71Sopenharmony_ci开始监听视频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。 6774e41f4b71Sopenharmony_ci 6775e41f4b71Sopenharmony_ci> **说明:** 6776e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。 6777e41f4b71Sopenharmony_ci 6778e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6779e41f4b71Sopenharmony_ci 6780e41f4b71Sopenharmony_ci**参数:** 6781e41f4b71Sopenharmony_ci 6782e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6783e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ | 6784e41f4b71Sopenharmony_ci| type | string | 是 | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':视频播放中发生错误,触发该事件。 | 6785e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 播放错误事件回调方法。 | 6786e41f4b71Sopenharmony_ci 6787e41f4b71Sopenharmony_ci**示例:** 6788e41f4b71Sopenharmony_ci 6789e41f4b71Sopenharmony_ci```ts 6790e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 6791e41f4b71Sopenharmony_ci 6792e41f4b71Sopenharmony_civideoPlayer.on('error', (error: BusinessError) => { // 设置'error'事件回调 6793e41f4b71Sopenharmony_ci console.error(`video error called, error: ${error}`); 6794e41f4b71Sopenharmony_ci}); 6795e41f4b71Sopenharmony_civideoPlayer.url = 'fd://error'; //设置错误的播放地址,触发'error'事件 6796e41f4b71Sopenharmony_ci``` 6797e41f4b71Sopenharmony_ci 6798e41f4b71Sopenharmony_ci## VideoPlayState<sup>(deprecated)</sup> 6799e41f4b71Sopenharmony_ci 6800e41f4b71Sopenharmony_citype VideoPlayState = 'idle' | 'prepared' | 'playing' | 'paused' | 'stopped' | 'error' 6801e41f4b71Sopenharmony_ci 6802e41f4b71Sopenharmony_ci视频播放的状态机,可通过state属性获取当前状态。 6803e41f4b71Sopenharmony_ci 6804e41f4b71Sopenharmony_ci> **说明:** 6805e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。 6806e41f4b71Sopenharmony_ci 6807e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer 6808e41f4b71Sopenharmony_ci 6809e41f4b71Sopenharmony_ci| 类型 | 说明 | 6810e41f4b71Sopenharmony_ci| -------- | -------------- | 6811e41f4b71Sopenharmony_ci| 'idle' | 视频播放空闲。 | 6812e41f4b71Sopenharmony_ci| 'prepared' | 视频播放准备。 | 6813e41f4b71Sopenharmony_ci| 'playing' | 视频正在播放。 | 6814e41f4b71Sopenharmony_ci| 'paused' | 视频暂停播放。 | 6815e41f4b71Sopenharmony_ci| 'stopped' | 视频播放停止。 | 6816e41f4b71Sopenharmony_ci| 'error' | 错误状态。 | 6817e41f4b71Sopenharmony_ci 6818e41f4b71Sopenharmony_ci## AudioRecorder<sup>(deprecated)</sup> 6819e41f4b71Sopenharmony_ci 6820e41f4b71Sopenharmony_ci> **说明:** 6821e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder](#avrecorder9)替代。 6822e41f4b71Sopenharmony_ci 6823e41f4b71Sopenharmony_ci音频录制管理类,用于录制音频媒体。在调用AudioRecorder的方法前,需要先通过[createAudioRecorder()](#mediacreateaudiorecorderdeprecated) 构建一个AudioRecorder实例。 6824e41f4b71Sopenharmony_ci 6825e41f4b71Sopenharmony_ci### prepare<sup>(deprecated)</sup> 6826e41f4b71Sopenharmony_ci 6827e41f4b71Sopenharmony_ciprepare(config: AudioRecorderConfig): void 6828e41f4b71Sopenharmony_ci 6829e41f4b71Sopenharmony_ci录音准备。 6830e41f4b71Sopenharmony_ci 6831e41f4b71Sopenharmony_ci> **说明:** 6832e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.prepare](#prepare9-2)替代。 6833e41f4b71Sopenharmony_ci 6834e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.MICROPHONE 6835e41f4b71Sopenharmony_ci 6836e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6837e41f4b71Sopenharmony_ci 6838e41f4b71Sopenharmony_ci**参数:** 6839e41f4b71Sopenharmony_ci 6840e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 6841e41f4b71Sopenharmony_ci| ------ | ------------------------------------------- | ---- | ------------------------------------------------------------ | 6842e41f4b71Sopenharmony_ci| config | [AudioRecorderConfig](#audiorecorderconfigdeprecated) | 是 | 配置录音的相关参数,包括音频输出URI、编码格式、采样率、声道数、输出格式等。 | 6843e41f4b71Sopenharmony_ci 6844e41f4b71Sopenharmony_ci**错误码:** 6845e41f4b71Sopenharmony_ci 6846e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 6847e41f4b71Sopenharmony_ci 6848e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 6849e41f4b71Sopenharmony_ci| -------- | --------------------- | 6850e41f4b71Sopenharmony_ci| 201 | permission denied | 6851e41f4b71Sopenharmony_ci 6852e41f4b71Sopenharmony_ci**示例:** 6853e41f4b71Sopenharmony_ci 6854e41f4b71Sopenharmony_ci```ts 6855e41f4b71Sopenharmony_cilet audioRecorderConfig: media.AudioRecorderConfig = { 6856e41f4b71Sopenharmony_ci audioEncoder : media.AudioEncoder.AAC_LC, 6857e41f4b71Sopenharmony_ci audioEncodeBitRate : 22050, 6858e41f4b71Sopenharmony_ci audioSampleRate : 22050, 6859e41f4b71Sopenharmony_ci numberOfChannels : 2, 6860e41f4b71Sopenharmony_ci format : media.AudioOutputFormat.AAC_ADTS, 6861e41f4b71Sopenharmony_ci uri : 'fd://1', // 文件需先由调用者创建,并给予适当的权限 6862e41f4b71Sopenharmony_ci location : { latitude : 30, longitude : 130}, 6863e41f4b71Sopenharmony_ci} 6864e41f4b71Sopenharmony_ciaudioRecorder.on('prepare', () => { //设置'prepare'事件回调 6865e41f4b71Sopenharmony_ci console.info('prepare called'); 6866e41f4b71Sopenharmony_ci}); 6867e41f4b71Sopenharmony_ciaudioRecorder.prepare(audioRecorderConfig); 6868e41f4b71Sopenharmony_ci``` 6869e41f4b71Sopenharmony_ci 6870e41f4b71Sopenharmony_ci### start<sup>(deprecated)</sup> 6871e41f4b71Sopenharmony_ci 6872e41f4b71Sopenharmony_cistart(): void 6873e41f4b71Sopenharmony_ci 6874e41f4b71Sopenharmony_ci开始录制,需在'prepare'事件成功触发后,才能调用start方法。 6875e41f4b71Sopenharmony_ci 6876e41f4b71Sopenharmony_ci> **说明:** 6877e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.start](#start9)替代。 6878e41f4b71Sopenharmony_ci 6879e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6880e41f4b71Sopenharmony_ci 6881e41f4b71Sopenharmony_ci**示例:** 6882e41f4b71Sopenharmony_ci 6883e41f4b71Sopenharmony_ci```ts 6884e41f4b71Sopenharmony_ciaudioRecorder.on('start', () => { //设置'start'事件回调 6885e41f4b71Sopenharmony_ci console.info('audio recorder start called'); 6886e41f4b71Sopenharmony_ci}); 6887e41f4b71Sopenharmony_ciaudioRecorder.start(); 6888e41f4b71Sopenharmony_ci``` 6889e41f4b71Sopenharmony_ci 6890e41f4b71Sopenharmony_ci### pause<sup>(deprecated)</sup> 6891e41f4b71Sopenharmony_ci 6892e41f4b71Sopenharmony_cipause():void 6893e41f4b71Sopenharmony_ci 6894e41f4b71Sopenharmony_ci暂停录制,需要在'start'事件成功触发后,才能调用pause方法。 6895e41f4b71Sopenharmony_ci 6896e41f4b71Sopenharmony_ci> **说明:** 6897e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.pause](#pause9-2)替代。 6898e41f4b71Sopenharmony_ci 6899e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6900e41f4b71Sopenharmony_ci 6901e41f4b71Sopenharmony_ci**示例:** 6902e41f4b71Sopenharmony_ci 6903e41f4b71Sopenharmony_ci```ts 6904e41f4b71Sopenharmony_ciaudioRecorder.on('pause', () => { //设置'pause'事件回调 6905e41f4b71Sopenharmony_ci console.info('audio recorder pause called'); 6906e41f4b71Sopenharmony_ci}); 6907e41f4b71Sopenharmony_ciaudioRecorder.pause(); 6908e41f4b71Sopenharmony_ci``` 6909e41f4b71Sopenharmony_ci 6910e41f4b71Sopenharmony_ci### resume<sup>(deprecated)</sup> 6911e41f4b71Sopenharmony_ci 6912e41f4b71Sopenharmony_ciresume():void 6913e41f4b71Sopenharmony_ci 6914e41f4b71Sopenharmony_ci恢复录制,需要在'pause'事件成功触发后,才能调用resume方法。 6915e41f4b71Sopenharmony_ci 6916e41f4b71Sopenharmony_ci> **说明:** 6917e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.resume](#resume9)替代。 6918e41f4b71Sopenharmony_ci 6919e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6920e41f4b71Sopenharmony_ci 6921e41f4b71Sopenharmony_ci**示例:** 6922e41f4b71Sopenharmony_ci 6923e41f4b71Sopenharmony_ci```ts 6924e41f4b71Sopenharmony_ciaudioRecorder.on('resume', () => { //设置'resume'事件回调 6925e41f4b71Sopenharmony_ci console.info('audio recorder resume called'); 6926e41f4b71Sopenharmony_ci}); 6927e41f4b71Sopenharmony_ciaudioRecorder.resume(); 6928e41f4b71Sopenharmony_ci``` 6929e41f4b71Sopenharmony_ci 6930e41f4b71Sopenharmony_ci### stop<sup>(deprecated)</sup> 6931e41f4b71Sopenharmony_ci 6932e41f4b71Sopenharmony_cistop(): void 6933e41f4b71Sopenharmony_ci 6934e41f4b71Sopenharmony_ci停止录音。 6935e41f4b71Sopenharmony_ci 6936e41f4b71Sopenharmony_ci> **说明:** 6937e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.stop](#stop9-2)替代。 6938e41f4b71Sopenharmony_ci 6939e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6940e41f4b71Sopenharmony_ci 6941e41f4b71Sopenharmony_ci**示例:** 6942e41f4b71Sopenharmony_ci 6943e41f4b71Sopenharmony_ci```ts 6944e41f4b71Sopenharmony_ciaudioRecorder.on('stop', () => { //设置'stop'事件回调 6945e41f4b71Sopenharmony_ci console.info('audio recorder stop called'); 6946e41f4b71Sopenharmony_ci}); 6947e41f4b71Sopenharmony_ciaudioRecorder.stop(); 6948e41f4b71Sopenharmony_ci``` 6949e41f4b71Sopenharmony_ci 6950e41f4b71Sopenharmony_ci### release<sup>(deprecated)</sup> 6951e41f4b71Sopenharmony_ci 6952e41f4b71Sopenharmony_cirelease(): void 6953e41f4b71Sopenharmony_ci 6954e41f4b71Sopenharmony_ci释放录音资源。 6955e41f4b71Sopenharmony_ci 6956e41f4b71Sopenharmony_ci> **说明:** 6957e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.release](#release9-2)替代。 6958e41f4b71Sopenharmony_ci 6959e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6960e41f4b71Sopenharmony_ci 6961e41f4b71Sopenharmony_ci**示例:** 6962e41f4b71Sopenharmony_ci 6963e41f4b71Sopenharmony_ci```ts 6964e41f4b71Sopenharmony_ciaudioRecorder.on('release', () => { //设置'release'事件回调 6965e41f4b71Sopenharmony_ci console.info('audio recorder release called'); 6966e41f4b71Sopenharmony_ci}); 6967e41f4b71Sopenharmony_ciaudioRecorder.release(); 6968e41f4b71Sopenharmony_ciaudioRecorder = undefined; 6969e41f4b71Sopenharmony_ci``` 6970e41f4b71Sopenharmony_ci 6971e41f4b71Sopenharmony_ci### reset<sup>(deprecated)</sup> 6972e41f4b71Sopenharmony_ci 6973e41f4b71Sopenharmony_cireset(): void 6974e41f4b71Sopenharmony_ci 6975e41f4b71Sopenharmony_ci重置录音。 6976e41f4b71Sopenharmony_ci 6977e41f4b71Sopenharmony_ci进行重置录音之前,需要先调用stop()停止录音。重置录音之后,需要调用prepare()设置录音参数项,才能再次进行录音。 6978e41f4b71Sopenharmony_ci 6979e41f4b71Sopenharmony_ci> **说明:** 6980e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.reset](#reset9-2)替代。 6981e41f4b71Sopenharmony_ci 6982e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 6983e41f4b71Sopenharmony_ci 6984e41f4b71Sopenharmony_ci**示例:** 6985e41f4b71Sopenharmony_ci 6986e41f4b71Sopenharmony_ci```ts 6987e41f4b71Sopenharmony_ciaudioRecorder.on('reset', () => { //设置'reset'事件回调 6988e41f4b71Sopenharmony_ci console.info('audio recorder reset called'); 6989e41f4b71Sopenharmony_ci}); 6990e41f4b71Sopenharmony_ciaudioRecorder.reset(); 6991e41f4b71Sopenharmony_ci``` 6992e41f4b71Sopenharmony_ci 6993e41f4b71Sopenharmony_ci### on('prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset')<sup>(deprecated)</sup> 6994e41f4b71Sopenharmony_ci 6995e41f4b71Sopenharmony_cion(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset', callback: () => void): void 6996e41f4b71Sopenharmony_ci 6997e41f4b71Sopenharmony_ci开始订阅音频录制事件。 6998e41f4b71Sopenharmony_ci 6999e41f4b71Sopenharmony_ci> **说明:** 7000e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('stateChange')](#onstatechange9-1)替代。 7001e41f4b71Sopenharmony_ci 7002e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7003e41f4b71Sopenharmony_ci 7004e41f4b71Sopenharmony_ci**参数:** 7005e41f4b71Sopenharmony_ci 7006e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7007e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 7008e41f4b71Sopenharmony_ci| 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调用,音频重置为初始状态,触发该事件。 | 7009e41f4b71Sopenharmony_ci| callback | ()=>void | 是 | 录制事件回调方法。 | 7010e41f4b71Sopenharmony_ci 7011e41f4b71Sopenharmony_ci**示例:** 7012e41f4b71Sopenharmony_ci 7013e41f4b71Sopenharmony_ci```ts 7014e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7015e41f4b71Sopenharmony_ci 7016e41f4b71Sopenharmony_cilet audioRecorder: media.AudioRecorder = media.createAudioRecorder(); // 创建一个音频录制实例 7017e41f4b71Sopenharmony_cilet audioRecorderConfig: media.AudioRecorderConfig = { 7018e41f4b71Sopenharmony_ci audioEncoder : media.AudioEncoder.AAC_LC, 7019e41f4b71Sopenharmony_ci audioEncodeBitRate : 22050, 7020e41f4b71Sopenharmony_ci audioSampleRate : 22050, 7021e41f4b71Sopenharmony_ci numberOfChannels : 2, 7022e41f4b71Sopenharmony_ci format : media.AudioOutputFormat.AAC_ADTS, 7023e41f4b71Sopenharmony_ci uri : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限 7024e41f4b71Sopenharmony_ci location : { latitude : 30, longitude : 130} 7025e41f4b71Sopenharmony_ci} 7026e41f4b71Sopenharmony_ciaudioRecorder.on('error', (error: BusinessError) => { // 设置'error'事件回调 7027e41f4b71Sopenharmony_ci console.error(`audio error called, error: ${error}`); 7028e41f4b71Sopenharmony_ci}); 7029e41f4b71Sopenharmony_ciaudioRecorder.on('prepare', () => { // 设置'prepare'事件回调 7030e41f4b71Sopenharmony_ci console.info('prepare called'); 7031e41f4b71Sopenharmony_ci audioRecorder.start(); // 开始录制,并触发'start'事件回调 7032e41f4b71Sopenharmony_ci}); 7033e41f4b71Sopenharmony_ciaudioRecorder.on('start', () => { // 设置'start'事件回调 7034e41f4b71Sopenharmony_ci console.info('audio recorder start called'); 7035e41f4b71Sopenharmony_ci}); 7036e41f4b71Sopenharmony_ciaudioRecorder.on('pause', () => { // 设置'pause'事件回调 7037e41f4b71Sopenharmony_ci console.info('audio recorder pause called'); 7038e41f4b71Sopenharmony_ci}); 7039e41f4b71Sopenharmony_ciaudioRecorder.on('resume', () => { // 设置'resume'事件回调 7040e41f4b71Sopenharmony_ci console.info('audio recorder resume called'); 7041e41f4b71Sopenharmony_ci}); 7042e41f4b71Sopenharmony_ciaudioRecorder.on('stop', () => { // 设置'stop'事件回调 7043e41f4b71Sopenharmony_ci console.info('audio recorder stop called'); 7044e41f4b71Sopenharmony_ci}); 7045e41f4b71Sopenharmony_ciaudioRecorder.on('release', () => { // 设置'release'事件回调 7046e41f4b71Sopenharmony_ci console.info('audio recorder release called'); 7047e41f4b71Sopenharmony_ci}); 7048e41f4b71Sopenharmony_ciaudioRecorder.on('reset', () => { // 设置'reset'事件回调 7049e41f4b71Sopenharmony_ci console.info('audio recorder reset called'); 7050e41f4b71Sopenharmony_ci}); 7051e41f4b71Sopenharmony_ciaudioRecorder.prepare(audioRecorderConfig) // 设置录制参数 ,并触发'prepare'事件回调 7052e41f4b71Sopenharmony_ci``` 7053e41f4b71Sopenharmony_ci 7054e41f4b71Sopenharmony_ci### on('error')<sup>(deprecated)</sup> 7055e41f4b71Sopenharmony_ci 7056e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void 7057e41f4b71Sopenharmony_ci 7058e41f4b71Sopenharmony_ci开始订阅音频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。 7059e41f4b71Sopenharmony_ci 7060e41f4b71Sopenharmony_ci> **说明:** 7061e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('error')](#onerror9-1)替代。 7062e41f4b71Sopenharmony_ci 7063e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7064e41f4b71Sopenharmony_ci 7065e41f4b71Sopenharmony_ci**参数:** 7066e41f4b71Sopenharmony_ci 7067e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7068e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ | 7069e41f4b71Sopenharmony_ci| type | string | 是 | 录制错误事件回调类型'error'。<br/>- 'error':音频录制过程中发生错误,触发该事件。 | 7070e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录制错误事件回调方法。 | 7071e41f4b71Sopenharmony_ci 7072e41f4b71Sopenharmony_ci**示例:** 7073e41f4b71Sopenharmony_ci 7074e41f4b71Sopenharmony_ci```ts 7075e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7076e41f4b71Sopenharmony_ci 7077e41f4b71Sopenharmony_cilet audioRecorderConfig: media.AudioRecorderConfig = { 7078e41f4b71Sopenharmony_ci audioEncoder : media.AudioEncoder.AAC_LC, 7079e41f4b71Sopenharmony_ci audioEncodeBitRate : 22050, 7080e41f4b71Sopenharmony_ci audioSampleRate : 22050, 7081e41f4b71Sopenharmony_ci numberOfChannels : 2, 7082e41f4b71Sopenharmony_ci format : media.AudioOutputFormat.AAC_ADTS, 7083e41f4b71Sopenharmony_ci uri : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限 7084e41f4b71Sopenharmony_ci location : { latitude : 30, longitude : 130} 7085e41f4b71Sopenharmony_ci} 7086e41f4b71Sopenharmony_ciaudioRecorder.on('error', (error: BusinessError) => { // 设置'error'事件回调 7087e41f4b71Sopenharmony_ci console.error(`audio error called, error: ${error}`); 7088e41f4b71Sopenharmony_ci}); 7089e41f4b71Sopenharmony_ciaudioRecorder.prepare(audioRecorderConfig); // prepare不设置参数,触发'error'事件 7090e41f4b71Sopenharmony_ci``` 7091e41f4b71Sopenharmony_ci 7092e41f4b71Sopenharmony_ci## AudioRecorderConfig<sup>(deprecated)</sup> 7093e41f4b71Sopenharmony_ci 7094e41f4b71Sopenharmony_ci> **说明:** 7095e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorderConfig](#avrecorderconfig9)替代。 7096e41f4b71Sopenharmony_ci 7097e41f4b71Sopenharmony_ci表示音频的录音配置。 7098e41f4b71Sopenharmony_ci 7099e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7100e41f4b71Sopenharmony_ci 7101e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 7102e41f4b71Sopenharmony_ci| ----------------------------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | 7103e41f4b71Sopenharmony_ci| audioEncoder | [AudioEncoder](#audioencoderdeprecated) | 否 | 音频编码格式,默认设置为AAC_LC。<br/>**说明:** 从API version 8开始废弃,建议使用audioEncoderMime替代。 | 7104e41f4b71Sopenharmony_ci| audioEncodeBitRate | number | 否 | 音频编码比特率,默认值为48000。 | 7105e41f4b71Sopenharmony_ci| audioSampleRate | number | 否 | 音频采集采样率,默认值为48000。<br>可变比特率模式,码率仅作参考。 | 7106e41f4b71Sopenharmony_ci| numberOfChannels | number | 否 | 音频采集声道数,默认值为2。 | 7107e41f4b71Sopenharmony_ci| format | [AudioOutputFormat](#audiooutputformatdeprecated) | 否 | 音频输出封装格式,默认设置为MPEG_4。<br/>**说明:** 从API version 8开始废弃,建议使用fileFormat替代。 | 7108e41f4b71Sopenharmony_ci| location | [Location](#location) | 否 | 音频采集的地理位置。 | 7109e41f4b71Sopenharmony_ci| uri | string | 是 | 音频输出URI:fd://xx (fd number)<br/> <br/>文件需要由调用者创建,并赋予适当的权限。 | 7110e41f4b71Sopenharmony_ci| audioEncoderMime<sup>8+</sup> | [CodecMimeType](#codecmimetype8) | 否 | 容器编码格式。 | 7111e41f4b71Sopenharmony_ci| fileFormat<sup>8+</sup> | [ContainerFormatType](#containerformattype8) | 否 | 音频编码格式。 | 7112e41f4b71Sopenharmony_ci 7113e41f4b71Sopenharmony_ci## AudioEncoder<sup>(deprecated)</sup> 7114e41f4b71Sopenharmony_ci 7115e41f4b71Sopenharmony_ci> **说明:** 7116e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 8开始废弃,建议使用[CodecMimeType](#codecmimetype8)替代。 7117e41f4b71Sopenharmony_ci 7118e41f4b71Sopenharmony_ci表示音频编码格式的枚举。 7119e41f4b71Sopenharmony_ci 7120e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7121e41f4b71Sopenharmony_ci 7122e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 7123e41f4b71Sopenharmony_ci| ------- | ---- | ------------------------------------------------------------ | 7124e41f4b71Sopenharmony_ci| DEFAULT | 0 | 默认编码格式。<br/>仅做接口定义,暂不支持使用。 | 7125e41f4b71Sopenharmony_ci| AMR_NB | 1 | AMR-NB(Adaptive Multi Rate-Narrow Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 | 7126e41f4b71Sopenharmony_ci| AMR_WB | 2 | AMR-WB(Adaptive Multi Rate-Wide Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 | 7127e41f4b71Sopenharmony_ci| AAC_LC | 3 | AAC-LC(Advanced Audio Coding Low Complexity)编码格式。 | 7128e41f4b71Sopenharmony_ci| HE_AAC | 4 | HE_AAC(High-Efficiency Advanced Audio Coding)编码格式。<br/>仅做接口定义,暂不支持使用。 | 7129e41f4b71Sopenharmony_ci 7130e41f4b71Sopenharmony_ci## AudioOutputFormat<sup>(deprecated)</sup> 7131e41f4b71Sopenharmony_ci 7132e41f4b71Sopenharmony_ci> **说明:** 7133e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 8 开始废弃,建议使用[ContainerFormatType](#containerformattype8)替代。 7134e41f4b71Sopenharmony_ci 7135e41f4b71Sopenharmony_ci表示音频封装格式的枚举。 7136e41f4b71Sopenharmony_ci 7137e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder 7138e41f4b71Sopenharmony_ci 7139e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 7140e41f4b71Sopenharmony_ci| -------- | ---- | ------------------------------------------------------------ | 7141e41f4b71Sopenharmony_ci| DEFAULT | 0 | 默认封装格式。<br/>仅做接口定义,暂不支持使用。 | 7142e41f4b71Sopenharmony_ci| MPEG_4 | 2 | 封装为MPEG-4格式。 | 7143e41f4b71Sopenharmony_ci| AMR_NB | 3 | 封装为AMR_NB格式。<br/>仅做接口定义,暂不支持使用。 | 7144e41f4b71Sopenharmony_ci| AMR_WB | 4 | 封装为AMR_WB格式。<br/>仅做接口定义,暂不支持使用。 | 7145e41f4b71Sopenharmony_ci| AAC_ADTS | 6 | 封装为ADTS(Audio Data Transport Stream)格式,是AAC音频的传输流格式。 | 7146e41f4b71Sopenharmony_ci 7147e41f4b71Sopenharmony_ci 7148e41f4b71Sopenharmony_ci## media.createAVImageGenerator<sup>12+</sup> 7149e41f4b71Sopenharmony_ci 7150e41f4b71Sopenharmony_cicreateAVImageGenerator(callback: AsyncCallback\<AVImageGenerator>): void 7151e41f4b71Sopenharmony_ci 7152e41f4b71Sopenharmony_ci创建AVImageGenerator实例,通过回调函数获取返回值。 7153e41f4b71Sopenharmony_ci 7154e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7155e41f4b71Sopenharmony_ci 7156e41f4b71Sopenharmony_ci**参数:** 7157e41f4b71Sopenharmony_ci 7158e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7159e41f4b71Sopenharmony_ci| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | 7160e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVImageGenerator](#avimagegenerator12)> | 是 | 回调函数。异步返回AVImageGenerator实例,失败时返回null。可用于获取视频缩略图。 | 7161e41f4b71Sopenharmony_ci 7162e41f4b71Sopenharmony_ci**错误码:** 7163e41f4b71Sopenharmony_ci 7164e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7165e41f4b71Sopenharmony_ci 7166e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7167e41f4b71Sopenharmony_ci| -------- | ------------------------------ | 7168e41f4b71Sopenharmony_ci| 5400101 | No memory. Returned by callback. | 7169e41f4b71Sopenharmony_ci 7170e41f4b71Sopenharmony_ci**示例:** 7171e41f4b71Sopenharmony_ci 7172e41f4b71Sopenharmony_ci```ts 7173e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7174e41f4b71Sopenharmony_ci 7175e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator; 7176e41f4b71Sopenharmony_cimedia.createAVImageGenerator((error: BusinessError, generator: media.AVImageGenerator) => { 7177e41f4b71Sopenharmony_ci if (generator != null) { 7178e41f4b71Sopenharmony_ci avImageGenerator = generator; 7179e41f4b71Sopenharmony_ci console.info('Succeeded in creating AVImageGenerator'); 7180e41f4b71Sopenharmony_ci } else { 7181e41f4b71Sopenharmony_ci console.error(`Failed to creat AVImageGenerator, error message:${error.message}`); 7182e41f4b71Sopenharmony_ci } 7183e41f4b71Sopenharmony_ci}); 7184e41f4b71Sopenharmony_ci``` 7185e41f4b71Sopenharmony_ci 7186e41f4b71Sopenharmony_ci## media.createAVImageGenerator<sup>12+</sup> 7187e41f4b71Sopenharmony_ci 7188e41f4b71Sopenharmony_cicreateAVImageGenerator(): Promise\<AVImageGenerator> 7189e41f4b71Sopenharmony_ci 7190e41f4b71Sopenharmony_ci创建AVImageGenerator对象,通过Promise获取返回值。 7191e41f4b71Sopenharmony_ci 7192e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7193e41f4b71Sopenharmony_ci 7194e41f4b71Sopenharmony_ci**返回值:** 7195e41f4b71Sopenharmony_ci 7196e41f4b71Sopenharmony_ci| 类型 | 说明 | 7197e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ | 7198e41f4b71Sopenharmony_ci| Promise\<[AVImageGenerator](#avimagegenerator12)> | Promise对象。异步返回AVImageGenerator实例,失败时返回null。可用于获取视频缩略图。 | 7199e41f4b71Sopenharmony_ci 7200e41f4b71Sopenharmony_ci**错误码:** 7201e41f4b71Sopenharmony_ci 7202e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7203e41f4b71Sopenharmony_ci 7204e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7205e41f4b71Sopenharmony_ci| -------- | ----------------------------- | 7206e41f4b71Sopenharmony_ci| 5400101 | No memory. Returned by promise. | 7207e41f4b71Sopenharmony_ci 7208e41f4b71Sopenharmony_ci**示例:** 7209e41f4b71Sopenharmony_ci 7210e41f4b71Sopenharmony_ci```ts 7211e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7212e41f4b71Sopenharmony_ci 7213e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator; 7214e41f4b71Sopenharmony_cimedia.createAVImageGenerator().then((generator: media.AVImageGenerator) => { 7215e41f4b71Sopenharmony_ci if (generator != null) { 7216e41f4b71Sopenharmony_ci avImageGenerator = generator; 7217e41f4b71Sopenharmony_ci console.info('Succeeded in creating AVImageGenerator'); 7218e41f4b71Sopenharmony_ci } else { 7219e41f4b71Sopenharmony_ci console.error('Failed to creat AVImageGenerator'); 7220e41f4b71Sopenharmony_ci } 7221e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 7222e41f4b71Sopenharmony_ci console.error(`Failed to creat AVImageGenerator, error message:${error.message}`); 7223e41f4b71Sopenharmony_ci}); 7224e41f4b71Sopenharmony_ci``` 7225e41f4b71Sopenharmony_ci 7226e41f4b71Sopenharmony_ci## AVImageGenerator<sup>12+</sup> 7227e41f4b71Sopenharmony_ci 7228e41f4b71Sopenharmony_ci视频缩略图获取类,用于从视频资源中获取缩略图。在调用AVImageGenerator的方法前,需要先通过[createAVImageGenerator()](#mediacreateavimagegenerator12)构建一个AVImageGenerator实例。 7229e41f4b71Sopenharmony_ci 7230e41f4b71Sopenharmony_ci获取视频缩略图的demo可参考:[获取视频缩略图开发指导](../../media/media/avimagegenerator.md)。 7231e41f4b71Sopenharmony_ci 7232e41f4b71Sopenharmony_ci### 属性 7233e41f4b71Sopenharmony_ci 7234e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7235e41f4b71Sopenharmony_ci 7236e41f4b71Sopenharmony_ci| 名称 | 类型 | 可读 | 可写 | 说明 | 7237e41f4b71Sopenharmony_ci| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ | 7238e41f4b71Sopenharmony_ci| 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。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频缩略图数据获取异常。 | 7239e41f4b71Sopenharmony_ci 7240e41f4b71Sopenharmony_ci### fetchFrameByTime<sup>12+</sup> 7241e41f4b71Sopenharmony_ci 7242e41f4b71Sopenharmony_cifetchFrameByTime(timeUs: number, options: AVImageQueryOptions, param: PixelMapParams, callback: AsyncCallback\<image.PixelMap>): void 7243e41f4b71Sopenharmony_ci 7244e41f4b71Sopenharmony_ci异步方式获取视频缩略图。通过注册回调函数获取返回值。 7245e41f4b71Sopenharmony_ci 7246e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7247e41f4b71Sopenharmony_ci 7248e41f4b71Sopenharmony_ci**参数:** 7249e41f4b71Sopenharmony_ci 7250e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7251e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- | 7252e41f4b71Sopenharmony_ci| timeUs | number | 是 | 需要获取的缩略图在视频中的时间点,单位为微秒(μs)。 | 7253e41f4b71Sopenharmony_ci| options | [AVImageQueryOptions](#avimagequeryoptions12) | 是 | 需要获取的缩略图时间点与视频帧的对应关系。 | 7254e41f4b71Sopenharmony_ci| param | [PixelMapParams](#pixelmapparams12) | 是 | 需要获取的缩略图的格式参数。 | 7255e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | 是 | 回调函数。获取缩略图成功时,err为undefined,data为PixelMap实例,否则为错误对象。 | 7256e41f4b71Sopenharmony_ci 7257e41f4b71Sopenharmony_ci**错误码:** 7258e41f4b71Sopenharmony_ci 7259e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7260e41f4b71Sopenharmony_ci 7261e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7262e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 7263e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by callback. | 7264e41f4b71Sopenharmony_ci| 5400106 | Unsupported format. Returned by callback. | 7265e41f4b71Sopenharmony_ci 7266e41f4b71Sopenharmony_ci**示例:** 7267e41f4b71Sopenharmony_ci 7268e41f4b71Sopenharmony_ci```ts 7269e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7270e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 7271e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit'; 7272e41f4b71Sopenharmony_ci 7273e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator | undefined = undefined; 7274e41f4b71Sopenharmony_cilet pixel_map : image.PixelMap | undefined = undefined; 7275e41f4b71Sopenharmony_ci 7276e41f4b71Sopenharmony_ci// 初始化入参 7277e41f4b71Sopenharmony_cilet timeUs: number = 0 7278e41f4b71Sopenharmony_ci 7279e41f4b71Sopenharmony_cilet queryOption: media.AVImageQueryOptions = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC 7280e41f4b71Sopenharmony_ci 7281e41f4b71Sopenharmony_cilet param: media.PixelMapParams = { 7282e41f4b71Sopenharmony_ci width : 300, 7283e41f4b71Sopenharmony_ci height : 300, 7284e41f4b71Sopenharmony_ci} 7285e41f4b71Sopenharmony_ci 7286e41f4b71Sopenharmony_ci// 获取缩略图 7287e41f4b71Sopenharmony_cimedia.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7288e41f4b71Sopenharmony_ci if(generator != null){ 7289e41f4b71Sopenharmony_ci avImageGenerator = generator; 7290e41f4b71Sopenharmony_ci console.info(`Succeeded in creating AVImageGenerator`); 7291e41f4b71Sopenharmony_ci avImageGenerator.fetchFrameByTime(timeUs, queryOption, param, (error: BusinessError, pixelMap) => { 7292e41f4b71Sopenharmony_ci if (error) { 7293e41f4b71Sopenharmony_ci console.error(`Failed to fetch FrameByTime, err = ${JSON.stringify(error)}`) 7294e41f4b71Sopenharmony_ci return 7295e41f4b71Sopenharmony_ci } 7296e41f4b71Sopenharmony_ci pixel_map = pixelMap; 7297e41f4b71Sopenharmony_ci }); 7298e41f4b71Sopenharmony_ci } else { 7299e41f4b71Sopenharmony_ci console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7300e41f4b71Sopenharmony_ci }; 7301e41f4b71Sopenharmony_ci}); 7302e41f4b71Sopenharmony_ci``` 7303e41f4b71Sopenharmony_ci 7304e41f4b71Sopenharmony_ci### fetchFrameByTime<sup>12+</sup> 7305e41f4b71Sopenharmony_ci 7306e41f4b71Sopenharmony_cifetchFrameByTime(timeUs: number, options: AVImageQueryOptions, param: PixelMapParams): Promise<image.PixelMap> 7307e41f4b71Sopenharmony_ci 7308e41f4b71Sopenharmony_ci异步方式获取视频缩略图。通过Promise获取返回值。 7309e41f4b71Sopenharmony_ci 7310e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7311e41f4b71Sopenharmony_ci 7312e41f4b71Sopenharmony_ci**参数:** 7313e41f4b71Sopenharmony_ci 7314e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7315e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- | 7316e41f4b71Sopenharmony_ci| timeUs | number | 是 | 需要获取的缩略图在视频中的时间点,单位为微秒(μs)。 | 7317e41f4b71Sopenharmony_ci| options | [AVImageQueryOptions](#avimagequeryoptions12) | 是 | 需要获取的缩略图时间点与视频帧的对应关系。 | 7318e41f4b71Sopenharmony_ci| param | [PixelMapParams](#pixelmapparams12) | 是 | 需要获取的缩略图的格式参数。 | 7319e41f4b71Sopenharmony_ci 7320e41f4b71Sopenharmony_ci**返回值:** 7321e41f4b71Sopenharmony_ci 7322e41f4b71Sopenharmony_ci| 类型 | 说明 | 7323e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- | 7324e41f4b71Sopenharmony_ci| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise对象,返回视频缩略图对象。 | 7325e41f4b71Sopenharmony_ci 7326e41f4b71Sopenharmony_ci**错误码:** 7327e41f4b71Sopenharmony_ci 7328e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7329e41f4b71Sopenharmony_ci 7330e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7331e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 7332e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by promise. | 7333e41f4b71Sopenharmony_ci| 5400106 | Unsupported format. Returned by promise. | 7334e41f4b71Sopenharmony_ci 7335e41f4b71Sopenharmony_ci**示例:** 7336e41f4b71Sopenharmony_ci 7337e41f4b71Sopenharmony_ci```ts 7338e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7339e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 7340e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit'; 7341e41f4b71Sopenharmony_ci 7342e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator | undefined = undefined; 7343e41f4b71Sopenharmony_cilet pixel_map : image.PixelMap | undefined = undefined; 7344e41f4b71Sopenharmony_ci 7345e41f4b71Sopenharmony_ci// 初始化入参 7346e41f4b71Sopenharmony_cilet timeUs: number = 0 7347e41f4b71Sopenharmony_ci 7348e41f4b71Sopenharmony_cilet queryOption: media.AVImageQueryOptions = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC 7349e41f4b71Sopenharmony_ci 7350e41f4b71Sopenharmony_cilet param: media.PixelMapParams = { 7351e41f4b71Sopenharmony_ci width : 300, 7352e41f4b71Sopenharmony_ci height : 300, 7353e41f4b71Sopenharmony_ci} 7354e41f4b71Sopenharmony_ci 7355e41f4b71Sopenharmony_ci// 获取缩略图 7356e41f4b71Sopenharmony_cimedia.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7357e41f4b71Sopenharmony_ci if(generator != null){ 7358e41f4b71Sopenharmony_ci avImageGenerator = generator; 7359e41f4b71Sopenharmony_ci console.info(`Succeeded in creating AVImageGenerator`); 7360e41f4b71Sopenharmony_ci avImageGenerator.fetchFrameByTime(timeUs, queryOption, param).then((pixelMap: image.PixelMap) => { 7361e41f4b71Sopenharmony_ci pixel_map = pixelMap; 7362e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 7363e41f4b71Sopenharmony_ci console.error(`Failed to fetch FrameByTime, error message:${error.message}`); 7364e41f4b71Sopenharmony_ci }); 7365e41f4b71Sopenharmony_ci } else { 7366e41f4b71Sopenharmony_ci console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7367e41f4b71Sopenharmony_ci }; 7368e41f4b71Sopenharmony_ci}); 7369e41f4b71Sopenharmony_ci``` 7370e41f4b71Sopenharmony_ci 7371e41f4b71Sopenharmony_ci### release<sup>12+</sup> 7372e41f4b71Sopenharmony_ci 7373e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void 7374e41f4b71Sopenharmony_ci 7375e41f4b71Sopenharmony_ci异步方式释放资源。通过注册回调函数获取返回值。 7376e41f4b71Sopenharmony_ci 7377e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7378e41f4b71Sopenharmony_ci 7379e41f4b71Sopenharmony_ci**参数:** 7380e41f4b71Sopenharmony_ci 7381e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7382e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- | 7383e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 回调函数。当释放资源成功,err为undefined,否则为错误对象。 | 7384e41f4b71Sopenharmony_ci 7385e41f4b71Sopenharmony_ci**错误码:** 7386e41f4b71Sopenharmony_ci 7387e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7388e41f4b71Sopenharmony_ci 7389e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7390e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 7391e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by callback. | 7392e41f4b71Sopenharmony_ci 7393e41f4b71Sopenharmony_ci**示例:** 7394e41f4b71Sopenharmony_ci 7395e41f4b71Sopenharmony_ci```ts 7396e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7397e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 7398e41f4b71Sopenharmony_ci 7399e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator | undefined = undefined; 7400e41f4b71Sopenharmony_ci 7401e41f4b71Sopenharmony_ci//释放资源 7402e41f4b71Sopenharmony_cimedia.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7403e41f4b71Sopenharmony_ci if(generator != null){ 7404e41f4b71Sopenharmony_ci avImageGenerator = generator; 7405e41f4b71Sopenharmony_ci console.info(`Succeeded in creating AVImageGenerator`); 7406e41f4b71Sopenharmony_ci avImageGenerator.release((error: BusinessError) => { 7407e41f4b71Sopenharmony_ci if (error) { 7408e41f4b71Sopenharmony_ci console.error(`Failed to release, err = ${JSON.stringify(error)}`); 7409e41f4b71Sopenharmony_ci return; 7410e41f4b71Sopenharmony_ci } 7411e41f4b71Sopenharmony_ci console.info(`Succeeded in releasing`); 7412e41f4b71Sopenharmony_ci }); 7413e41f4b71Sopenharmony_ci } else { 7414e41f4b71Sopenharmony_ci console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7415e41f4b71Sopenharmony_ci }; 7416e41f4b71Sopenharmony_ci}); 7417e41f4b71Sopenharmony_ci``` 7418e41f4b71Sopenharmony_ci 7419e41f4b71Sopenharmony_ci### release<sup>12+</sup> 7420e41f4b71Sopenharmony_ci 7421e41f4b71Sopenharmony_cirelease(): Promise\<void> 7422e41f4b71Sopenharmony_ci 7423e41f4b71Sopenharmony_ci异步方式释放资源。通过Promise获取返回值。 7424e41f4b71Sopenharmony_ci 7425e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7426e41f4b71Sopenharmony_ci 7427e41f4b71Sopenharmony_ci**返回值:** 7428e41f4b71Sopenharmony_ci 7429e41f4b71Sopenharmony_ci| 类型 | 说明 | 7430e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- | 7431e41f4b71Sopenharmony_ci| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 | 7432e41f4b71Sopenharmony_ci 7433e41f4b71Sopenharmony_ci**错误码:** 7434e41f4b71Sopenharmony_ci 7435e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7436e41f4b71Sopenharmony_ci 7437e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7438e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 7439e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by promise. | 7440e41f4b71Sopenharmony_ci 7441e41f4b71Sopenharmony_ci**示例:** 7442e41f4b71Sopenharmony_ci 7443e41f4b71Sopenharmony_ci```ts 7444e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7445e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 7446e41f4b71Sopenharmony_ci 7447e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator | undefined = undefined; 7448e41f4b71Sopenharmony_ci 7449e41f4b71Sopenharmony_ci//释放资源 7450e41f4b71Sopenharmony_cimedia.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => { 7451e41f4b71Sopenharmony_ci if(generator != null){ 7452e41f4b71Sopenharmony_ci avImageGenerator = generator; 7453e41f4b71Sopenharmony_ci console.info(`Succeeded in creating AVImageGenerator`); 7454e41f4b71Sopenharmony_ci avImageGenerator.release().then(() => { 7455e41f4b71Sopenharmony_ci console.info(`Succeeded in releasing.`); 7456e41f4b71Sopenharmony_ci }).catch((error: BusinessError) => { 7457e41f4b71Sopenharmony_ci console.error(`Failed to release, error message:${error.message}`); 7458e41f4b71Sopenharmony_ci }); 7459e41f4b71Sopenharmony_ci } else { 7460e41f4b71Sopenharmony_ci console.error(`Failed to creat AVImageGenerator, error message:${err.message}`); 7461e41f4b71Sopenharmony_ci }; 7462e41f4b71Sopenharmony_ci}); 7463e41f4b71Sopenharmony_ci``` 7464e41f4b71Sopenharmony_ci 7465e41f4b71Sopenharmony_ci## AVImageQueryOptions<sup>12+</sup> 7466e41f4b71Sopenharmony_ci 7467e41f4b71Sopenharmony_ci需要获取的缩略图时间点与视频帧的对应关系。 7468e41f4b71Sopenharmony_ci 7469e41f4b71Sopenharmony_ci在获取视频缩略图时,传入的时间点与实际取得的视频帧所在时间点不一定相等,需要指定传入的时间点与实际取得的视频帧的时间关系。 7470e41f4b71Sopenharmony_ci 7471e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7472e41f4b71Sopenharmony_ci 7473e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 7474e41f4b71Sopenharmony_ci| ------------------------ | --------------- | ------------------------------------------------------------ | 7475e41f4b71Sopenharmony_ci| AV_IMAGE_QUERY_NEXT_SYNC | 0 | 表示选取传入时间点或之后的关键帧。 | 7476e41f4b71Sopenharmony_ci| AV_IMAGE_QUERY_PREVIOUS_SYNC | 1 | 表示选取传入时间点或之前的关键帧。 | 7477e41f4b71Sopenharmony_ci| AV_IMAGE_QUERY_CLOSEST_SYNC | 2 | 表示选取离传入时间点最近的关键帧。 | 7478e41f4b71Sopenharmony_ci| AV_IMAGE_QUERY_CLOSEST | 3 | 表示选取离传入时间点最近的帧,该帧不一定是关键帧。 | 7479e41f4b71Sopenharmony_ci 7480e41f4b71Sopenharmony_ci## PixelMapParams<sup>12+</sup> 7481e41f4b71Sopenharmony_ci 7482e41f4b71Sopenharmony_ci获取视频缩略图时,输出缩略图的格式参数。 7483e41f4b71Sopenharmony_ci 7484e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 7485e41f4b71Sopenharmony_ci 7486e41f4b71Sopenharmony_ci| 名称 | 类型 | 可读 | 可写 | 说明 | 7487e41f4b71Sopenharmony_ci|--------|--------|------|------|---------------------------------------------------------------------------------| 7488e41f4b71Sopenharmony_ci| width | number | 是 | 是 | 输出的缩略图宽度。应保证大于0且不大于原始视频宽度。否则返回的缩略图不会进行缩放。 | 7489e41f4b71Sopenharmony_ci| height | number | 是 | 是 | 输出的缩略图高度。应保证大于0且不大于原始视频高度。否则返回的缩略图不会进行缩放。 | 7490e41f4b71Sopenharmony_ci 7491e41f4b71Sopenharmony_ci## media.createMediaSourceWithUrl<sup>12+</sup> 7492e41f4b71Sopenharmony_ci 7493e41f4b71Sopenharmony_cicreateMediaSourceWithUrl(url: string, headers?: Record\<string, string>): MediaSource 7494e41f4b71Sopenharmony_ci 7495e41f4b71Sopenharmony_ci创建流媒体预下载媒体来源实例方法。 7496e41f4b71Sopenharmony_ci 7497e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 7498e41f4b71Sopenharmony_ci 7499e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 7500e41f4b71Sopenharmony_ci 7501e41f4b71Sopenharmony_ci**参数:** 7502e41f4b71Sopenharmony_ci 7503e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7504e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 7505e41f4b71Sopenharmony_ci| url | string | 是 | - 流媒体预下载媒体来源url,支持的流媒体格式:HLS、HTTP-FLV、Dash、Https。<br> - 本地m3u8的fd路径。 | 7506e41f4b71Sopenharmony_ci| headers | Record\<string, string> | 否 | 支持流媒体预下载HttpHeader自定义。 | 7507e41f4b71Sopenharmony_ci 7508e41f4b71Sopenharmony_ci**返回值:** 7509e41f4b71Sopenharmony_ci 7510e41f4b71Sopenharmony_ci| 类型 | 说明 | 7511e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ | 7512e41f4b71Sopenharmony_ci| [MediaSource](#mediasource12) | MediaSource返回值。 | 7513e41f4b71Sopenharmony_ci 7514e41f4b71Sopenharmony_ci**错误码:** 7515e41f4b71Sopenharmony_ci 7516e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 7517e41f4b71Sopenharmony_ci 7518e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7519e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 7520e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 7521e41f4b71Sopenharmony_ci| 5400101 | No memory. | 7522e41f4b71Sopenharmony_ci 7523e41f4b71Sopenharmony_ci**示例1:** 7524e41f4b71Sopenharmony_ci 7525e41f4b71Sopenharmony_ci```ts 7526e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 7527e41f4b71Sopenharmony_ci 7528e41f4b71Sopenharmony_cilet headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"}; 7529e41f4b71Sopenharmony_cilet mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx", headers); 7530e41f4b71Sopenharmony_ci``` 7531e41f4b71Sopenharmony_ci 7532e41f4b71Sopenharmony_ci**示例2:** 7533e41f4b71Sopenharmony_ci 7534e41f4b71Sopenharmony_ci```ts 7535e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 7536e41f4b71Sopenharmony_ciimport { common } from '@kit.AbilityKit'; 7537e41f4b71Sopenharmony_ciimport { resourceManager } from '@kit.LocalizationKit'; 7538e41f4b71Sopenharmony_ci 7539e41f4b71Sopenharmony_cilet context = getContext(this) as common.UIAbilityContext; 7540e41f4b71Sopenharmony_cilet mgr = context.resourceManager; 7541e41f4b71Sopenharmony_cilet fileDescriptor = await mgr.getRawFd("xxx.m3u8"); 7542e41f4b71Sopenharmony_ci 7543e41f4b71Sopenharmony_cilet fd:string = fileDescriptor.fd.toString(); 7544e41f4b71Sopenharmony_cilet offset:string = fileDescriptor.offset.toString(); 7545e41f4b71Sopenharmony_cilet length:string = fileDescriptor.length.toString(); 7546e41f4b71Sopenharmony_cilet fdUrl:string = "fd://" + fd + "?offset=" + offset + "&size=" + length; 7547e41f4b71Sopenharmony_ci 7548e41f4b71Sopenharmony_cilet headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"}; 7549e41f4b71Sopenharmony_cilet mediaSource : media.MediaSource = media.createMediaSourceWithUrl(fdUrl, headers); 7550e41f4b71Sopenharmony_ci 7551e41f4b71Sopenharmony_cilet mimeType : media.AVMimeTypes = media.AVMimeTypes.APPLICATION_M3U8; 7552e41f4b71Sopenharmony_cimediaSource.setMimeType(mimeType); 7553e41f4b71Sopenharmony_ci 7554e41f4b71Sopenharmony_ci``` 7555e41f4b71Sopenharmony_ci 7556e41f4b71Sopenharmony_ci## MediaSource<sup>12+</sup> 7557e41f4b71Sopenharmony_ci 7558e41f4b71Sopenharmony_ci媒体数据信息。来源自[createMediaSourceWithUrl](#mediacreatemediasourcewithurl12)。 7559e41f4b71Sopenharmony_ci 7560e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 7561e41f4b71Sopenharmony_ci 7562e41f4b71Sopenharmony_ci### setMimeType<sup>12+</sup> 7563e41f4b71Sopenharmony_ci 7564e41f4b71Sopenharmony_cisetMimeType(mimeType: AVMimeTypes): void 7565e41f4b71Sopenharmony_ci 7566e41f4b71Sopenharmony_ci设置媒体MIME类型,以帮助播放器处理扩展的媒体源。 7567e41f4b71Sopenharmony_ci 7568e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 7569e41f4b71Sopenharmony_ci 7570e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 7571e41f4b71Sopenharmony_ci 7572e41f4b71Sopenharmony_ci**参数:** 7573e41f4b71Sopenharmony_ci 7574e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7575e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 7576e41f4b71Sopenharmony_ci| mimeType | [AVMimeTypes](#mediasource12) | 是 | 媒体MIME类型。 | 7577e41f4b71Sopenharmony_ci 7578e41f4b71Sopenharmony_ci## AVMimeTypes<sup>12+</sup> 7579e41f4b71Sopenharmony_ci 7580e41f4b71Sopenharmony_ci媒体MIME类型,通过[setMimeType](#setmimetype12)设置。 7581e41f4b71Sopenharmony_ci 7582e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 7583e41f4b71Sopenharmony_ci 7584e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 7585e41f4b71Sopenharmony_ci 7586e41f4b71Sopenharmony_ci 7587e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 7588e41f4b71Sopenharmony_ci| ---------- | ---- | ------------------------------------------------------------ | 7589e41f4b71Sopenharmony_ci| APPLICATION_M3U8 | application/m3u8 | 表示m3u8本地文件。 | 7590e41f4b71Sopenharmony_ci 7591e41f4b71Sopenharmony_ci 7592e41f4b71Sopenharmony_ci## PlaybackStrategy<sup>12+</sup> 7593e41f4b71Sopenharmony_ci 7594e41f4b71Sopenharmony_ci播放策略。 7595e41f4b71Sopenharmony_ci 7596e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 7597e41f4b71Sopenharmony_ci 7598e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 7599e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- | 7600e41f4b71Sopenharmony_ci| preferredWidth| number | 否 | 播放策略首选宽度,int类型,如1080。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7601e41f4b71Sopenharmony_ci| preferredHeight | number | 否 | 播放策略首选高度,int类型,如1920。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7602e41f4b71Sopenharmony_ci| preferredBufferDuration | number | 否 | 播放策略首选缓冲持续时间,单位s,取值范围1-20。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7603e41f4b71Sopenharmony_ci| preferredHdr | boolean | 否 | 播放策略true是hdr,false非hdr,默认非hdr。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 7604e41f4b71Sopenharmony_ci| mutedMediaType | [MediaType](#mediatype8) | 否 | 静音播放的媒体类型,仅支持设置 MediaType.MEDIA_TYPE_AUD。 | 7605e41f4b71Sopenharmony_ci| preferredAudioLanguage<sup>13+</sup> | string | 否 | 播放策略首选音轨语言。dash场景下应用可按需设置。非dash场景不涉及,建议缺省。 | 7606e41f4b71Sopenharmony_ci| preferredSubtitleLanguage<sup>13+</sup> | string | 否 | 播放策略首选字幕语言。dash场景下应用可按需设置。非dash场景不涉及,建议缺省。 | 7607e41f4b71Sopenharmony_ci 7608e41f4b71Sopenharmony_ci## AVScreenCaptureRecordPreset<sup>12+</sup> 7609e41f4b71Sopenharmony_ci 7610e41f4b71Sopenharmony_ci进行屏幕录制时的编码、封装格式参数的枚举。 7611e41f4b71Sopenharmony_ci 7612e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7613e41f4b71Sopenharmony_ci 7614e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 7615e41f4b71Sopenharmony_ci| --------------------------------- | ---- | -------------------------------------------- | 7616e41f4b71Sopenharmony_ci| SCREEN_RECORD_PRESET_H264_AAC_MP4 | 0 | 使用视频H264编码,音频AAC编码,MP4封装格式。 | 7617e41f4b71Sopenharmony_ci| SCREEN_RECORD_PRESET_H265_AAC_MP4 | 1 | 使用视频H265编码,音频AAC编码,MP4封装格式。 | 7618e41f4b71Sopenharmony_ci 7619e41f4b71Sopenharmony_ci## AVScreenCaptureStateCode<sup>12+</sup> 7620e41f4b71Sopenharmony_ci 7621e41f4b71Sopenharmony_ci屏幕录制的状态回调。 7622e41f4b71Sopenharmony_ci 7623e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7624e41f4b71Sopenharmony_ci 7625e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 7626e41f4b71Sopenharmony_ci| ---------------------------------------- | ---- | ------------------------ | 7627e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_STARTED | 0 | 录屏已开始。 | 7628e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_CANCELED | 1 | 录屏被取消。 | 7629e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_STOPPED_BY_USER | 2 | 录屏被用户手动停止。 | 7630e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_INTERRUPTED_BY_OTHER | 3 | 录屏被其他录屏打断。 | 7631e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_STOPPED_BY_CALL | 4 | 录屏被来电打断。 | 7632e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_MIC_UNAVAILABLE | 5 | 录屏无法使用麦克风收音。 | 7633e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_MIC_MUTED_BY_USER | 6 | 麦克风被用户关闭。 | 7634e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_MIC_UNMUTED_BY_USER | 7 | 麦克风被用户打开。 | 7635e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_ENTER_PRIVATE_SCENE | 8 | 录屏进入隐私页面。 | 7636e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_EXIT_PRIVATE_SCENE | 9 | 录屏退出隐私页面。 | 7637e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_STOPPED_BY_USER_SWITCHES | 10 | 系统用户切换,录屏中断。 | 7638e41f4b71Sopenharmony_ci 7639e41f4b71Sopenharmony_ci## AVScreenCaptureRecordConfig<sup>12+</sup> 7640e41f4b71Sopenharmony_ci 7641e41f4b71Sopenharmony_ci表示录屏参数配置。 7642e41f4b71Sopenharmony_ci 7643e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7644e41f4b71Sopenharmony_ci 7645e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 7646e41f4b71Sopenharmony_ci| ----------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 7647e41f4b71Sopenharmony_ci| fd | number | 是 | 录制输出的文件fd。 | 7648e41f4b71Sopenharmony_ci| frameWidth | number | 否 | 录屏的视频宽度,默认屏幕宽度,根据不同屏幕默认值不同,单位px。 | 7649e41f4b71Sopenharmony_ci| frameHeight | number | 否 | 录屏的视频高度,默认屏幕高度,根据不同屏幕默认值不同,单位px。 | 7650e41f4b71Sopenharmony_ci| videoBitrate | number | 否 | 录屏的视频比特率,默认10000000。 | 7651e41f4b71Sopenharmony_ci| audioSampleRate | number | 否 | 录屏的音频采样率,内录的系统音和外录的麦克风都是用此采样率,默认48000,仅支持设置48000或16000。 | 7652e41f4b71Sopenharmony_ci| audioChannelCount | number | 否 | 录屏的音频通道数,内录的系统音和外录的麦克风都是用此通道数,默认2声道,仅支持设置1或2声道。 | 7653e41f4b71Sopenharmony_ci| audioBitrate | number | 否 | 录屏的音频比特率,内录的系统音和外录的麦克风都是用此比特率,默认96000。 | 7654e41f4b71Sopenharmony_ci| preset | [AVScreenCaptureRecordPreset](#avscreencapturerecordpreset12) | 否 | 录屏使用的编码和封装格式,默认SCREEN_RECORD_PRESET_H264_AAC_MP4格式。 | 7655e41f4b71Sopenharmony_ci 7656e41f4b71Sopenharmony_ci## AVScreenCaptureRecorder<sup>12+</sup> 7657e41f4b71Sopenharmony_ci 7658e41f4b71Sopenharmony_ci屏幕录制管理类,用于进行屏幕录制。在调用AVScreenCaptureRecorder的方法前,需要先通过[createAVScreenCaptureRecorder()](#mediacreateavscreencapturerecorder12)创建一个AVScreenCaptureRecorder实例。 7659e41f4b71Sopenharmony_ci 7660e41f4b71Sopenharmony_ci### init<sup>12+</sup> 7661e41f4b71Sopenharmony_ci 7662e41f4b71Sopenharmony_ciinit(config: AVScreenCaptureRecordConfig): Promise\<void> 7663e41f4b71Sopenharmony_ci 7664e41f4b71Sopenharmony_ci异步方式进行录屏初始化,设置录屏参数。通过Promise获取返回值。 7665e41f4b71Sopenharmony_ci 7666e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7667e41f4b71Sopenharmony_ci 7668e41f4b71Sopenharmony_ci**参数:** 7669e41f4b71Sopenharmony_ci 7670e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7671e41f4b71Sopenharmony_ci| ------ | ------------------------------------------------------------ | ---- | ------------------------ | 7672e41f4b71Sopenharmony_ci| config | [AVScreenCaptureRecordConfig](#avscreencapturerecordconfig12) | 是 | 配置屏幕录制的相关参数。 | 7673e41f4b71Sopenharmony_ci 7674e41f4b71Sopenharmony_ci**返回值:** 7675e41f4b71Sopenharmony_ci 7676e41f4b71Sopenharmony_ci| 类型 | 说明 | 7677e41f4b71Sopenharmony_ci| -------------- | ----------------------------------- | 7678e41f4b71Sopenharmony_ci| Promise\<void> | 异步录屏初始化方法的Promise返回值。 | 7679e41f4b71Sopenharmony_ci 7680e41f4b71Sopenharmony_ci**错误码:** 7681e41f4b71Sopenharmony_ci 7682e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7683e41f4b71Sopenharmony_ci| -------- | ---------------------------------------------- | 7684e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. Return by promise. | 7685e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 7686e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 7687e41f4b71Sopenharmony_ci 7688e41f4b71Sopenharmony_ci**示例:** 7689e41f4b71Sopenharmony_ci 7690e41f4b71Sopenharmony_ci```ts 7691e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7692e41f4b71Sopenharmony_ci 7693e41f4b71Sopenharmony_cilet avCaptureConfig: media.AVScreenCaptureRecordConfig = { 7694e41f4b71Sopenharmony_ci fd: 0, // 文件需要先有调用者创建,赋予写权限,将文件fd传给此参数 7695e41f4b71Sopenharmony_ci frameWidth: 640, 7696e41f4b71Sopenharmony_ci frameHeight: 480 7697e41f4b71Sopenharmony_ci // 补充其他参数 7698e41f4b71Sopenharmony_ci} 7699e41f4b71Sopenharmony_ci 7700e41f4b71Sopenharmony_ciavScreenCaptureRecorder.init(avCaptureConfig).then(() => { 7701e41f4b71Sopenharmony_ci console.info('Succeeded in initing avScreenCaptureRecorder'); 7702e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 7703e41f4b71Sopenharmony_ci console.info('Failed to init avScreenCaptureRecorder, error: ' + err.message); 7704e41f4b71Sopenharmony_ci}) 7705e41f4b71Sopenharmony_ci``` 7706e41f4b71Sopenharmony_ci 7707e41f4b71Sopenharmony_ci### startRecording<sup>12+</sup> 7708e41f4b71Sopenharmony_ci 7709e41f4b71Sopenharmony_cistartRecording(): Promise\<void> 7710e41f4b71Sopenharmony_ci 7711e41f4b71Sopenharmony_ci异步方式开始录屏。通过Promise获取返回值。 7712e41f4b71Sopenharmony_ci 7713e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7714e41f4b71Sopenharmony_ci 7715e41f4b71Sopenharmony_ci**返回值:** 7716e41f4b71Sopenharmony_ci 7717e41f4b71Sopenharmony_ci| 类型 | 说明 | 7718e41f4b71Sopenharmony_ci| -------------- | -------------------------------- | 7719e41f4b71Sopenharmony_ci| Promise\<void> | 异步开始录屏方法的Promise返回值. | 7720e41f4b71Sopenharmony_ci 7721e41f4b71Sopenharmony_ci**错误码:** 7722e41f4b71Sopenharmony_ci 7723e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7724e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 7725e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 7726e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 7727e41f4b71Sopenharmony_ci 7728e41f4b71Sopenharmony_ci**示例:** 7729e41f4b71Sopenharmony_ci 7730e41f4b71Sopenharmony_ci```ts 7731e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7732e41f4b71Sopenharmony_ci 7733e41f4b71Sopenharmony_ciavScreenCaptureRecorder.startRecording().then(() => { 7734e41f4b71Sopenharmony_ci console.info('Succeeded in starting avScreenCaptureRecorder'); 7735e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 7736e41f4b71Sopenharmony_ci console.info('Failed to start avScreenCaptureRecorder, error: ' + err.message); 7737e41f4b71Sopenharmony_ci}) 7738e41f4b71Sopenharmony_ci``` 7739e41f4b71Sopenharmony_ci 7740e41f4b71Sopenharmony_ci### stopRecording<sup>12+</sup> 7741e41f4b71Sopenharmony_ci 7742e41f4b71Sopenharmony_cistopRecording(): Promise\<void> 7743e41f4b71Sopenharmony_ci 7744e41f4b71Sopenharmony_ci异步方式结束录屏。通过Promise获取返回值。 7745e41f4b71Sopenharmony_ci 7746e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7747e41f4b71Sopenharmony_ci 7748e41f4b71Sopenharmony_ci**返回值:** 7749e41f4b71Sopenharmony_ci 7750e41f4b71Sopenharmony_ci| 类型 | 说明 | 7751e41f4b71Sopenharmony_ci| -------------- | --------------------------------- | 7752e41f4b71Sopenharmony_ci| Promise\<void> | 异步结束录屏方法的Promise返回值。 | 7753e41f4b71Sopenharmony_ci 7754e41f4b71Sopenharmony_ci**错误码:** 7755e41f4b71Sopenharmony_ci 7756e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7757e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 7758e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 7759e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 7760e41f4b71Sopenharmony_ci 7761e41f4b71Sopenharmony_ci**示例:** 7762e41f4b71Sopenharmony_ci 7763e41f4b71Sopenharmony_ci```ts 7764e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7765e41f4b71Sopenharmony_ci 7766e41f4b71Sopenharmony_ciavScreenCaptureRecorder.stopRecording().then(() => { 7767e41f4b71Sopenharmony_ci console.info('Succeeded in stopping avScreenCaptureRecorder'); 7768e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 7769e41f4b71Sopenharmony_ci console.info('Failed to stop avScreenCaptureRecorder, error: ' + err.message); 7770e41f4b71Sopenharmony_ci}) 7771e41f4b71Sopenharmony_ci``` 7772e41f4b71Sopenharmony_ci 7773e41f4b71Sopenharmony_ci### skipPrivacyMode<sup>12+</sup> 7774e41f4b71Sopenharmony_ci 7775e41f4b71Sopenharmony_ciskipPrivacyMode(windowIDs: Array\<number>): Promise\<void> 7776e41f4b71Sopenharmony_ci 7777e41f4b71Sopenharmony_ci录屏时,应用可对本应用的隐私窗口做安全豁免。通过Promise获取返回值。 7778e41f4b71Sopenharmony_ci如录屏时,用户在本应用进行输入密码等操作,应用不会进行黑屏处理。 7779e41f4b71Sopenharmony_ci 7780e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7781e41f4b71Sopenharmony_ci 7782e41f4b71Sopenharmony_ci**参数:** 7783e41f4b71Sopenharmony_ci 7784e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7785e41f4b71Sopenharmony_ci| ------ | ------- | ---- | --------------------------------------------------------- | 7786e41f4b71Sopenharmony_ci| windowIDs | Array\<number> | 是 | 需要豁免隐私的窗口列表,包括主窗口id和子窗口id,窗口属性获取方法可以参考[窗口API引用](../apis-arkui/js-apis-window.md#getwindowproperties9) | 7787e41f4b71Sopenharmony_ci 7788e41f4b71Sopenharmony_ci**返回值:** 7789e41f4b71Sopenharmony_ci 7790e41f4b71Sopenharmony_ci| 类型 | 说明 | 7791e41f4b71Sopenharmony_ci| -------------- | -------------------------------- | 7792e41f4b71Sopenharmony_ci| Promise\<void> | 豁免隐私窗口的Promise返回值. | 7793e41f4b71Sopenharmony_ci 7794e41f4b71Sopenharmony_ci**错误码:** 7795e41f4b71Sopenharmony_ci 7796e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7797e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 7798e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 7799e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 7800e41f4b71Sopenharmony_ci 7801e41f4b71Sopenharmony_ci**示例:** 7802e41f4b71Sopenharmony_ci 7803e41f4b71Sopenharmony_ci```ts 7804e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7805e41f4b71Sopenharmony_ci 7806e41f4b71Sopenharmony_cilet windowIDs = []; 7807e41f4b71Sopenharmony_ciavScreenCaptureRecorder.skipPrivacyMode(windowIDs).then(() => { 7808e41f4b71Sopenharmony_ci console.info('Succeeded in skipping privacy mode'); 7809e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 7810e41f4b71Sopenharmony_ci console.info('Failed to skip privacy mode, error: ' + err.message); 7811e41f4b71Sopenharmony_ci}) 7812e41f4b71Sopenharmony_ci``` 7813e41f4b71Sopenharmony_ci 7814e41f4b71Sopenharmony_ci### setMicEnabled<sup>12+</sup> 7815e41f4b71Sopenharmony_ci 7816e41f4b71Sopenharmony_cisetMicEnabled(enable: boolean): Promise\<void> 7817e41f4b71Sopenharmony_ci 7818e41f4b71Sopenharmony_ci异步方式设置麦克风开关。通过Promise获取返回值。 7819e41f4b71Sopenharmony_ci 7820e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7821e41f4b71Sopenharmony_ci 7822e41f4b71Sopenharmony_ci**参数:** 7823e41f4b71Sopenharmony_ci 7824e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7825e41f4b71Sopenharmony_ci| ------ | ------- | ---- | --------------------------------------------------------- | 7826e41f4b71Sopenharmony_ci| enable | boolean | 是 | 麦克风开关控制,true代表麦克风打开,false代表麦克风关闭。 | 7827e41f4b71Sopenharmony_ci 7828e41f4b71Sopenharmony_ci**返回值:** 7829e41f4b71Sopenharmony_ci 7830e41f4b71Sopenharmony_ci| 类型 | 说明 | 7831e41f4b71Sopenharmony_ci| -------------- | --------------------------------------- | 7832e41f4b71Sopenharmony_ci| Promise\<void> | 异步设置麦克风开关方法的Promise返回值。 | 7833e41f4b71Sopenharmony_ci 7834e41f4b71Sopenharmony_ci**错误码:** 7835e41f4b71Sopenharmony_ci 7836e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7837e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 7838e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 7839e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 7840e41f4b71Sopenharmony_ci 7841e41f4b71Sopenharmony_ci**示例:** 7842e41f4b71Sopenharmony_ci 7843e41f4b71Sopenharmony_ci```ts 7844e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7845e41f4b71Sopenharmony_ci 7846e41f4b71Sopenharmony_ciavScreenCaptureRecorder.setMicEnabled(true).then(() => { 7847e41f4b71Sopenharmony_ci console.info('Succeeded in setMicEnabled avScreenCaptureRecorder'); 7848e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 7849e41f4b71Sopenharmony_ci console.info('Failed to setMicEnabled avScreenCaptureRecorder, error: ' + err.message); 7850e41f4b71Sopenharmony_ci}) 7851e41f4b71Sopenharmony_ci``` 7852e41f4b71Sopenharmony_ci 7853e41f4b71Sopenharmony_ci### release<sup>12+</sup> 7854e41f4b71Sopenharmony_ci 7855e41f4b71Sopenharmony_cirelease(): Promise\<void> 7856e41f4b71Sopenharmony_ci 7857e41f4b71Sopenharmony_ci异步方式释放录屏。通过Promise获取返回值。 7858e41f4b71Sopenharmony_ci 7859e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7860e41f4b71Sopenharmony_ci 7861e41f4b71Sopenharmony_ci**返回值:** 7862e41f4b71Sopenharmony_ci 7863e41f4b71Sopenharmony_ci| 类型 | 说明 | 7864e41f4b71Sopenharmony_ci| -------------- | --------------------------------- | 7865e41f4b71Sopenharmony_ci| Promise\<void> | 异步释放录屏方法的Promise返回值。 | 7866e41f4b71Sopenharmony_ci 7867e41f4b71Sopenharmony_ci**错误码:** 7868e41f4b71Sopenharmony_ci 7869e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7870e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 7871e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by promise. | 7872e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 7873e41f4b71Sopenharmony_ci 7874e41f4b71Sopenharmony_ci**示例:** 7875e41f4b71Sopenharmony_ci 7876e41f4b71Sopenharmony_ci```ts 7877e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 7878e41f4b71Sopenharmony_ci 7879e41f4b71Sopenharmony_ciavScreenCaptureRecorder.release().then(() => { 7880e41f4b71Sopenharmony_ci console.info('Succeeded in releasing avScreenCaptureRecorder'); 7881e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 7882e41f4b71Sopenharmony_ci console.info('Faile to release avScreenCaptureRecorder, error: ' + err.message); 7883e41f4b71Sopenharmony_ci}) 7884e41f4b71Sopenharmony_ci``` 7885e41f4b71Sopenharmony_ci 7886e41f4b71Sopenharmony_ci### on('stateChange')<sup>12+</sup> 7887e41f4b71Sopenharmony_ci 7888e41f4b71Sopenharmony_cion(type: 'stateChange', callback: Callback\<AVScreenCaptureStateCode>): void 7889e41f4b71Sopenharmony_ci 7890e41f4b71Sopenharmony_ci订阅录屏状态切换的事件,当状态发生的时候,会通过订阅的回调通知用户。用户只能订阅一个状态切换的回调方法,重复订阅时,以最后一次订阅的回调接口为准。 7891e41f4b71Sopenharmony_ci 7892e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7893e41f4b71Sopenharmony_ci 7894e41f4b71Sopenharmony_ci**参数:** 7895e41f4b71Sopenharmony_ci 7896e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7897e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 7898e41f4b71Sopenharmony_ci| type | string | 是 | 状态切换事件回调类型,支持的事件:'stateChange'。 | 7899e41f4b71Sopenharmony_ci| callback | function | 是 | 状态切换事件回调方法,[AVScreenCaptureStateCode](#avscreencapturestatecode12)表示切换到的状态。 | 7900e41f4b71Sopenharmony_ci 7901e41f4b71Sopenharmony_ci**示例:** 7902e41f4b71Sopenharmony_ci 7903e41f4b71Sopenharmony_ci```ts 7904e41f4b71Sopenharmony_ciavScreenCaptureRecorder.on('stateChange', (state: media.AVScreenCaptureStateCode) => { 7905e41f4b71Sopenharmony_ci console.info('avScreenCaptureRecorder stateChange to ' + state); 7906e41f4b71Sopenharmony_ci}) 7907e41f4b71Sopenharmony_ci``` 7908e41f4b71Sopenharmony_ci 7909e41f4b71Sopenharmony_ci### on('error')<sup>12+</sup> 7910e41f4b71Sopenharmony_ci 7911e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void 7912e41f4b71Sopenharmony_ci 7913e41f4b71Sopenharmony_ci订阅AVScreenCaptureRecorder的错误事件,用户可以根据应用自身逻辑对错误事件进行处理。用户只能订阅一个错误事件的回调方法,重复订阅时,以最后一次订阅的回调接口为准。 7914e41f4b71Sopenharmony_ci 7915e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7916e41f4b71Sopenharmony_ci 7917e41f4b71Sopenharmony_ci**参数:** 7918e41f4b71Sopenharmony_ci 7919e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7920e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | --------------------------------------- | 7921e41f4b71Sopenharmony_ci| type | string | 是 | 错误事件回调类型,支持的事件:'error'。 | 7922e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录屏错误事件回调方法。 | 7923e41f4b71Sopenharmony_ci 7924e41f4b71Sopenharmony_ci**错误码:** 7925e41f4b71Sopenharmony_ci 7926e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 7927e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 7928e41f4b71Sopenharmony_ci| 201 | permission denied. | 7929e41f4b71Sopenharmony_ci| 5400103 | IO error. Return by ErrorCallback. | 7930e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by ErrorCallback. | 7931e41f4b71Sopenharmony_ci 7932e41f4b71Sopenharmony_ci**示例:** 7933e41f4b71Sopenharmony_ci 7934e41f4b71Sopenharmony_ci```ts 7935e41f4b71Sopenharmony_ciavScreenCaptureRecorder.on('error', (err: BusinessError) => { 7936e41f4b71Sopenharmony_ci console.error('avScreenCaptureRecorder error:' + err.message); 7937e41f4b71Sopenharmony_ci}) 7938e41f4b71Sopenharmony_ci``` 7939e41f4b71Sopenharmony_ci 7940e41f4b71Sopenharmony_ci### off('stateChange')<sup>12+</sup> 7941e41f4b71Sopenharmony_ci 7942e41f4b71Sopenharmony_ci off(type: 'stateChange', callback?: Callback\<AVScreenCaptureStateCode>): void 7943e41f4b71Sopenharmony_ci 7944e41f4b71Sopenharmony_ci取消订阅状态切换回调事件。用户可以指定填入状态切换的回调方法来取消订阅。 7945e41f4b71Sopenharmony_ci 7946e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7947e41f4b71Sopenharmony_ci 7948e41f4b71Sopenharmony_ci**参数:** 7949e41f4b71Sopenharmony_ci 7950e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7951e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ | 7952e41f4b71Sopenharmony_ci| type | string | 是 | 状态切换事件回调类型,支持的事件:'stateChange'。 | 7953e41f4b71Sopenharmony_ci| callback | function | 否 | 状态切换事件回调方法,[AVScreenCaptureStateCode](#avscreencapturestatecode12)表示切换到的状态,不填此参数则会取消最后一次订阅事件。 | 7954e41f4b71Sopenharmony_ci 7955e41f4b71Sopenharmony_ci**示例:** 7956e41f4b71Sopenharmony_ci 7957e41f4b71Sopenharmony_ci```ts 7958e41f4b71Sopenharmony_ciavScreenCaptureRecorder.off('stateChange'); 7959e41f4b71Sopenharmony_ci``` 7960e41f4b71Sopenharmony_ci 7961e41f4b71Sopenharmony_ci### off('error')<sup>12+</sup> 7962e41f4b71Sopenharmony_ci 7963e41f4b71Sopenharmony_cioff(type: 'error', callback?: ErrorCallback): void 7964e41f4b71Sopenharmony_ci 7965e41f4b71Sopenharmony_ci取消订阅错误回调事件。用户可以指定填入错误回调方法来取消订阅。 7966e41f4b71Sopenharmony_ci 7967e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 7968e41f4b71Sopenharmony_ci 7969e41f4b71Sopenharmony_ci**参数:** 7970e41f4b71Sopenharmony_ci 7971e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 7972e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ---------------------------------------------------------- | 7973e41f4b71Sopenharmony_ci| type | string | 是 | 状态切换事件回调类型,支持的事件:'error'。 | 7974e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 录屏错误事件回调方法,不填此参数则会取消最后一次订阅事件。 | 7975e41f4b71Sopenharmony_ci 7976e41f4b71Sopenharmony_ci**示例:** 7977e41f4b71Sopenharmony_ci 7978e41f4b71Sopenharmony_ci```ts 7979e41f4b71Sopenharmony_ciavScreenCaptureRecorder.off('error'); 7980e41f4b71Sopenharmony_ci```