1e41f4b71Sopenharmony_ci# @ohos.multimedia.media (媒体服务)(系统接口) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统的媒体资源。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> - 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8e41f4b71Sopenharmony_ci> - 当前页面仅包含本模块的系统接口,其他公开接口参见[@ohos.multimedia.media (媒体服务)](js-apis-media.md)。 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci## 导入模块 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci```ts 13e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 14e41f4b71Sopenharmony_ci``` 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci## media.createVideoRecorder<sup>9+</sup> 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_cicreateVideoRecorder(callback: AsyncCallback\<VideoRecorder>): void 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci异步方式创建视频录制实例。通过注册回调函数获取返回值。 21e41f4b71Sopenharmony_ci一台设备只允许创建一个录制实例。 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci**参数:** 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 30e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ | 31e41f4b71Sopenharmony_ci| callback | AsyncCallback<[VideoRecorder](#videorecorder9)> | 是 | 回调函数。异步返回VideoRecorder实例,失败时返回null。可用于录制视频媒体。 | 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci**错误码:** 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 38e41f4b71Sopenharmony_ci| -------- | ------------------------------ | 39e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by callback. | 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ci**示例:** 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci```ts 44e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_cilet videoRecorder: media.VideoRecorder; 47e41f4b71Sopenharmony_cimedia.createVideoRecorder((error: BusinessError, video: media.VideoRecorder) => { 48e41f4b71Sopenharmony_ci if (video != null) { 49e41f4b71Sopenharmony_ci videoRecorder = video; 50e41f4b71Sopenharmony_ci console.info('video createVideoRecorder success'); 51e41f4b71Sopenharmony_ci } else { 52e41f4b71Sopenharmony_ci console.error(`video createVideoRecorder fail, error message:${error.message}`); 53e41f4b71Sopenharmony_ci } 54e41f4b71Sopenharmony_ci}); 55e41f4b71Sopenharmony_ci``` 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci## media.createVideoRecorder<sup>9+</sup> 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_cicreateVideoRecorder(): Promise\<VideoRecorder> 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci异步方式创建视频录制实例。通过Promise获取返回值。 62e41f4b71Sopenharmony_ci一台设备只允许创建一个录制实例。 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ci**返回值:** 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci| 类型 | 说明 | 71e41f4b71Sopenharmony_ci| ----------------------------------------- | ------------------------------------------------------------ | 72e41f4b71Sopenharmony_ci| Promise<[VideoRecorder](#videorecorder9)> | Promise对象。异步返回VideoRecorder实例,失败时返回null。可用于录制视频媒体。 | 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci**错误码:** 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 79e41f4b71Sopenharmony_ci| -------- | ----------------------------- | 80e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by promise. | 81e41f4b71Sopenharmony_ci 82e41f4b71Sopenharmony_ci**示例:** 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci```ts 85e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_cilet videoRecorder: media.VideoRecorder; 88e41f4b71Sopenharmony_cimedia.createVideoRecorder().then((video: media.VideoRecorder) => { 89e41f4b71Sopenharmony_ci if (video != null) { 90e41f4b71Sopenharmony_ci videoRecorder = video; 91e41f4b71Sopenharmony_ci console.info('video createVideoRecorder success'); 92e41f4b71Sopenharmony_ci } else { 93e41f4b71Sopenharmony_ci console.error('video createVideoRecorder fail'); 94e41f4b71Sopenharmony_ci } 95e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 96e41f4b71Sopenharmony_ci console.error(`video catchCallback, error message:${error.message}`); 97e41f4b71Sopenharmony_ci}); 98e41f4b71Sopenharmony_ci``` 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci## media.reportAVScreenCaptureUserChoice<sup>12+</sup> 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_cireportAVScreenCaptureUserChoice(sessionId: number, choice: string): Promise\<void> 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci上报录屏隐私弹窗的选择结果到ScreenCapture的服务端,用于判断是否开始录屏。如果用户选择“取消”则不进行录屏,如果用户选择“确定”则开始录屏。 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci此接口提供给创建弹窗的系统应用调用。 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 111e41f4b71Sopenharmony_ci 112e41f4b71Sopenharmony_ci**参数:** 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 115e41f4b71Sopenharmony_ci| --------- | ------ | ---- | ------------------------------------------------------------ | 116e41f4b71Sopenharmony_ci| sessionId | number | 是 | AVScreenCapture服务会话Id,会由AVScreenCapture拉起隐私弹窗时传给应用。 | 117e41f4b71Sopenharmony_ci| choice | string | 是 | 用户的选择内容,“取消”为“false”,“确定”为“true“。 | 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci**错误码:** 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 122e41f4b71Sopenharmony_ci| -------- | ------------------------------------------- | 123e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 124e41f4b71Sopenharmony_ci| 5400101 | No memory. Return by promise. | 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci**示例:** 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ci```ts 129e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 130e41f4b71Sopenharmony_ci 131e41f4b71Sopenharmony_cilet sessionId: number = 0; // 替换成拉起此进程的sessionId 132e41f4b71Sopenharmony_cilet choice: string = 'false'; // 替换成用户的选择内容 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_citry { 135e41f4b71Sopenharmony_ci await media.reportAVScreenCaptureUserChoice(sessionId, choice); 136e41f4b71Sopenharmony_ci} catch (error: BusinessError) { 137e41f4b71Sopenharmony_ci console.error(`reportAVScreenCaptureUserChoice error, error message: ${error.message}`); 138e41f4b71Sopenharmony_ci} 139e41f4b71Sopenharmony_ci``` 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_ci## PixelMapParams<sup>11+</sup> 142e41f4b71Sopenharmony_ci 143e41f4b71Sopenharmony_ci获取视频缩略图时,输出缩略图的格式参数。 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci| 名称 | 类型 | 可读 | 可写 | 说明 | 148e41f4b71Sopenharmony_ci| -------- | ------ | ------| ------ | ---------------------- | 149e41f4b71Sopenharmony_ci| colorFormat | [PixelFormat](#pixelformat11) | 是 | 是 | 输出的缩略图颜色格式<br>**系统接口:** 该接口为系统接口 | 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci## PixelFormat<sup>11+</sup> 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ci获取视频缩略图时,输出的缩略图采用的颜色格式枚举。 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ci| 名称 | 值 | 说明 | 160e41f4b71Sopenharmony_ci| ------------------------ | --------------- | ------------------------------------------------------------ | 161e41f4b71Sopenharmony_ci| RGB_565 | 2 | 表示RGB_565颜色格式。 | 162e41f4b71Sopenharmony_ci| RGBA_8888 | 3 | 表示RGBA_8888颜色格式。 | 163e41f4b71Sopenharmony_ci| RGB_888 | 5 | 表示RGB_888颜色格式。 | 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci## AvPlayer<sup>9+</sup> 166e41f4b71Sopenharmony_ci> **说明:** 167e41f4b71Sopenharmony_ci> 播放管理类,用于管理和播放媒体资源。在调用AVPlayer的方法前,需要先通过[createAVPlayer()](js-apis-media.md#mediacreateavplayer9)构建一个[AVPlayer](js-apis-media.md#avplayer9)实例。 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci### setPlaybackRange<sup>12+</sup> 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_cisetPlaybackRange(startTimeMs: number, endTimeMs: number, mode?: SeekMode) : Promise\<void> 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci设置播放区间,并通过指定的[SeekMode](js-apis-media.md#seekmode8)跳转到区间开始位置。设置之后,只播放音视频文件设定区间内的内容。该方法异步方式返回执行结果,通过Promise获取返回值。可在**initialized**/**prepared**/**paused**/**stopped**/**completed**状态下使用。 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AvPlayer 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 178e41f4b71Sopenharmony_ci 179e41f4b71Sopenharmony_ci**参数:** 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 182e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | --------------------------- | 183e41f4b71Sopenharmony_ci| startTimeMs | number | 是 | 区间开始位置,单位ms,取值[0, duration)。可以设置-1值,系统将会从0位置开始播放。| 184e41f4b71Sopenharmony_ci| endTimeMs | number | 是 | 区间结束位置,单位ms,取值(startTimeMs, duration]。可以设置-1值,系统将会播放到资源末尾。| 185e41f4b71Sopenharmony_ci| mode | [SeekMode](js-apis-media.md#seekmode8) | 否 | 支持SeekMode.SEEK_PREV_SYNC和SeekMode.SEEK_CLOSEST, <br/>默认值: SeekMode.SEEK_PREV_SYNC。| 186e41f4b71Sopenharmony_ci 187e41f4b71Sopenharmony_ci**错误码:** 188e41f4b71Sopenharmony_ci 189e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 190e41f4b71Sopenharmony_ci 191e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 192e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 193e41f4b71Sopenharmony_ci| 202 | Called from Non-System applications. Return by promise. | 194e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. | 195e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 196e41f4b71Sopenharmony_ci 197e41f4b71Sopenharmony_ci**示例:** 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci```ts 200e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 201e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 202e41f4b71Sopenharmony_ci 203e41f4b71Sopenharmony_ciavPlayer.setPlaybackRange(0, 6000, media.SeekMode.SEEK_CLOSEST).then(() => { 204e41f4b71Sopenharmony_ci console.info('Succeeded setPlaybackRange'); 205e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 206e41f4b71Sopenharmony_ci console.error('Failed to setPlaybackRange' + err.message); 207e41f4b71Sopenharmony_ci}); 208e41f4b71Sopenharmony_ci``` 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci## AVMetadataExtractor<sup>11+</sup> 211e41f4b71Sopenharmony_ci> **说明:** 212e41f4b71Sopenharmony_ci> 元数据获取类,用于从媒体资源中获取元数据。在调用AVMetadataExtractor的方法前,需要先通过[createAVMetadataExtractor()](js-apis-media.md#mediacreateavmetadataextractor11)构建一个AVMetadataExtractor实例。 213e41f4b71Sopenharmony_ci 214e41f4b71Sopenharmony_ci### getTimeByFrameIndex<sup>12+</sup> 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_cigetTimeByFrameIndex(index: number): Promise\<number> 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci获取目标视频帧号对应的视频时间戳。仅支持MP4视频文件。 219e41f4b71Sopenharmony_ci 220e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 223e41f4b71Sopenharmony_ci 224e41f4b71Sopenharmony_ci**参数:** 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 227e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------- | 228e41f4b71Sopenharmony_ci| index | number | 是 | 视频帧号。 | 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci**返回值:** 231e41f4b71Sopenharmony_ci 232e41f4b71Sopenharmony_ci| 类型 | 说明 | 233e41f4b71Sopenharmony_ci| ---------------- | ----------------------------------- | 234e41f4b71Sopenharmony_ci| Promise\<number> | 时间戳的Promise返回值。单位是微秒。 | 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ci**错误码:** 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 241e41f4b71Sopenharmony_ci| -------- | ---------------------------------------------- | 242e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. | 243e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by promise. | 244e41f4b71Sopenharmony_ci| 5400106 | Unsupported format. Returned by promise. | 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ci**示例:** 247e41f4b71Sopenharmony_ci 248e41f4b71Sopenharmony_ci```ts 249e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 250e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ciavMetadataExtractor.getTimeByFrameIndex(0).then((timeUs: number) => { 253e41f4b71Sopenharmony_ci console.info(`Succeeded getTimeByFrameIndex timeUs: ${timeUs}`); 254e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 255e41f4b71Sopenharmony_ci console.error(`Failed to getTimeByFrameIndex ${err.message}`); 256e41f4b71Sopenharmony_ci}) 257e41f4b71Sopenharmony_ci``` 258e41f4b71Sopenharmony_ci 259e41f4b71Sopenharmony_ci### getFrameIndexByTime<sup>12+</sup> 260e41f4b71Sopenharmony_ci 261e41f4b71Sopenharmony_cigetFrameIndexByTime(timeUs: number): Promise\<number> 262e41f4b71Sopenharmony_ci 263e41f4b71Sopenharmony_ci获取目标视频时间戳对应的视频帧号。仅支持MP4视频文件。 264e41f4b71Sopenharmony_ci 265e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 266e41f4b71Sopenharmony_ci 267e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 268e41f4b71Sopenharmony_ci 269e41f4b71Sopenharmony_ci**参数:** 270e41f4b71Sopenharmony_ci 271e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 272e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------ | 273e41f4b71Sopenharmony_ci| timeUs | number | 是 | 视频时间戳,单位:微秒。 | 274e41f4b71Sopenharmony_ci 275e41f4b71Sopenharmony_ci**返回值:** 276e41f4b71Sopenharmony_ci 277e41f4b71Sopenharmony_ci| 类型 | 说明 | 278e41f4b71Sopenharmony_ci| ---------------- | ------------------------- | 279e41f4b71Sopenharmony_ci| Promise\<number> | 视频帧号的Promise返回值。 | 280e41f4b71Sopenharmony_ci 281e41f4b71Sopenharmony_ci**错误码:** 282e41f4b71Sopenharmony_ci 283e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 284e41f4b71Sopenharmony_ci 285e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 286e41f4b71Sopenharmony_ci| -------- | ---------------------------------------------- | 287e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. | 288e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Returned by promise. | 289e41f4b71Sopenharmony_ci| 5400106 | Unsupported format. Returned by promise. | 290e41f4b71Sopenharmony_ci 291e41f4b71Sopenharmony_ci**示例:** 292e41f4b71Sopenharmony_ci 293e41f4b71Sopenharmony_ci```ts 294e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'; 295e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 296e41f4b71Sopenharmony_ci 297e41f4b71Sopenharmony_ciavMetadataExtractor.getFrameIndexByTime(0).then((index: number) => { 298e41f4b71Sopenharmony_ci console.info(`Succeeded getFrameIndexByTime index: ${index}`); 299e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 300e41f4b71Sopenharmony_ci console.error(`Failed to getFrameIndexByTime ${err.message}`); 301e41f4b71Sopenharmony_ci}) 302e41f4b71Sopenharmony_ci``` 303e41f4b71Sopenharmony_ci 304e41f4b71Sopenharmony_ci## AVRecorder<sup>9+</sup> 305e41f4b71Sopenharmony_ci 306e41f4b71Sopenharmony_ci音视频录制管理类,用于音视频媒体录制。在调用AVRecorder的方法前,需要先通过[createAVRecorder()](js-apis-media.md#mediacreateavrecorder9)构建一个AVRecorder实例。 307e41f4b71Sopenharmony_ci 308e41f4b71Sopenharmony_ci> **说明:** 309e41f4b71Sopenharmony_ci> 310e41f4b71Sopenharmony_ci> 使用相机进行视频录制时,需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。 311e41f4b71Sopenharmony_ci 312e41f4b71Sopenharmony_ci### isWatermarkSupported<sup>12+</sup> 313e41f4b71Sopenharmony_ci 314e41f4b71Sopenharmony_ciisWatermarkSupported(): Promise\<boolean> 315e41f4b71Sopenharmony_ci 316e41f4b71Sopenharmony_ci检查当前设备录制是否支持硬件数字水印能力。通过Promise获取返回值。 317e41f4b71Sopenharmony_ci 318e41f4b71Sopenharmony_ci可在[prepare()](js-apis-media.md#prepare9-3)、[start()](js-apis-media.md#start9)、[paused()](js-apis-media.md#pause9)事件成功触发后调用。 319e41f4b71Sopenharmony_ci 320e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 321e41f4b71Sopenharmony_ci 322e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 323e41f4b71Sopenharmony_ci 324e41f4b71Sopenharmony_ci**返回值:** 325e41f4b71Sopenharmony_ci 326e41f4b71Sopenharmony_ci| 类型 | 说明 | 327e41f4b71Sopenharmony_ci| ---------------- | -------------------------------- | 328e41f4b71Sopenharmony_ci| Promise\<boolean> | 获取是否支持水印的Promise返回值。 | 329e41f4b71Sopenharmony_ci 330e41f4b71Sopenharmony_ci**示例:** 331e41f4b71Sopenharmony_ci 332e41f4b71Sopenharmony_ci```ts 333e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 334e41f4b71Sopenharmony_ci 335e41f4b71Sopenharmony_ciavRecorder.isWatermarkSupported().then((isWatermarkSupported: boolean) => { 336e41f4b71Sopenharmony_ci console.info(`Succeeded in get, isWatermarkSupported: ${isWatermarkSupported}`); 337e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 338e41f4b71Sopenharmony_ci console.error(`Failed to get and catch error is ${error.message}`); 339e41f4b71Sopenharmony_ci}); 340e41f4b71Sopenharmony_ci``` 341e41f4b71Sopenharmony_ci 342e41f4b71Sopenharmony_ci### setWatermark<sup>12+</sup> 343e41f4b71Sopenharmony_ci 344e41f4b71Sopenharmony_cisetWatermark(watermark: image.PixelMap, config: WatermarkConfig): Promise\<void> 345e41f4b71Sopenharmony_ci 346e41f4b71Sopenharmony_ci给AVRecorder设置水印图像。通过Promise获取返回值。 347e41f4b71Sopenharmony_ci 348e41f4b71Sopenharmony_ci当且仅当[prepare()](js-apis-media.md#prepare9-3)事件成功触发后,且在[start()](js-apis-media.md#start9)之前,才能调用setWatermark方法。 349e41f4b71Sopenharmony_ci 350e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 351e41f4b71Sopenharmony_ci 352e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 353e41f4b71Sopenharmony_ci 354e41f4b71Sopenharmony_ci**参数:** 355e41f4b71Sopenharmony_ci 356e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 357e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | --------------------------- | 358e41f4b71Sopenharmony_ci| watermark | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是 | 图像PixelMap数据。<br>当前支持规格:<br>-当前仅支持pixelformat为RGBA8888。<br>-原图像为8K时->水印图像限制范围3072x288,原图像为4K时->水印图像限制范围1536x144。 | 359e41f4b71Sopenharmony_ci| config | [WatermarkConfig](#watermarkconfig12) | 是 | 水印的相关配置参数。 | 360e41f4b71Sopenharmony_ci 361e41f4b71Sopenharmony_ci**返回值:** 362e41f4b71Sopenharmony_ci 363e41f4b71Sopenharmony_ci| 类型 | 说明 | 364e41f4b71Sopenharmony_ci| ---------------- | -------------------------------- | 365e41f4b71Sopenharmony_ci| Promise\<void> | 异步返回函数执行结果。 | 366e41f4b71Sopenharmony_ci 367e41f4b71Sopenharmony_ci**错误码:** 368e41f4b71Sopenharmony_ci 369e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 370e41f4b71Sopenharmony_ci 371e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 372e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | 373e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. | 374e41f4b71Sopenharmony_ci| 801 | Capability not supported. Return by promise. | 375e41f4b71Sopenharmony_ci 376e41f4b71Sopenharmony_ci**示例:** 377e41f4b71Sopenharmony_ci 378e41f4b71Sopenharmony_ci```ts 379e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 380e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit'; 381e41f4b71Sopenharmony_ci 382e41f4b71Sopenharmony_cilet watermark: image.PixelMap|undefined = undefined; // need data 383e41f4b71Sopenharmony_cilet watermarkConfig: media.WatermarkConfig = { top: 100, left: 100 } 384e41f4b71Sopenharmony_ci 385e41f4b71Sopenharmony_ciavRecorder.setWatermark(watermark, watermarkConfig).then(() => { 386e41f4b71Sopenharmony_ci console.info('Succeeded in setWatermark'); 387e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => { 388e41f4b71Sopenharmony_ci console.error(`Failed to setWatermark and catch error is ${error.message}`); 389e41f4b71Sopenharmony_ci}); 390e41f4b71Sopenharmony_ci``` 391e41f4b71Sopenharmony_ci 392e41f4b71Sopenharmony_ci## VideoRecorder<sup>9+</sup> 393e41f4b71Sopenharmony_ci 394e41f4b71Sopenharmony_ci> **说明:** 395e41f4b71Sopenharmony_ci> AVRecorder<sup>9+</sup>发布后,VideoRecorder停止维护,建议使用[AVRecorder](js-apis-media.md#avrecorder9)替代。 396e41f4b71Sopenharmony_ci 397e41f4b71Sopenharmony_ci视频录制管理类,用于录制视频媒体。在调用VideoRecorder的方法前,需要先通过[createVideoRecorder()](#mediacreatevideorecorder9)构建一个[VideoRecorder](#videorecorder9)实例。 398e41f4b71Sopenharmony_ci 399e41f4b71Sopenharmony_ci### 属性 400e41f4b71Sopenharmony_ci 401e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 402e41f4b71Sopenharmony_ci 403e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 404e41f4b71Sopenharmony_ci 405e41f4b71Sopenharmony_ci| 名称 | 类型 | 可读 | 可写 | 说明 | 406e41f4b71Sopenharmony_ci| ------------------ | -------------------------------------- | ---- | ---- | ---------------- | 407e41f4b71Sopenharmony_ci| state<sup>9+</sup> | [VideoRecordState](#videorecordstate9) | 是 | 否 | 视频录制的状态。 | 408e41f4b71Sopenharmony_ci 409e41f4b71Sopenharmony_ci### prepare<sup>9+</sup> 410e41f4b71Sopenharmony_ci 411e41f4b71Sopenharmony_ciprepare(config: VideoRecorderConfig, callback: AsyncCallback\<void>): void 412e41f4b71Sopenharmony_ci 413e41f4b71Sopenharmony_ci异步方式进行视频录制的参数设置。通过注册回调函数获取返回值。 414e41f4b71Sopenharmony_ci 415e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.MICROPHONE 416e41f4b71Sopenharmony_ci 417e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 418e41f4b71Sopenharmony_ci 419e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 420e41f4b71Sopenharmony_ci 421e41f4b71Sopenharmony_ci**参数:** 422e41f4b71Sopenharmony_ci 423e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 424e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- | 425e41f4b71Sopenharmony_ci| config | [VideoRecorderConfig](#videorecorderconfig9) | 是 | 配置视频录制的相关参数。 | 426e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 异步视频录制prepare方法的回调方法。 | 427e41f4b71Sopenharmony_ci 428e41f4b71Sopenharmony_ci**错误码:** 429e41f4b71Sopenharmony_ci 430e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 431e41f4b71Sopenharmony_ci 432e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 433e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 434e41f4b71Sopenharmony_ci| 201 | Permission denied. Return by callback. | 435e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 436e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 437e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 438e41f4b71Sopenharmony_ci 439e41f4b71Sopenharmony_ci**示例:** 440e41f4b71Sopenharmony_ci 441e41f4b71Sopenharmony_ci```ts 442e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 443e41f4b71Sopenharmony_ci 444e41f4b71Sopenharmony_ci// 配置参数以实际硬件设备支持的范围为准 445e41f4b71Sopenharmony_cilet videoProfile: media.VideoRecorderProfile = { 446e41f4b71Sopenharmony_ci audioBitrate : 48000, 447e41f4b71Sopenharmony_ci audioChannels : 2, 448e41f4b71Sopenharmony_ci audioCodec : media.CodecMimeType.AUDIO_AAC, 449e41f4b71Sopenharmony_ci audioSampleRate : 48000, 450e41f4b71Sopenharmony_ci fileFormat : media.ContainerFormatType.CFT_MPEG_4, 451e41f4b71Sopenharmony_ci videoBitrate : 2000000, 452e41f4b71Sopenharmony_ci videoCodec : media.CodecMimeType.VIDEO_AVC, 453e41f4b71Sopenharmony_ci videoFrameWidth : 640, 454e41f4b71Sopenharmony_ci videoFrameHeight : 480, 455e41f4b71Sopenharmony_ci videoFrameRate : 30 456e41f4b71Sopenharmony_ci} 457e41f4b71Sopenharmony_ci 458e41f4b71Sopenharmony_cilet videoConfig: media.VideoRecorderConfig = { 459e41f4b71Sopenharmony_ci audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 460e41f4b71Sopenharmony_ci videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 461e41f4b71Sopenharmony_ci profile : videoProfile, 462e41f4b71Sopenharmony_ci url : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限 463e41f4b71Sopenharmony_ci rotation : 0, 464e41f4b71Sopenharmony_ci location : { latitude : 30, longitude : 130 } 465e41f4b71Sopenharmony_ci} 466e41f4b71Sopenharmony_ci 467e41f4b71Sopenharmony_ci// asyncallback 468e41f4b71Sopenharmony_civideoRecorder.prepare(videoConfig, (err: BusinessError) => { 469e41f4b71Sopenharmony_ci if (err == null) { 470e41f4b71Sopenharmony_ci console.info('prepare success'); 471e41f4b71Sopenharmony_ci } else { 472e41f4b71Sopenharmony_ci console.error('prepare failed and error is ' + err.message); 473e41f4b71Sopenharmony_ci } 474e41f4b71Sopenharmony_ci}) 475e41f4b71Sopenharmony_ci``` 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci### prepare<sup>9+</sup> 478e41f4b71Sopenharmony_ci 479e41f4b71Sopenharmony_ciprepare(config: VideoRecorderConfig): Promise\<void> 480e41f4b71Sopenharmony_ci 481e41f4b71Sopenharmony_ci异步方式进行视频录制的参数设置。通过Promise获取返回值。 482e41f4b71Sopenharmony_ci 483e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.MICROPHONE 484e41f4b71Sopenharmony_ci 485e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 486e41f4b71Sopenharmony_ci 487e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 488e41f4b71Sopenharmony_ci 489e41f4b71Sopenharmony_ci**参数:** 490e41f4b71Sopenharmony_ci 491e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 492e41f4b71Sopenharmony_ci| ------ | -------------------------------------------- | ---- | ------------------------ | 493e41f4b71Sopenharmony_ci| config | [VideoRecorderConfig](#videorecorderconfig9) | 是 | 配置视频录制的相关参数。 | 494e41f4b71Sopenharmony_ci 495e41f4b71Sopenharmony_ci**返回值:** 496e41f4b71Sopenharmony_ci 497e41f4b71Sopenharmony_ci| 类型 | 说明 | 498e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- | 499e41f4b71Sopenharmony_ci| Promise\<void> | 异步视频录制prepare方法的Promise返回值。 | 500e41f4b71Sopenharmony_ci 501e41f4b71Sopenharmony_ci**错误码:** 502e41f4b71Sopenharmony_ci 503e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 504e41f4b71Sopenharmony_ci 505e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 506e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 507e41f4b71Sopenharmony_ci| 201 | Permission denied. Return by promise. | 508e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 509e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 510e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 511e41f4b71Sopenharmony_ci 512e41f4b71Sopenharmony_ci**示例:** 513e41f4b71Sopenharmony_ci 514e41f4b71Sopenharmony_ci```ts 515e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 516e41f4b71Sopenharmony_ci 517e41f4b71Sopenharmony_ci// 配置参数以实际硬件设备支持的范围为准 518e41f4b71Sopenharmony_cilet videoProfile: media.VideoRecorderProfile = { 519e41f4b71Sopenharmony_ci audioBitrate : 48000, 520e41f4b71Sopenharmony_ci audioChannels : 2, 521e41f4b71Sopenharmony_ci audioCodec : media.CodecMimeType.AUDIO_AAC, 522e41f4b71Sopenharmony_ci audioSampleRate : 48000, 523e41f4b71Sopenharmony_ci fileFormat : media.ContainerFormatType.CFT_MPEG_4, 524e41f4b71Sopenharmony_ci videoBitrate : 2000000, 525e41f4b71Sopenharmony_ci videoCodec : media.CodecMimeType.VIDEO_AVC, 526e41f4b71Sopenharmony_ci videoFrameWidth : 640, 527e41f4b71Sopenharmony_ci videoFrameHeight : 480, 528e41f4b71Sopenharmony_ci videoFrameRate : 30 529e41f4b71Sopenharmony_ci} 530e41f4b71Sopenharmony_ci 531e41f4b71Sopenharmony_cilet videoConfig: media.VideoRecorderConfig = { 532e41f4b71Sopenharmony_ci audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 533e41f4b71Sopenharmony_ci videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 534e41f4b71Sopenharmony_ci profile : videoProfile, 535e41f4b71Sopenharmony_ci url : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限 536e41f4b71Sopenharmony_ci rotation : 0, 537e41f4b71Sopenharmony_ci location : { latitude : 30, longitude : 130 } 538e41f4b71Sopenharmony_ci} 539e41f4b71Sopenharmony_ci 540e41f4b71Sopenharmony_ci// promise 541e41f4b71Sopenharmony_civideoRecorder.prepare(videoConfig).then(() => { 542e41f4b71Sopenharmony_ci console.info('prepare success'); 543e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 544e41f4b71Sopenharmony_ci console.error('prepare failed and catch error is ' + err.message); 545e41f4b71Sopenharmony_ci}); 546e41f4b71Sopenharmony_ci``` 547e41f4b71Sopenharmony_ci 548e41f4b71Sopenharmony_ci### getInputSurface<sup>9+</sup> 549e41f4b71Sopenharmony_ci 550e41f4b71Sopenharmony_cigetInputSurface(callback: AsyncCallback\<string>): void 551e41f4b71Sopenharmony_ci 552e41f4b71Sopenharmony_ci异步方式获得录制需要的surface。通过注册回调函数获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的数据。 553e41f4b71Sopenharmony_ci 554e41f4b71Sopenharmony_ci应当注意,填入的视频数据需要携带时间戳(单位ns),buffersize。时间戳的起始时间请以系统启动时间为基准。 555e41f4b71Sopenharmony_ci 556e41f4b71Sopenharmony_ci只能在[prepare()](#prepare9)接口调用后调用。 557e41f4b71Sopenharmony_ci 558e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 559e41f4b71Sopenharmony_ci 560e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 561e41f4b71Sopenharmony_ci 562e41f4b71Sopenharmony_ci**参数:** 563e41f4b71Sopenharmony_ci 564e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 565e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | --------------------------- | 566e41f4b71Sopenharmony_ci| callback | AsyncCallback\<string> | 是 | 异步获得surface的回调方法。 | 567e41f4b71Sopenharmony_ci 568e41f4b71Sopenharmony_ci**错误码:** 569e41f4b71Sopenharmony_ci 570e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 571e41f4b71Sopenharmony_ci 572e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 573e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 574e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 575e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by callback. | 576e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 577e41f4b71Sopenharmony_ci 578e41f4b71Sopenharmony_ci**示例:** 579e41f4b71Sopenharmony_ci 580e41f4b71Sopenharmony_ci```ts 581e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 582e41f4b71Sopenharmony_ci 583e41f4b71Sopenharmony_ci// asyncallback 584e41f4b71Sopenharmony_cilet surfaceID: string; // 传递给外界的surfaceID 585e41f4b71Sopenharmony_civideoRecorder.getInputSurface((err: BusinessError, surfaceId: string) => { 586e41f4b71Sopenharmony_ci if (err == null) { 587e41f4b71Sopenharmony_ci console.info('getInputSurface success'); 588e41f4b71Sopenharmony_ci surfaceID = surfaceId; 589e41f4b71Sopenharmony_ci } else { 590e41f4b71Sopenharmony_ci console.error('getInputSurface failed and error is ' + err.message); 591e41f4b71Sopenharmony_ci } 592e41f4b71Sopenharmony_ci}); 593e41f4b71Sopenharmony_ci``` 594e41f4b71Sopenharmony_ci 595e41f4b71Sopenharmony_ci### getInputSurface<sup>9+</sup> 596e41f4b71Sopenharmony_ci 597e41f4b71Sopenharmony_cigetInputSurface(): Promise\<string>; 598e41f4b71Sopenharmony_ci 599e41f4b71Sopenharmony_ci 异步方式获得录制需要的surface。通过Promise获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的数据。 600e41f4b71Sopenharmony_ci 601e41f4b71Sopenharmony_ci应当注意,填入的视频数据需要携带时间戳(单位ns),buffersize。时间戳的起始时间请以系统启动时间为基准。 602e41f4b71Sopenharmony_ci 603e41f4b71Sopenharmony_ci只能在[prepare()](#prepare9-1)接口调用后调用。 604e41f4b71Sopenharmony_ci 605e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 606e41f4b71Sopenharmony_ci 607e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 608e41f4b71Sopenharmony_ci 609e41f4b71Sopenharmony_ci**返回值:** 610e41f4b71Sopenharmony_ci 611e41f4b71Sopenharmony_ci| 类型 | 说明 | 612e41f4b71Sopenharmony_ci| ---------------- | -------------------------------- | 613e41f4b71Sopenharmony_ci| Promise\<string> | 异步获得surface的Promise返回值。 | 614e41f4b71Sopenharmony_ci 615e41f4b71Sopenharmony_ci**错误码:** 616e41f4b71Sopenharmony_ci 617e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 618e41f4b71Sopenharmony_ci 619e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 620e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 621e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 622e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by promise. | 623e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 624e41f4b71Sopenharmony_ci 625e41f4b71Sopenharmony_ci**示例:** 626e41f4b71Sopenharmony_ci 627e41f4b71Sopenharmony_ci```ts 628e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 629e41f4b71Sopenharmony_ci 630e41f4b71Sopenharmony_ci// promise 631e41f4b71Sopenharmony_cilet surfaceID: string; // 传递给外界的surfaceID 632e41f4b71Sopenharmony_civideoRecorder.getInputSurface().then((surfaceId: string) => { 633e41f4b71Sopenharmony_ci console.info('getInputSurface success'); 634e41f4b71Sopenharmony_ci surfaceID = surfaceId; 635e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 636e41f4b71Sopenharmony_ci console.error('getInputSurface failed and catch error is ' + err.message); 637e41f4b71Sopenharmony_ci}); 638e41f4b71Sopenharmony_ci``` 639e41f4b71Sopenharmony_ci 640e41f4b71Sopenharmony_ci### start<sup>9+</sup> 641e41f4b71Sopenharmony_ci 642e41f4b71Sopenharmony_cistart(callback: AsyncCallback\<void>): void 643e41f4b71Sopenharmony_ci 644e41f4b71Sopenharmony_ci异步方式开始视频录制。通过注册回调函数获取返回值。 645e41f4b71Sopenharmony_ci 646e41f4b71Sopenharmony_ci在[prepare()](#prepare9)和[getInputSurface()](#getinputsurface9)后调用,需要依赖数据源先给surface传递数据。 647e41f4b71Sopenharmony_ci 648e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 649e41f4b71Sopenharmony_ci 650e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 651e41f4b71Sopenharmony_ci 652e41f4b71Sopenharmony_ci**参数:** 653e41f4b71Sopenharmony_ci 654e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 655e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- | 656e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 异步开始视频录制的回调方法。 | 657e41f4b71Sopenharmony_ci 658e41f4b71Sopenharmony_ci**错误码:** 659e41f4b71Sopenharmony_ci 660e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 661e41f4b71Sopenharmony_ci 662e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 663e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 664e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 665e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by callback. | 666e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 667e41f4b71Sopenharmony_ci 668e41f4b71Sopenharmony_ci**示例:** 669e41f4b71Sopenharmony_ci 670e41f4b71Sopenharmony_ci```ts 671e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 672e41f4b71Sopenharmony_ci 673e41f4b71Sopenharmony_ci// asyncallback 674e41f4b71Sopenharmony_civideoRecorder.start((err: BusinessError) => { 675e41f4b71Sopenharmony_ci if (err == null) { 676e41f4b71Sopenharmony_ci console.info('start videorecorder success'); 677e41f4b71Sopenharmony_ci } else { 678e41f4b71Sopenharmony_ci console.error('start videorecorder failed and error is ' + err.message); 679e41f4b71Sopenharmony_ci } 680e41f4b71Sopenharmony_ci}); 681e41f4b71Sopenharmony_ci``` 682e41f4b71Sopenharmony_ci 683e41f4b71Sopenharmony_ci### start<sup>9+</sup> 684e41f4b71Sopenharmony_ci 685e41f4b71Sopenharmony_cistart(): Promise\<void> 686e41f4b71Sopenharmony_ci 687e41f4b71Sopenharmony_ci异步方式开始视频录制。通过Promise获取返回值。 688e41f4b71Sopenharmony_ci 689e41f4b71Sopenharmony_ci在[prepare()](#prepare9-1)和[getInputSurface()](#getinputsurface9-1)后调用,需要依赖数据源先给surface传递数据。 690e41f4b71Sopenharmony_ci 691e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 692e41f4b71Sopenharmony_ci 693e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 694e41f4b71Sopenharmony_ci 695e41f4b71Sopenharmony_ci**返回值:** 696e41f4b71Sopenharmony_ci 697e41f4b71Sopenharmony_ci| 类型 | 说明 | 698e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 699e41f4b71Sopenharmony_ci| Promise\<void> | 异步开始视频录制方法的Promise返回值。 | 700e41f4b71Sopenharmony_ci 701e41f4b71Sopenharmony_ci**错误码:** 702e41f4b71Sopenharmony_ci 703e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 704e41f4b71Sopenharmony_ci 705e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 706e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 707e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 708e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by promise. | 709e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 710e41f4b71Sopenharmony_ci 711e41f4b71Sopenharmony_ci**示例:** 712e41f4b71Sopenharmony_ci 713e41f4b71Sopenharmony_ci```ts 714e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 715e41f4b71Sopenharmony_ci 716e41f4b71Sopenharmony_ci// promise 717e41f4b71Sopenharmony_civideoRecorder.start().then(() => { 718e41f4b71Sopenharmony_ci console.info('start videorecorder success'); 719e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 720e41f4b71Sopenharmony_ci console.error('start videorecorder failed and catch error is ' + err.message); 721e41f4b71Sopenharmony_ci}); 722e41f4b71Sopenharmony_ci``` 723e41f4b71Sopenharmony_ci 724e41f4b71Sopenharmony_ci### pause<sup>9+</sup> 725e41f4b71Sopenharmony_ci 726e41f4b71Sopenharmony_cipause(callback: AsyncCallback\<void>): void 727e41f4b71Sopenharmony_ci 728e41f4b71Sopenharmony_ci异步方式暂停视频录制。通过注册回调函数获取返回值。 729e41f4b71Sopenharmony_ci 730e41f4b71Sopenharmony_ci在[start()](#start9)后调用。可以通过调用[resume()](#resume9)接口来恢复录制。 731e41f4b71Sopenharmony_ci 732e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 733e41f4b71Sopenharmony_ci 734e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 735e41f4b71Sopenharmony_ci 736e41f4b71Sopenharmony_ci**参数:** 737e41f4b71Sopenharmony_ci 738e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 739e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- | 740e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 异步暂停视频录制的回调方法。 | 741e41f4b71Sopenharmony_ci 742e41f4b71Sopenharmony_ci**错误码:** 743e41f4b71Sopenharmony_ci 744e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 745e41f4b71Sopenharmony_ci 746e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 747e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 748e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 749e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by callback. | 750e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 751e41f4b71Sopenharmony_ci 752e41f4b71Sopenharmony_ci**示例:** 753e41f4b71Sopenharmony_ci 754e41f4b71Sopenharmony_ci```ts 755e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 756e41f4b71Sopenharmony_ci 757e41f4b71Sopenharmony_ci// asyncallback 758e41f4b71Sopenharmony_civideoRecorder.pause((err: BusinessError) => { 759e41f4b71Sopenharmony_ci if (err == null) { 760e41f4b71Sopenharmony_ci console.info('pause videorecorder success'); 761e41f4b71Sopenharmony_ci } else { 762e41f4b71Sopenharmony_ci console.error('pause videorecorder failed and error is ' + err.message); 763e41f4b71Sopenharmony_ci } 764e41f4b71Sopenharmony_ci}); 765e41f4b71Sopenharmony_ci``` 766e41f4b71Sopenharmony_ci 767e41f4b71Sopenharmony_ci### pause<sup>9+</sup> 768e41f4b71Sopenharmony_ci 769e41f4b71Sopenharmony_cipause(): Promise\<void> 770e41f4b71Sopenharmony_ci 771e41f4b71Sopenharmony_ci异步方式暂停视频录制。通过Promise获取返回值。 772e41f4b71Sopenharmony_ci 773e41f4b71Sopenharmony_ci在[start()](#start9-1)后调用。可以通过调用[resume()](#resume9-1)接口来恢复录制。 774e41f4b71Sopenharmony_ci 775e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 776e41f4b71Sopenharmony_ci 777e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 778e41f4b71Sopenharmony_ci 779e41f4b71Sopenharmony_ci**返回值:** 780e41f4b71Sopenharmony_ci 781e41f4b71Sopenharmony_ci| 类型 | 说明 | 782e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 783e41f4b71Sopenharmony_ci| Promise\<void> | 异步暂停视频录制方法的Promise返回值。 | 784e41f4b71Sopenharmony_ci 785e41f4b71Sopenharmony_ci**错误码:** 786e41f4b71Sopenharmony_ci 787e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 788e41f4b71Sopenharmony_ci 789e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 790e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 791e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 792e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by promise. | 793e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 794e41f4b71Sopenharmony_ci 795e41f4b71Sopenharmony_ci**示例:** 796e41f4b71Sopenharmony_ci 797e41f4b71Sopenharmony_ci```ts 798e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 799e41f4b71Sopenharmony_ci 800e41f4b71Sopenharmony_ci// promise 801e41f4b71Sopenharmony_civideoRecorder.pause().then(() => { 802e41f4b71Sopenharmony_ci console.info('pause videorecorder success'); 803e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 804e41f4b71Sopenharmony_ci console.error('pause videorecorder failed and catch error is ' + err.message); 805e41f4b71Sopenharmony_ci}); 806e41f4b71Sopenharmony_ci``` 807e41f4b71Sopenharmony_ci 808e41f4b71Sopenharmony_ci### resume<sup>9+</sup> 809e41f4b71Sopenharmony_ci 810e41f4b71Sopenharmony_ciresume(callback: AsyncCallback\<void>): void 811e41f4b71Sopenharmony_ci 812e41f4b71Sopenharmony_ci异步方式恢复视频录制。通过注册回调函数获取返回值。 813e41f4b71Sopenharmony_ci 814e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 815e41f4b71Sopenharmony_ci 816e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 817e41f4b71Sopenharmony_ci 818e41f4b71Sopenharmony_ci**参数:** 819e41f4b71Sopenharmony_ci 820e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 821e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- | 822e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 异步恢复视频录制的回调方法。 | 823e41f4b71Sopenharmony_ci 824e41f4b71Sopenharmony_ci**错误码:** 825e41f4b71Sopenharmony_ci 826e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 827e41f4b71Sopenharmony_ci 828e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 829e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 830e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 831e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by callback. | 832e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 833e41f4b71Sopenharmony_ci 834e41f4b71Sopenharmony_ci**示例:** 835e41f4b71Sopenharmony_ci 836e41f4b71Sopenharmony_ci```ts 837e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 838e41f4b71Sopenharmony_ci 839e41f4b71Sopenharmony_ci// asyncallback 840e41f4b71Sopenharmony_civideoRecorder.resume((err: BusinessError) => { 841e41f4b71Sopenharmony_ci if (err == null) { 842e41f4b71Sopenharmony_ci console.info('resume videorecorder success'); 843e41f4b71Sopenharmony_ci } else { 844e41f4b71Sopenharmony_ci console.error('resume videorecorder failed and error is ' + err.message); 845e41f4b71Sopenharmony_ci } 846e41f4b71Sopenharmony_ci}); 847e41f4b71Sopenharmony_ci``` 848e41f4b71Sopenharmony_ci 849e41f4b71Sopenharmony_ci### resume<sup>9+</sup> 850e41f4b71Sopenharmony_ci 851e41f4b71Sopenharmony_ciresume(): Promise\<void> 852e41f4b71Sopenharmony_ci 853e41f4b71Sopenharmony_ci异步方式恢复视频录制。通过Promise获取返回值。 854e41f4b71Sopenharmony_ci 855e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 856e41f4b71Sopenharmony_ci 857e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 858e41f4b71Sopenharmony_ci 859e41f4b71Sopenharmony_ci**返回值:** 860e41f4b71Sopenharmony_ci 861e41f4b71Sopenharmony_ci| 类型 | 说明 | 862e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 863e41f4b71Sopenharmony_ci| Promise\<void> | 异步恢复视频录制方法的Promise返回值。 | 864e41f4b71Sopenharmony_ci 865e41f4b71Sopenharmony_ci**错误码:** 866e41f4b71Sopenharmony_ci 867e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 868e41f4b71Sopenharmony_ci 869e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 870e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 871e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 872e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by promise. | 873e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 874e41f4b71Sopenharmony_ci 875e41f4b71Sopenharmony_ci**示例:** 876e41f4b71Sopenharmony_ci 877e41f4b71Sopenharmony_ci```ts 878e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 879e41f4b71Sopenharmony_ci 880e41f4b71Sopenharmony_ci// promise 881e41f4b71Sopenharmony_civideoRecorder.resume().then(() => { 882e41f4b71Sopenharmony_ci console.info('resume videorecorder success'); 883e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 884e41f4b71Sopenharmony_ci console.error('resume videorecorder failed and catch error is ' + err.message); 885e41f4b71Sopenharmony_ci}); 886e41f4b71Sopenharmony_ci``` 887e41f4b71Sopenharmony_ci 888e41f4b71Sopenharmony_ci### stop<sup>9+</sup> 889e41f4b71Sopenharmony_ci 890e41f4b71Sopenharmony_cistop(callback: AsyncCallback\<void>): void 891e41f4b71Sopenharmony_ci 892e41f4b71Sopenharmony_ci异步方式停止视频录制。通过注册回调函数获取返回值。 893e41f4b71Sopenharmony_ci 894e41f4b71Sopenharmony_ci需要重新调用[prepare()](#prepare9)和[getInputSurface()](#getinputsurface9)接口才能重新录制。 895e41f4b71Sopenharmony_ci 896e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 897e41f4b71Sopenharmony_ci 898e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 899e41f4b71Sopenharmony_ci 900e41f4b71Sopenharmony_ci**参数:** 901e41f4b71Sopenharmony_ci 902e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 903e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- | 904e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 异步停止视频录制的回调方法。 | 905e41f4b71Sopenharmony_ci 906e41f4b71Sopenharmony_ci**错误码:** 907e41f4b71Sopenharmony_ci 908e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 909e41f4b71Sopenharmony_ci 910e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 911e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | 912e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by callback. | 913e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by callback. | 914e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 915e41f4b71Sopenharmony_ci 916e41f4b71Sopenharmony_ci**示例:** 917e41f4b71Sopenharmony_ci 918e41f4b71Sopenharmony_ci```ts 919e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 920e41f4b71Sopenharmony_ci 921e41f4b71Sopenharmony_ci// asyncallback 922e41f4b71Sopenharmony_civideoRecorder.stop((err: BusinessError) => { 923e41f4b71Sopenharmony_ci if (err == null) { 924e41f4b71Sopenharmony_ci console.info('stop videorecorder success'); 925e41f4b71Sopenharmony_ci } else { 926e41f4b71Sopenharmony_ci console.error('stop videorecorder failed and error is ' + err.message); 927e41f4b71Sopenharmony_ci } 928e41f4b71Sopenharmony_ci}); 929e41f4b71Sopenharmony_ci``` 930e41f4b71Sopenharmony_ci 931e41f4b71Sopenharmony_ci### stop<sup>9+</sup> 932e41f4b71Sopenharmony_ci 933e41f4b71Sopenharmony_cistop(): Promise\<void> 934e41f4b71Sopenharmony_ci 935e41f4b71Sopenharmony_ci异步方式停止视频录制。通过Promise获取返回值。 936e41f4b71Sopenharmony_ci 937e41f4b71Sopenharmony_ci需要重新调用[prepare()](#prepare9-1)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。 938e41f4b71Sopenharmony_ci 939e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 940e41f4b71Sopenharmony_ci 941e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 942e41f4b71Sopenharmony_ci 943e41f4b71Sopenharmony_ci**返回值:** 944e41f4b71Sopenharmony_ci 945e41f4b71Sopenharmony_ci| 类型 | 说明 | 946e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 947e41f4b71Sopenharmony_ci| Promise\<void> | 异步停止视频录制方法的Promise返回值。 | 948e41f4b71Sopenharmony_ci 949e41f4b71Sopenharmony_ci**错误码:** 950e41f4b71Sopenharmony_ci 951e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 952e41f4b71Sopenharmony_ci 953e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 954e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- | 955e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. | 956e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by promise. | 957e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 958e41f4b71Sopenharmony_ci 959e41f4b71Sopenharmony_ci**示例:** 960e41f4b71Sopenharmony_ci 961e41f4b71Sopenharmony_ci```ts 962e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 963e41f4b71Sopenharmony_ci 964e41f4b71Sopenharmony_ci// promise 965e41f4b71Sopenharmony_civideoRecorder.stop().then(() => { 966e41f4b71Sopenharmony_ci console.info('stop videorecorder success'); 967e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 968e41f4b71Sopenharmony_ci console.error('stop videorecorder failed and catch error is ' + err.message); 969e41f4b71Sopenharmony_ci}); 970e41f4b71Sopenharmony_ci``` 971e41f4b71Sopenharmony_ci 972e41f4b71Sopenharmony_ci### release<sup>9+</sup> 973e41f4b71Sopenharmony_ci 974e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void 975e41f4b71Sopenharmony_ci 976e41f4b71Sopenharmony_ci异步方式释放视频录制资源。通过注册回调函数获取返回值。 977e41f4b71Sopenharmony_ci 978e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 979e41f4b71Sopenharmony_ci 980e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 981e41f4b71Sopenharmony_ci 982e41f4b71Sopenharmony_ci**参数:** 983e41f4b71Sopenharmony_ci 984e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 985e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | -------------------------------- | 986e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 异步释放视频录制资源的回调方法。 | 987e41f4b71Sopenharmony_ci 988e41f4b71Sopenharmony_ci**错误码:** 989e41f4b71Sopenharmony_ci 990e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 991e41f4b71Sopenharmony_ci 992e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 993e41f4b71Sopenharmony_ci| -------- | --------------------------------- | 994e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 995e41f4b71Sopenharmony_ci 996e41f4b71Sopenharmony_ci**示例:** 997e41f4b71Sopenharmony_ci 998e41f4b71Sopenharmony_ci```ts 999e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1000e41f4b71Sopenharmony_ci 1001e41f4b71Sopenharmony_ci// asyncallback 1002e41f4b71Sopenharmony_civideoRecorder.release((err: BusinessError) => { 1003e41f4b71Sopenharmony_ci if (err == null) { 1004e41f4b71Sopenharmony_ci console.info('release videorecorder success'); 1005e41f4b71Sopenharmony_ci } else { 1006e41f4b71Sopenharmony_ci console.error('release videorecorder failed and error is ' + err.message); 1007e41f4b71Sopenharmony_ci } 1008e41f4b71Sopenharmony_ci}); 1009e41f4b71Sopenharmony_ci``` 1010e41f4b71Sopenharmony_ci 1011e41f4b71Sopenharmony_ci### release<sup>9+</sup> 1012e41f4b71Sopenharmony_ci 1013e41f4b71Sopenharmony_cirelease(): Promise\<void> 1014e41f4b71Sopenharmony_ci 1015e41f4b71Sopenharmony_ci异步方式释放视频录制资源。通过Promise获取返回值。 1016e41f4b71Sopenharmony_ci 1017e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1018e41f4b71Sopenharmony_ci 1019e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 1020e41f4b71Sopenharmony_ci 1021e41f4b71Sopenharmony_ci**返回值:** 1022e41f4b71Sopenharmony_ci 1023e41f4b71Sopenharmony_ci| 类型 | 说明 | 1024e41f4b71Sopenharmony_ci| -------------- | ----------------------------------------- | 1025e41f4b71Sopenharmony_ci| Promise\<void> | 异步释放视频录制资源方法的Promise返回值。 | 1026e41f4b71Sopenharmony_ci 1027e41f4b71Sopenharmony_ci**错误码:** 1028e41f4b71Sopenharmony_ci 1029e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1030e41f4b71Sopenharmony_ci 1031e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1032e41f4b71Sopenharmony_ci| -------- | --------------------------------- | 1033e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 1034e41f4b71Sopenharmony_ci 1035e41f4b71Sopenharmony_ci**示例:** 1036e41f4b71Sopenharmony_ci 1037e41f4b71Sopenharmony_ci```ts 1038e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1039e41f4b71Sopenharmony_ci 1040e41f4b71Sopenharmony_ci// promise 1041e41f4b71Sopenharmony_civideoRecorder.release().then(() => { 1042e41f4b71Sopenharmony_ci console.info('release videorecorder success'); 1043e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 1044e41f4b71Sopenharmony_ci console.error('release videorecorder failed and catch error is ' + err.message); 1045e41f4b71Sopenharmony_ci}); 1046e41f4b71Sopenharmony_ci``` 1047e41f4b71Sopenharmony_ci 1048e41f4b71Sopenharmony_ci### reset<sup>9+</sup> 1049e41f4b71Sopenharmony_ci 1050e41f4b71Sopenharmony_cireset(callback: AsyncCallback\<void>): void 1051e41f4b71Sopenharmony_ci 1052e41f4b71Sopenharmony_ci异步方式重置视频录制。通过注册回调函数获取返回值。 1053e41f4b71Sopenharmony_ci 1054e41f4b71Sopenharmony_ci需要重新调用[prepare()](#prepare9)和[getInputSurface()](#getinputsurface9)接口才能重新录制。 1055e41f4b71Sopenharmony_ci 1056e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1057e41f4b71Sopenharmony_ci 1058e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 1059e41f4b71Sopenharmony_ci 1060e41f4b71Sopenharmony_ci**参数:** 1061e41f4b71Sopenharmony_ci 1062e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1063e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- | 1064e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是 | 异步重置视频录制的回调方法。 | 1065e41f4b71Sopenharmony_ci 1066e41f4b71Sopenharmony_ci**错误码:** 1067e41f4b71Sopenharmony_ci 1068e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1069e41f4b71Sopenharmony_ci 1070e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1071e41f4b71Sopenharmony_ci| -------- | --------------------------------- | 1072e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by callback. | 1073e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 1074e41f4b71Sopenharmony_ci 1075e41f4b71Sopenharmony_ci**示例:** 1076e41f4b71Sopenharmony_ci 1077e41f4b71Sopenharmony_ci```ts 1078e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1079e41f4b71Sopenharmony_ci 1080e41f4b71Sopenharmony_ci// asyncallback 1081e41f4b71Sopenharmony_civideoRecorder.reset((err: BusinessError) => { 1082e41f4b71Sopenharmony_ci if (err == null) { 1083e41f4b71Sopenharmony_ci console.info('reset videorecorder success'); 1084e41f4b71Sopenharmony_ci } else { 1085e41f4b71Sopenharmony_ci console.error('reset videorecorder failed and error is ' + err.message); 1086e41f4b71Sopenharmony_ci } 1087e41f4b71Sopenharmony_ci}); 1088e41f4b71Sopenharmony_ci``` 1089e41f4b71Sopenharmony_ci 1090e41f4b71Sopenharmony_ci### reset<sup>9+</sup> 1091e41f4b71Sopenharmony_ci 1092e41f4b71Sopenharmony_cireset(): Promise\<void> 1093e41f4b71Sopenharmony_ci 1094e41f4b71Sopenharmony_ci异步方式重置视频录制。通过Promise获取返回值。 1095e41f4b71Sopenharmony_ci 1096e41f4b71Sopenharmony_ci需要重新调用[prepare()](#prepare9-1)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。 1097e41f4b71Sopenharmony_ci 1098e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1099e41f4b71Sopenharmony_ci 1100e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 1101e41f4b71Sopenharmony_ci 1102e41f4b71Sopenharmony_ci**返回值:** 1103e41f4b71Sopenharmony_ci 1104e41f4b71Sopenharmony_ci| 类型 | 说明 | 1105e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- | 1106e41f4b71Sopenharmony_ci| Promise\<void> | 异步重置视频录制方法的Promise返回值。 | 1107e41f4b71Sopenharmony_ci 1108e41f4b71Sopenharmony_ci**错误码:** 1109e41f4b71Sopenharmony_ci 1110e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1111e41f4b71Sopenharmony_ci 1112e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1113e41f4b71Sopenharmony_ci| -------- | -------------------------------- | 1114e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by promise. | 1115e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by promise. | 1116e41f4b71Sopenharmony_ci 1117e41f4b71Sopenharmony_ci**示例:** 1118e41f4b71Sopenharmony_ci 1119e41f4b71Sopenharmony_ci```ts 1120e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1121e41f4b71Sopenharmony_ci 1122e41f4b71Sopenharmony_ci// promise 1123e41f4b71Sopenharmony_civideoRecorder.reset().then(() => { 1124e41f4b71Sopenharmony_ci console.info('reset videorecorder success'); 1125e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => { 1126e41f4b71Sopenharmony_ci console.error('reset videorecorder failed and catch error is ' + err.message); 1127e41f4b71Sopenharmony_ci}); 1128e41f4b71Sopenharmony_ci``` 1129e41f4b71Sopenharmony_ci 1130e41f4b71Sopenharmony_ci### on('error')<sup>9+</sup> 1131e41f4b71Sopenharmony_ci 1132e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void 1133e41f4b71Sopenharmony_ci 1134e41f4b71Sopenharmony_ci开始订阅视频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。 1135e41f4b71Sopenharmony_ci 1136e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1137e41f4b71Sopenharmony_ci 1138e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 1139e41f4b71Sopenharmony_ci 1140e41f4b71Sopenharmony_ci**参数:** 1141e41f4b71Sopenharmony_ci 1142e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 1143e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ | 1144e41f4b71Sopenharmony_ci| type | string | 是 | 录制错误事件回调类型'error'。<br/>- 'error':视频录制过程中发生错误,触发该事件。 | 1145e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录制错误事件回调方法。 | 1146e41f4b71Sopenharmony_ci 1147e41f4b71Sopenharmony_ci**错误码:** 1148e41f4b71Sopenharmony_ci 1149e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 1150e41f4b71Sopenharmony_ci 1151e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 1152e41f4b71Sopenharmony_ci| -------- | --------------------------------- | 1153e41f4b71Sopenharmony_ci| 5400103 | I/O error. Return by callback. | 1154e41f4b71Sopenharmony_ci| 5400105 | Service died. Return by callback. | 1155e41f4b71Sopenharmony_ci 1156e41f4b71Sopenharmony_ci**示例:** 1157e41f4b71Sopenharmony_ci 1158e41f4b71Sopenharmony_ci```ts 1159e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1160e41f4b71Sopenharmony_ci 1161e41f4b71Sopenharmony_ci// 当获取videoRecordState接口出错时通过此订阅事件上报 1162e41f4b71Sopenharmony_civideoRecorder.on('error', (error: BusinessError) => { // 设置'error'事件回调 1163e41f4b71Sopenharmony_ci console.error(`audio error called, error: ${error}`); 1164e41f4b71Sopenharmony_ci}) 1165e41f4b71Sopenharmony_ci``` 1166e41f4b71Sopenharmony_ci 1167e41f4b71Sopenharmony_ci## VideoRecordState<sup>9+</sup> 1168e41f4b71Sopenharmony_ci 1169e41f4b71Sopenharmony_ci视频录制的状态机。可通过state属性获取当前状态。 1170e41f4b71Sopenharmony_ci 1171e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1172e41f4b71Sopenharmony_ci 1173e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 1174e41f4b71Sopenharmony_ci 1175e41f4b71Sopenharmony_ci| 名称 | 类型 | 说明 | 1176e41f4b71Sopenharmony_ci| -------- | ------ | ---------------------- | 1177e41f4b71Sopenharmony_ci| idle | string | 视频录制空闲。 | 1178e41f4b71Sopenharmony_ci| prepared | string | 视频录制参数设置完成。 | 1179e41f4b71Sopenharmony_ci| playing | string | 视频正在录制。 | 1180e41f4b71Sopenharmony_ci| paused | string | 视频暂停录制。 | 1181e41f4b71Sopenharmony_ci| stopped | string | 视频录制停止。 | 1182e41f4b71Sopenharmony_ci| error | string | 错误状态。 | 1183e41f4b71Sopenharmony_ci 1184e41f4b71Sopenharmony_ci## VideoRecorderConfig<sup>9+</sup> 1185e41f4b71Sopenharmony_ci 1186e41f4b71Sopenharmony_ci表示视频录制的参数设置。 1187e41f4b71Sopenharmony_ci 1188e41f4b71Sopenharmony_ci通过audioSourceType和videoSourceType区分纯视频录制和音视频录制(纯音频录制请使用[AVRecorder](js-apis-media.md#avrecorder9)或[AudioRecorder](js-apis-media.md#audiorecorderdeprecated))。纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。 1189e41f4b71Sopenharmony_ci 1190e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1191e41f4b71Sopenharmony_ci 1192e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 1193e41f4b71Sopenharmony_ci 1194e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 1195e41f4b71Sopenharmony_ci| --------------- | ---------------------------------------------- | ---- | ------------------------------------------------------------ | 1196e41f4b71Sopenharmony_ci| audioSourceType | [AudioSourceType](js-apis-media.md#audiosourcetype9) | 否 | 视频录制的音频源类型,选择音频录制时必填。 | 1197e41f4b71Sopenharmony_ci| videoSourceType | [VideoSourceType](js-apis-media.md#videosourcetype9) | 是 | 视频录制的视频源类型。 | 1198e41f4b71Sopenharmony_ci| profile | [VideoRecorderProfile](#videorecorderprofile9) | 是 | 视频录制的profile。 | 1199e41f4b71Sopenharmony_ci| rotation | number | 否 | 录制的视频旋转角度,仅支持0,90,180,270,默认值为0。 | 1200e41f4b71Sopenharmony_ci| location | [Location](js-apis-media.md#location) | 否 | 录制视频的地理位置,默认不记录地理位置信息。 | 1201e41f4b71Sopenharmony_ci| url | string | 是 | 视频输出URL:fd://xx (fd number)<br/> | 1202e41f4b71Sopenharmony_ci 1203e41f4b71Sopenharmony_ci## VideoRecorderProfile<sup>9+</sup> 1204e41f4b71Sopenharmony_ci 1205e41f4b71Sopenharmony_ci视频录制的配置文件。 1206e41f4b71Sopenharmony_ci 1207e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1208e41f4b71Sopenharmony_ci 1209e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 1210e41f4b71Sopenharmony_ci 1211e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 1212e41f4b71Sopenharmony_ci| ---------------- | -------------------------------------------- | ---- | ---------------- | 1213e41f4b71Sopenharmony_ci| audioBitrate | number | 否 | 音频编码比特率,选择音频录制时必填。 | 1214e41f4b71Sopenharmony_ci| audioChannels | number | 否 | 音频采集声道数,选择音频录制时必填。 | 1215e41f4b71Sopenharmony_ci| audioCodec | [CodecMimeType](js-apis-media.md#codecmimetype8) | 否 | 音频编码格式,选择音频录制时必填。 | 1216e41f4b71Sopenharmony_ci| audioSampleRate | number | 否 | 音频采样率,选择音频录制时必填。 | 1217e41f4b71Sopenharmony_ci| fileFormat | [ContainerFormatType](js-apis-media.md#containerformattype8) | 是 | 文件的容器格式。 | 1218e41f4b71Sopenharmony_ci| videoBitrate | number | 是 | 视频编码比特率。 | 1219e41f4b71Sopenharmony_ci| videoCodec | [CodecMimeType](js-apis-media.md#codecmimetype8) | 是 | 视频编码格式。 | 1220e41f4b71Sopenharmony_ci| videoFrameWidth | number | 是 | 录制视频帧的宽。 | 1221e41f4b71Sopenharmony_ci| videoFrameHeight | number | 是 | 录制视频帧的高。 | 1222e41f4b71Sopenharmony_ci| videoFrameRate | number | 是 | 录制视频帧率。 | 1223e41f4b71Sopenharmony_ci 1224e41f4b71Sopenharmony_ci## WatermarkConfig<sup>12+</sup> 1225e41f4b71Sopenharmony_ci 1226e41f4b71Sopenharmony_ci设置给AVRecorder的水印相关配置,该位置以画面的左上角为开始点。 1227e41f4b71Sopenharmony_ci 1228e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core 1229e41f4b71Sopenharmony_ci 1230e41f4b71Sopenharmony_ci**系统接口:** 该接口为系统接口 1231e41f4b71Sopenharmony_ci 1232e41f4b71Sopenharmony_ci| 名称 | 类型 | 必填 | 说明 | 1233e41f4b71Sopenharmony_ci| --------- | ------ | ---- | ---------------- | 1234e41f4b71Sopenharmony_ci| top | number | 是 | 显示位置,距离图像顶部的像素偏移量。 | 1235e41f4b71Sopenharmony_ci| left | number | 是 | 显示位置,距离图像左部的像素偏移量。 |