1# @ohos.multimedia.media (媒体服务)(系统接口) 2<!--Kit: Media Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @zzs_911--> 5<!--Designer: @stupig001--> 6<!--Tester: @xdlinc--> 7<!--Adviser: @zengyawen--> 8 9媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统的媒体资源。 10 11> **说明:** 12> 13> - 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 14> - 当前页面仅包含本模块的系统接口,其他公开接口参见[@ohos.multimedia.media (媒体服务)](arkts-apis-media.md)。 15 16## 导入模块 17 18```ts 19import { media } from '@kit.MediaKit'; 20``` 21 22## media.createVideoRecorder<sup>9+</sup> 23 24createVideoRecorder(callback: AsyncCallback\<VideoRecorder>): void 25 26异步方式创建视频录制实例。通过注册回调函数获取返回值。 27一台设备只允许创建一个录制实例。 28 29**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 30 31**系统接口:** 该接口为系统接口 32 33**参数:** 34 35| 参数名 | 类型 | 必填 | 说明 | 36| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ | 37| callback | AsyncCallback<[VideoRecorder](#videorecorder9)> | 是 | 回调函数。异步返回VideoRecorder实例,失败时返回null。可用于录制视频媒体。 | 38 39**错误码:** 40 41以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 42 43| 错误码ID | 错误信息 | 44| -------- | ------------------------------ | 45| 202 | Not system App. | 46| 5400101 | No memory. Return by callback. | 47 48**示例:** 49 50```ts 51import { BusinessError } from '@kit.BasicServicesKit'; 52 53let videoRecorder: media.VideoRecorder; 54media.createVideoRecorder((error: BusinessError, video: media.VideoRecorder) => { 55 if (video != null) { 56 videoRecorder = video; 57 console.info('video createVideoRecorder success'); 58 } else { 59 console.error(`video createVideoRecorder fail, error message:${error.message}`); 60 } 61}); 62``` 63 64## media.createVideoRecorder<sup>9+</sup> 65 66createVideoRecorder(): Promise\<VideoRecorder> 67 68异步方式创建视频录制实例。通过Promise获取返回值。 69一台设备只允许创建一个录制实例。 70 71**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 72 73**系统接口:** 该接口为系统接口 74 75**返回值:** 76 77| 类型 | 说明 | 78| ----------------------------------------- | ------------------------------------------------------------ | 79| Promise<[VideoRecorder](#videorecorder9)> | Promise对象。异步返回VideoRecorder实例,失败时返回null。可用于录制视频媒体。 | 80 81**错误码:** 82 83以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 84 85| 错误码ID | 错误信息 | 86| -------- | ----------------------------- | 87| 202 | Not system App. | 88| 5400101 | No memory. Return by promise. | 89 90**示例:** 91 92```ts 93import { BusinessError } from '@kit.BasicServicesKit'; 94 95let videoRecorder: media.VideoRecorder; 96media.createVideoRecorder().then((video: media.VideoRecorder) => { 97 if (video != null) { 98 videoRecorder = video; 99 console.info('video createVideoRecorder success'); 100 } else { 101 console.error('video createVideoRecorder fail'); 102 } 103}).catch((error: BusinessError) => { 104 console.error(`video catchCallback, error message:${error.message}`); 105}); 106``` 107 108## media.reportAVScreenCaptureUserChoice<sup>12+</sup> 109 110reportAVScreenCaptureUserChoice(sessionId: number, choice: string): Promise\<void> 111 112上报录屏隐私弹窗的选择结果到ScreenCapture的服务端,用于判断是否开始录屏。如果用户选择“不允许”则不进行录屏,如果用户选择“允许”则开始录屏。 113 114此接口提供给创建弹窗的系统应用调用。 115 116**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 117 118**系统接口:** 该接口为系统接口 119 120**参数:** 121 122| 参数名 | 类型 | 必填 | 说明 | 123| --------- | ------ | ---- | ------------------------------------------------------------ | 124| sessionId | number | 是 | AVScreenCapture服务会话Id,会由AVScreenCapture拉起隐私弹窗时传给应用。 | 125| choice | string | 是 | 用户的选择内容,包含是否同意录屏、选择的屏幕Id和窗口Id等。可见示例中JsonData样例。| 126 127**返回值:** 128 129| 类型 | 说明 | 130| ---------------- | -------------------------------- | 131| Promise\<void> | 异步返回函数执行结果。 | 132 133**错误码:** 134 135| 错误码ID | 错误信息 | 136| -------- | ------------------------------------------- | 137| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 138| 5400101 | No memory. Return by promise. | 139 140**示例:** 141 142```ts 143import { BusinessError } from '@kit.BasicServicesKit'; 144import { media } from '@kit.MediaKit'; 145 146class JsonData { 147 public choice: string = 'true'; 148 public displayId: number | null = -1; 149 public missionId: number | null = -1; 150 public checkBoxSelected: string = 'true'; 151 public isInnerAudioBoxSelected: string = 'true'; 152} 153let sessionId: number = 0; // 替换成拉起此进程的sessionId。 154 155try { 156 const jsonData: JsonData = { 157 choice: 'true', // 替换成用户的选择内容。 158 displayId: -1, // 替换成用户选择的屏幕Id。 159 missionId: -1, // 替换成用户选择的窗口Id。 160 checkBoxSelected: 'true', // 替换成用户是否开启屏幕保护。 161 isInnerAudioBoxSelected: 'true', // 替换成用户是否开启内部音频录制。 162 } 163 await media.reportAVScreenCaptureUserChoice(sessionId, JSON.stringify(jsonData)); 164} catch (error: BusinessError) { 165 console.error(`reportAVScreenCaptureUserChoice error, error message: ${error.message}`); 166} 167``` 168 169## media.getAVScreenCaptureConfigurableParameters<sup>20+</sup> 170 171getAVScreenCaptureConfigurableParameters(sessionId: number): Promise\<string> 172 173从服务器获取用户可更改的系统隐私保护和应用隐私保护配置。使用Promise异步回调。 174 175>**注意:** 176> 177> 此接口仅提供给创建弹窗的系统应用调用。 178 179**系统接口:** 该接口为系统接口。 180 181**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 182 183**参数:** 184 185| 参数名 | 类型 | 必填 | 说明 | 186| --------- | ------ | ---- | ------------------------------------------------------------ | 187| sessionId | number | 是 | AVScreenCapture服务会话Id,由AVScreenCapture拉起隐私弹窗时传给应用。 | 188 189**返回值:** 190 191| 类型 | 说明 | 192| ---------------- | -------------------------------- | 193| Promise\<string> | Promise对象。可用于查询系统隐私保护和应用隐私保护状态。异步返回String对象,失败时返回空字符串。 | 194 195**错误码:** 196 197以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 198| 错误码ID | 错误信息 | 199| -------- | ------------------------------------------- | 200| 202 | Called from Non-System applications. Return by promise. | 201| 5400109 | Sessions not exist. Return by promise. | 202 203**示例:** 204 205```ts 206import { BusinessError } from '@kit.BasicServicesKit'; 207import { media } from '@kit.MediaKit'; 208 209let sessionId: number = 0; // 替换成拉起此进程的sessionId。 210 211try { 212 let privacyResult: string = await media.getAVScreenCaptureConfigurableParameters(sessionId); 213} catch (error: BusinessError) { 214 console.error(`getAVScreenCaptureConfigurableParameters error, error message: ${error.message}`); 215} 216``` 217 218## media.getScreenCaptureMonitor<sup>18+</sup> 219 220getScreenCaptureMonitor(): Promise\<ScreenCaptureMonitor> 221 222获取录屏监控模块实例。使用Promise异步回调。 223 224**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 225 226**系统接口:** 该接口为系统接口。 227 228**返回值:** 229 230| 类型 | 说明 | 231| ----------------------------------------- | ------------------------------------------------------------ | 232| Promise<[ScreenCaptureMonitor](#screencapturemonitor18)> | Promise对象。可用于查询和监听系统录屏状态。<br>异步返回ScreenCaptureMonitor实例,失败时返回null。 | 233 234**错误码:** 235 236以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 237 238| 错误码ID | 错误信息 | 239| -------- | ----------------------------- | 240| 202 | Not System App. | 241| 5400101 | No memory. Return by promise. | 242 243**示例:** 244 245```ts 246let screenCaptureMonitor: media.ScreenCaptureMonitor; 247try { 248 screenCaptureMonitor = await media.getScreenCaptureMonitor(); 249} catch (err) { 250 console.error(`getScreenCaptureMonitor failed, error message:${err.message}`); 251} 252``` 253 254## media.createParallelSoundPool<sup>20+</sup> 255 256createParallelSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo): Promise\<SoundPool> 257 258创建音频池实例,通过Promise获取返回值。 259 260使用[createSoundPool](arkts-apis-media-f.md#mediacreatesoundpool10)创建的音频池实例,在重复播放相同音频时,会停止之前的播放并重新开始;而使用createParallelSoundPool创建的实例,在重复播放相同音频时,不会停止之前的音频,而是并行播放。 261 262**系统能力:** SystemCapability.Multimedia.Media.SoundPool 263 264**参数:** 265 266| 参数名 | 类型 | 必填 | 说明 | 267| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ | 268| maxStreams | number | 是 | soundPool实例的最大播放的流数,设置范围为1-32的正整数。 | 269| audioRenderInfo | [audio.AudioRendererInfo](../apis-audio-kit/arkts-apis-audio-i.md#audiorendererinfo8) | 是 | 音频播放参数信息。 | 270 271**返回值:** 272 273| 类型 | 说明 | 274| ----------------------------------------- | ------------------------------------------------------------ | 275| Promise<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | Promise对象。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 | 276 277**错误码:** 278 279以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 280 281| 错误码ID | 错误信息 | 282| -------- | ----------------------------- | 283| 5400101 | No memory. Return by promise. | 284| 202| System API error. Return by promise. | 285 286**示例:** 287 288```js 289import { audio } from '@kit.AudioKit'; 290import { BusinessError } from '@kit.BasicServicesKit'; 291 292let soundPool: media.SoundPool; 293let audioRendererInfo: audio.AudioRendererInfo = { 294 usage : audio.StreamUsage.STREAM_USAGE_MUSIC, 295 rendererFlags : 0 296} 297 298media.createParallelSoundPool(5, audioRendererInfo).then((soundpool_: media.SoundPool) => { 299 if (soundpool_ != null) { 300 soundPool = soundpool_; 301 console.info('Succceeded in creating SoundPool'); 302 } else { 303 console.error('Failed to create SoundPool'); 304 } 305}, (error: BusinessError) => { 306 console.error(`soundpool catchCallback, error message:${error.message}`); 307}); 308``` 309 310## PixelMapParams<sup>11+</sup> 311 312获取视频缩略图时,输出缩略图的格式参数。 313 314**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 315 316| 名称 | 类型 | 可读 | 可写 | 说明 | 317| -------- | ------ | ------| ------ | ---------------------- | 318| colorFormat | [PixelFormat](#pixelformat11) | 否 | 是 | 输出的缩略图颜色格式。<br>**系统接口:** 该接口为系统接口。 | 319 320## PixelFormat<sup>11+</sup> 321 322获取视频缩略图时,输出的缩略图采用的颜色格式枚举。 323 324**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator 325 326**系统接口:** 该接口为系统接口 327 328| 名称 | 值 | 说明 | 329| ------------------------ | --------------- | ------------------------------------------------------------ | 330| RGB_565 | 2 | 表示RGB_565颜色格式。 | 331| RGBA_8888 | 3 | 表示RGBA_8888颜色格式。 | 332| RGB_888 | 5 | 表示RGB_888颜色格式。 | 333 334## AVMetadataExtractor<sup>11+</sup> 335 336> **说明:** 337> 元数据获取类,用于从媒体资源中获取元数据。在调用AVMetadataExtractor的方法前,需要先通过[createAVMetadataExtractor()](arkts-apis-media-f.md#mediacreateavmetadataextractor11)构建一个AVMetadataExtractor实例。 338 339### getTimeByFrameIndex<sup>12+</sup> 340 341getTimeByFrameIndex(index: number): Promise\<number> 342 343获取目标视频帧号对应的视频时间戳。仅支持MP4视频文件。 344 345**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 346 347**系统接口:** 该接口为系统接口 348 349**参数:** 350 351| 参数名 | 类型 | 必填 | 说明 | 352| ------ | ------ | ---- | ---------- | 353| index | number | 是 | 视频帧号。 | 354 355**返回值:** 356 357| 类型 | 说明 | 358| ---------------- | ----------------------------------- | 359| Promise\<number> | 时间戳的Promise返回值。单位是微秒。 | 360 361**错误码:** 362 363以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 364 365| 错误码ID | 错误信息 | 366| -------- | ---------------------------------------------- | 367| 401 | The parameter check failed. Return by promise. | 368| 5400102 | Operation not allowed. Returned by promise. | 369| 5400106 | Unsupported format. Returned by promise. | 370 371**示例:** 372 373```ts 374import { media } from '@kit.MediaKit'; 375import { BusinessError } from '@kit.BasicServicesKit'; 376 377avMetadataExtractor.getTimeByFrameIndex(0).then((timeUs: number) => { 378 console.info(`Succeeded getTimeByFrameIndex timeUs: ${timeUs}`); 379}).catch((err: BusinessError) => { 380 console.error(`Failed to getTimeByFrameIndex ${err.message}`); 381}) 382``` 383 384### getFrameIndexByTime<sup>12+</sup> 385 386getFrameIndexByTime(timeUs: number): Promise\<number> 387 388获取目标视频时间戳对应的视频帧号。仅支持MP4视频文件。 389 390**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor 391 392**系统接口:** 该接口为系统接口 393 394**参数:** 395 396| 参数名 | 类型 | 必填 | 说明 | 397| ------ | ------ | ---- | ------------------------ | 398| timeUs | number | 是 | 视频时间戳,单位:微秒。 | 399 400**返回值:** 401 402| 类型 | 说明 | 403| ---------------- | ------------------------- | 404| Promise\<number> | 视频帧号的Promise返回值。 | 405 406**错误码:** 407 408以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 409 410| 错误码ID | 错误信息 | 411| -------- | ---------------------------------------------- | 412| 401 | The parameter check failed. Return by promise. | 413| 5400102 | Operation not allowed. Returned by promise. | 414| 5400106 | Unsupported format. Returned by promise. | 415 416**示例:** 417 418```ts 419import { media } from '@kit.MediaKit'; 420import { BusinessError } from '@kit.BasicServicesKit'; 421 422avMetadataExtractor.getFrameIndexByTime(0).then((index: number) => { 423 console.info(`Succeeded getFrameIndexByTime index: ${index}`); 424}).catch((err: BusinessError) => { 425 console.error(`Failed to getFrameIndexByTime ${err.message}`); 426}) 427``` 428 429## AVRecorder<sup>9+</sup> 430 431音视频录制管理类,用于音视频媒体录制。在调用AVRecorder的方法前,需要先通过[createAVRecorder()](arkts-apis-media-f.md#mediacreateavrecorder9)构建一个AVRecorder实例。 432 433> **说明:** 434> 435> 使用相机进行视频录制时,需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/arkts-apis-camera.md)。 436 437### isWatermarkSupported<sup>13+</sup> 438 439isWatermarkSupported(): Promise\<boolean> 440 441检查当前设备录制是否支持硬件数字水印能力。通过Promise获取返回值。 442 443可在[prepare()](arkts-apis-media-AVRecorder.md#prepare9-1)、[start()](arkts-apis-media-AVRecorder.md#start9)、[paused()](arkts-apis-media-AVRecorder.md#pause9)事件成功触发后调用。 444 445**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 446 447**系统接口:** 该接口为系统接口 448 449**返回值:** 450 451| 类型 | 说明 | 452| ---------------- | -------------------------------- | 453| Promise\<boolean> | 获取是否支持水印的Promise返回值,支持水印:true,不支持水印:false。 | 454 455**示例:** 456 457```ts 458import { BusinessError } from '@kit.BasicServicesKit'; 459 460avRecorder.isWatermarkSupported().then((isWatermarkSupported: boolean) => { 461 console.info(`Succeeded in get, isWatermarkSupported: ${isWatermarkSupported}`); 462}).catch((error: BusinessError) => { 463 console.error(`Failed to get and catch error is ${error.message}`); 464}); 465``` 466 467### setWatermark<sup>13+</sup> 468 469setWatermark(watermark: image.PixelMap, config: WatermarkConfig): Promise\<void> 470 471给AVRecorder设置水印图像。通过Promise获取返回值。 472 473当且仅当[prepare()](arkts-apis-media-AVRecorder.md#prepare9-1)事件成功触发后,且在[start()](arkts-apis-media-AVRecorder.md#start9)之前,才能调用setWatermark方法。 474 475**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 476 477**系统接口:** 该接口为系统接口 478 479**参数:** 480 481| 参数名 | 类型 | 必填 | 说明 | 482| -------- | -------------------- | ---- | --------------------------- | 483| watermark | [image.PixelMap](../apis-image-kit/arkts-apis-image-PixelMap.md) | 是 | 图像PixelMap数据。<br>当前支持规格:<br>-当前仅支持pixelformat为RGBA8888。<br>-原图像为8K时->水印图像限制范围3072x288,原图像为4K时->水印图像限制范围1536x144。 | 484| config | [WatermarkConfig](#watermarkconfig13) | 是 | 水印的相关配置参数。 | 485 486**返回值:** 487 488| 类型 | 说明 | 489| ---------------- | -------------------------------- | 490| Promise\<void> | 异步返回函数执行结果。 | 491 492**错误码:** 493 494以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md) 495 496| 错误码ID | 错误信息 | 497| -------- | -------------------------------------- | 498| 401 | The parameter check failed. Return by promise. | 499| 801 | Capability not supported. Return by promise. | 500 501**示例:** 502 503```ts 504import { BusinessError } from '@kit.BasicServicesKit'; 505import { image } from '@kit.ImageKit'; 506 507let watermark: image.PixelMap|undefined = undefined; // need data. 508let watermarkConfig: media.WatermarkConfig = { top: 100, left: 100 } 509 510avRecorder.setWatermark(watermark, watermarkConfig).then(() => { 511 console.info('Succeeded in setWatermark'); 512}).catch((error: BusinessError) => { 513 console.error(`Failed to setWatermark and catch error is ${error.message}`); 514}); 515``` 516 517### setMetadata<sup>18+</sup> 518setMetadata(metadata: Record\<string, string\>): void 519 520给AVRecorder的录制文件中设置自定义meta数据。 521 522只有当[prepare()](arkts-apis-media-AVRecorder.md#prepare9-1)事件成功触发后,并在调用[stop()](arkts-apis-media-AVRecorder.md#stop9)方法之前,才能调用setMetadata方法。 523 524**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 525 526**系统接口:** 该接口为系统接口。 527 528**参数:** 529 530| 参数名 | 类型 | 必填 | 说明 | 531| -------- | -------------------- | ---- |-------------------------------------------------------------------| 532| metadata | [Record<string, string>] | 是 | 以键值对形式设置meta数据的tag和value。<br>- 第一个string为meta tag。<br>- 第二个string为meta value。 | 533 534**返回值:** 535 536| 类型 | 说明 | 537| --------------- |-----------| 538| void | 无返回结果。 | 539 540**错误码:** 541 542以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。 543 544| 错误码ID | 错误信息 | 545|-------|-----------------| 546| 202 | Not System App. | 547 548**示例:** 549 550```ts 551import { BusinessError } from '@kit.BasicServicesKit'; 552 553let meta : Record<string, string> = { 554 'com.openharmony.userdefine':'10', 555 'com.openharmony.userdefine2':'20' 556}; 557 558avRecorder.setMetadata(meta); 559``` 560 561## AVRecorderProfile<sup>9+</sup> 562 563音视频录制的配置文件。 564 565**系统能力:** SystemCapability.Multimedia.Media.AVRecorder 566 567| 名称 | 类型 | 必填 | 说明 | 568| ---------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | 569| enableStableQualityMode<sup>18+</sup> | boolean | 否 | 视频录制是否选择稳定质量模式,选择视频录制时选填,enableStableQualityMode默认为false。设置为true时,启用视频编码策略以实现质量稳定的编码。<br>**系统接口:** 该接口为系统接口。| 570 571## VideoRecorder<sup>9+</sup> 572 573> **说明:** 574> AVRecorder<sup>9+</sup>发布后,VideoRecorder停止维护,建议使用[AVRecorder](arkts-apis-media-AVRecorder.md)替代。 575 576视频录制管理类,用于录制视频媒体。在调用VideoRecorder的方法前,需要先通过[createVideoRecorder()](#mediacreatevideorecorder9)构建一个[VideoRecorder](#videorecorder9)实例。 577 578### 属性 579 580**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 581 582**系统接口:** 该接口为系统接口 583 584| 名称 | 类型 | 只读 | 可选 | 说明 | 585| ------------------ | -------------------------------------- | ---- | ---- | ---------------- | 586| state<sup>9+</sup> | [VideoRecordState](#videorecordstate9) | 是 | 否 | 视频录制的状态。 | 587 588### prepare<sup>9+</sup> 589 590prepare(config: VideoRecorderConfig, callback: AsyncCallback\<void>): void 591 592异步方式进行视频录制的参数设置。通过注册回调函数获取返回值。 593 594**需要权限:** ohos.permission.MICROPHONE 595 596**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 597 598**系统接口:** 该接口为系统接口 599 600**参数:** 601 602| 参数名 | 类型 | 必填 | 说明 | 603| -------- | -------------------------------------------- | ---- | ----------------------------------- | 604| config | [VideoRecorderConfig](#videorecorderconfig9) | 是 | 配置视频录制的相关参数。 | 605| callback | AsyncCallback\<void> | 是 | 异步视频录制prepare方法的回调方法。 | 606 607**错误码:** 608 609以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 610 611| 错误码ID | 错误信息 | 612| -------- | ------------------------------------------ | 613| 201 | Permission denied. Return by callback. | 614| 202 | Not system App. | 615| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 616| 5400102 | Operation not allowed. Return by callback. | 617| 5400105 | Service died. Return by callback. | 618 619**示例:** 620 621```ts 622import { BusinessError } from '@kit.BasicServicesKit'; 623 624// 配置参数以实际硬件设备支持的范围为准。 625let videoProfile: media.VideoRecorderProfile = { 626 audioBitrate : 48000, 627 audioChannels : 2, 628 audioCodec : media.CodecMimeType.AUDIO_AAC, 629 audioSampleRate : 48000, 630 fileFormat : media.ContainerFormatType.CFT_MPEG_4, 631 videoBitrate : 2000000, 632 videoCodec : media.CodecMimeType.VIDEO_AVC, 633 videoFrameWidth : 640, 634 videoFrameHeight : 480, 635 videoFrameRate : 30 636} 637 638let videoConfig: media.VideoRecorderConfig = { 639 audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 640 videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 641 profile : videoProfile, 642 url : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限。 643 rotation : 0, 644 location : { latitude : 30, longitude : 130 } 645} 646 647// asyncallback. 648videoRecorder.prepare(videoConfig, (err: BusinessError) => { 649 if (err == null) { 650 console.info('prepare success'); 651 } else { 652 console.error('prepare failed and error is ' + err.message); 653 } 654}) 655``` 656 657### prepare<sup>9+</sup> 658 659prepare(config: VideoRecorderConfig): Promise\<void> 660 661异步方式进行视频录制的参数设置。通过Promise获取返回值。 662 663**需要权限:** ohos.permission.MICROPHONE 664 665**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 666 667**系统接口:** 该接口为系统接口 668 669**参数:** 670 671| 参数名 | 类型 | 必填 | 说明 | 672| ------ | -------------------------------------------- | ---- | ------------------------ | 673| config | [VideoRecorderConfig](#videorecorderconfig9) | 是 | 配置视频录制的相关参数。 | 674 675**返回值:** 676 677| 类型 | 说明 | 678| -------------- | ---------------------------------------- | 679| Promise\<void> | 异步视频录制prepare方法的Promise返回值。 | 680 681**错误码:** 682 683以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 684 685| 错误码ID | 错误信息 | 686| -------- | ----------------------------------------- | 687| 201 | Permission denied. Return by promise. | 688| 202 | Not system App. | 689| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. | 690| 5400102 | Operation not allowed. Return by promise. | 691| 5400105 | Service died. Return by promise. | 692 693**示例:** 694 695```ts 696import { BusinessError } from '@kit.BasicServicesKit'; 697 698// 配置参数以实际硬件设备支持的范围为准。 699let videoProfile: media.VideoRecorderProfile = { 700 audioBitrate : 48000, 701 audioChannels : 2, 702 audioCodec : media.CodecMimeType.AUDIO_AAC, 703 audioSampleRate : 48000, 704 fileFormat : media.ContainerFormatType.CFT_MPEG_4, 705 videoBitrate : 2000000, 706 videoCodec : media.CodecMimeType.VIDEO_AVC, 707 videoFrameWidth : 640, 708 videoFrameHeight : 480, 709 videoFrameRate : 30 710} 711 712let videoConfig: media.VideoRecorderConfig = { 713 audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, 714 videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV, 715 profile : videoProfile, 716 url : 'fd://xx', // 文件需先由调用者创建,并给予适当的权限。 717 rotation : 0, 718 location : { latitude : 30, longitude : 130 } 719} 720 721// promise. 722videoRecorder.prepare(videoConfig).then(() => { 723 console.info('prepare success'); 724}).catch((err: BusinessError) => { 725 console.error('prepare failed and catch error is ' + err.message); 726}); 727``` 728 729### getInputSurface<sup>9+</sup> 730 731getInputSurface(callback: AsyncCallback\<string>): void 732 733异步方式获得录制需要的surface。通过注册回调函数获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的数据。 734 735应当注意,填入的视频数据需要携带时间戳(单位ns),buffersize。时间戳的起始时间请以系统启动时间为基准。 736 737只能在[prepare()](#prepare9)接口调用后调用。 738 739**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 740 741**系统接口:** 该接口为系统接口 742 743**参数:** 744 745| 参数名 | 类型 | 必填 | 说明 | 746| -------- | ---------------------- | ---- | --------------------------- | 747| callback | AsyncCallback\<string> | 是 | 异步获得surface的回调方法。 | 748 749**错误码:** 750 751以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 752 753| 错误码ID | 错误信息 | 754| -------- | ------------------------------------------ | 755| 202 | Not system App. | 756| 5400102 | Operation not allowed. Return by callback. | 757| 5400103 | I/O error. Return by callback. | 758| 5400105 | Service died. Return by callback. | 759 760**示例:** 761 762```ts 763import { BusinessError } from '@kit.BasicServicesKit'; 764 765// asyncallback. 766let surfaceID: string; // 传递给外界的surfaceID。 767videoRecorder.getInputSurface((err: BusinessError, surfaceId: string) => { 768 if (err == null) { 769 console.info('getInputSurface success'); 770 surfaceID = surfaceId; 771 } else { 772 console.error('getInputSurface failed and error is ' + err.message); 773 } 774}); 775``` 776 777### getInputSurface<sup>9+</sup> 778 779getInputSurface(): Promise\<string>; 780 781 异步方式获得录制需要的surface。通过Promise获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的数据。 782 783应当注意,填入的视频数据需要携带时间戳(单位ns),buffersize。时间戳的起始时间请以系统启动时间为基准。 784 785只能在[prepare()](#prepare9-1)接口调用后调用。 786 787**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 788 789**系统接口:** 该接口为系统接口 790 791**返回值:** 792 793| 类型 | 说明 | 794| ---------------- | -------------------------------- | 795| Promise\<string> | 异步获得surface的Promise返回值。 | 796 797**错误码:** 798 799以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 800 801| 错误码ID | 错误信息 | 802| -------- | ----------------------------------------- | 803| 202 | Not system App. | 804| 5400102 | Operation not allowed. Return by promise. | 805| 5400103 | I/O error. Return by promise. | 806| 5400105 | Service died. Return by promise. | 807 808**示例:** 809 810```ts 811import { BusinessError } from '@kit.BasicServicesKit'; 812 813// promise. 814let surfaceID: string; // 传递给外界的surfaceID。 815videoRecorder.getInputSurface().then((surfaceId: string) => { 816 console.info('getInputSurface success'); 817 surfaceID = surfaceId; 818}).catch((err: BusinessError) => { 819 console.error('getInputSurface failed and catch error is ' + err.message); 820}); 821``` 822 823### start<sup>9+</sup> 824 825start(callback: AsyncCallback\<void>): void 826 827异步方式开始视频录制。通过注册回调函数获取返回值。 828 829在[prepare()](#prepare9)和[getInputSurface()](#getinputsurface9)后调用,需要依赖数据源先给surface传递数据。 830 831**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 832 833**系统接口:** 该接口为系统接口 834 835**参数:** 836 837| 参数名 | 类型 | 必填 | 说明 | 838| -------- | -------------------- | ---- | ---------------------------- | 839| callback | AsyncCallback\<void> | 是 | 异步开始视频录制的回调方法。 | 840 841**错误码:** 842 843以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 844 845| 错误码ID | 错误信息 | 846| -------- | ------------------------------------------ | 847| 202 | Not system App. | 848| 5400102 | Operation not allowed. Return by callback. | 849| 5400103 | I/O error. Return by callback. | 850| 5400105 | Service died. Return by callback. | 851 852**示例:** 853 854```ts 855import { BusinessError } from '@kit.BasicServicesKit'; 856 857// asyncallback. 858videoRecorder.start((err: BusinessError) => { 859 if (err == null) { 860 console.info('start videorecorder success'); 861 } else { 862 console.error('start videorecorder failed and error is ' + err.message); 863 } 864}); 865``` 866 867### start<sup>9+</sup> 868 869start(): Promise\<void> 870 871异步方式开始视频录制。通过Promise获取返回值。 872 873在[prepare()](#prepare9-1)和[getInputSurface()](#getinputsurface9-1)后调用,需要依赖数据源先给surface传递数据。 874 875**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 876 877**系统接口:** 该接口为系统接口 878 879**返回值:** 880 881| 类型 | 说明 | 882| -------------- | ------------------------------------- | 883| Promise\<void> | 异步开始视频录制方法的Promise返回值。 | 884 885**错误码:** 886 887以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 888 889| 错误码ID | 错误信息 | 890| -------- | ----------------------------------------- | 891| 202 | Not system App. | 892| 5400102 | Operation not allowed. Return by promise. | 893| 5400103 | I/O error. Return by promise. | 894| 5400105 | Service died. Return by promise. | 895 896**示例:** 897 898```ts 899import { BusinessError } from '@kit.BasicServicesKit'; 900 901// promise. 902videoRecorder.start().then(() => { 903 console.info('start videorecorder success'); 904}).catch((err: BusinessError) => { 905 console.error('start videorecorder failed and catch error is ' + err.message); 906}); 907``` 908 909### pause<sup>9+</sup> 910 911pause(callback: AsyncCallback\<void>): void 912 913异步方式暂停视频录制。通过注册回调函数获取返回值。 914 915在[start()](#start9)后调用。可以通过调用[resume()](#resume9)接口来恢复录制。 916 917**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 918 919**系统接口:** 该接口为系统接口 920 921**参数:** 922 923| 参数名 | 类型 | 必填 | 说明 | 924| -------- | -------------------- | ---- | ---------------------------- | 925| callback | AsyncCallback\<void> | 是 | 异步暂停视频录制的回调方法。 | 926 927**错误码:** 928 929以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 930 931| 错误码ID | 错误信息 | 932| -------- | ------------------------------------------ | 933| 202 | Not system App. | 934| 5400102 | Operation not allowed. Return by callback. | 935| 5400103 | I/O error. Return by callback. | 936| 5400105 | Service died. Return by callback. | 937 938**示例:** 939 940```ts 941import { BusinessError } from '@kit.BasicServicesKit'; 942 943// asyncallback. 944videoRecorder.pause((err: BusinessError) => { 945 if (err == null) { 946 console.info('pause videorecorder success'); 947 } else { 948 console.error('pause videorecorder failed and error is ' + err.message); 949 } 950}); 951``` 952 953### pause<sup>9+</sup> 954 955pause(): Promise\<void> 956 957异步方式暂停视频录制。通过Promise获取返回值。 958 959在[start()](#start9-1)后调用。可以通过调用[resume()](#resume9-1)接口来恢复录制。 960 961**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 962 963**系统接口:** 该接口为系统接口 964 965**返回值:** 966 967| 类型 | 说明 | 968| -------------- | ------------------------------------- | 969| Promise\<void> | 异步暂停视频录制方法的Promise返回值。 | 970 971**错误码:** 972 973以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 974 975| 错误码ID | 错误信息 | 976| -------- | ----------------------------------------- | 977| 202 | Not system App. | 978| 5400102 | Operation not allowed. Return by promise. | 979| 5400103 | I/O error. Return by promise. | 980| 5400105 | Service died. Return by promise. | 981 982**示例:** 983 984```ts 985import { BusinessError } from '@kit.BasicServicesKit'; 986 987// promise. 988videoRecorder.pause().then(() => { 989 console.info('pause videorecorder success'); 990}).catch((err: BusinessError) => { 991 console.error('pause videorecorder failed and catch error is ' + err.message); 992}); 993``` 994 995### resume<sup>9+</sup> 996 997resume(callback: AsyncCallback\<void>): void 998 999异步方式恢复视频录制。通过注册回调函数获取返回值。 1000 1001**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1002 1003**系统接口:** 该接口为系统接口 1004 1005**参数:** 1006 1007| 参数名 | 类型 | 必填 | 说明 | 1008| -------- | -------------------- | ---- | ---------------------------- | 1009| callback | AsyncCallback\<void> | 是 | 异步恢复视频录制的回调方法。 | 1010 1011**错误码:** 1012 1013以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 1014 1015| 错误码ID | 错误信息 | 1016| -------- | ------------------------------------------ | 1017| 202 | Not system App. | 1018| 5400102 | Operation not allowed. Return by callback. | 1019| 5400103 | I/O error. Return by callback. | 1020| 5400105 | Service died. Return by callback. | 1021 1022**示例:** 1023 1024```ts 1025import { BusinessError } from '@kit.BasicServicesKit'; 1026 1027// asyncallback. 1028videoRecorder.resume((err: BusinessError) => { 1029 if (err == null) { 1030 console.info('resume videorecorder success'); 1031 } else { 1032 console.error('resume videorecorder failed and error is ' + err.message); 1033 } 1034}); 1035``` 1036 1037### resume<sup>9+</sup> 1038 1039resume(): Promise\<void> 1040 1041异步方式恢复视频录制。通过Promise获取返回值。 1042 1043**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1044 1045**系统接口:** 该接口为系统接口 1046 1047**返回值:** 1048 1049| 类型 | 说明 | 1050| -------------- | ------------------------------------- | 1051| Promise\<void> | 异步恢复视频录制方法的Promise返回值。 | 1052 1053**错误码:** 1054 1055以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 1056 1057| 错误码ID | 错误信息 | 1058| -------- | ----------------------------------------- | 1059| 202 | Not system App. | 1060| 5400102 | Operation not allowed. Return by promise. | 1061| 5400103 | I/O error. Return by promise. | 1062| 5400105 | Service died. Return by promise. | 1063 1064**示例:** 1065 1066```ts 1067import { BusinessError } from '@kit.BasicServicesKit'; 1068 1069// promise. 1070videoRecorder.resume().then(() => { 1071 console.info('resume videorecorder success'); 1072}).catch((err: BusinessError) => { 1073 console.error('resume videorecorder failed and catch error is ' + err.message); 1074}); 1075``` 1076 1077### stop<sup>9+</sup> 1078 1079stop(callback: AsyncCallback\<void>): void 1080 1081异步方式停止视频录制。通过注册回调函数获取返回值。 1082 1083需要重新调用[prepare()](#prepare9)和[getInputSurface()](#getinputsurface9)接口才能重新录制。 1084 1085**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1086 1087**系统接口:** 该接口为系统接口 1088 1089**参数:** 1090 1091| 参数名 | 类型 | 必填 | 说明 | 1092| -------- | -------------------- | ---- | ---------------------------- | 1093| callback | AsyncCallback\<void> | 是 | 异步停止视频录制的回调方法。 | 1094 1095**错误码:** 1096 1097以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 1098 1099| 错误码ID | 错误信息 | 1100| -------- | ------------------------------------------ | 1101| 202 | Not system App. | 1102| 5400102 | Operation not allowed. Return by callback. | 1103| 5400103 | I/O error. Return by callback. | 1104| 5400105 | Service died. Return by callback. | 1105 1106**示例:** 1107 1108```ts 1109import { BusinessError } from '@kit.BasicServicesKit'; 1110 1111// asyncallback. 1112videoRecorder.stop((err: BusinessError) => { 1113 if (err == null) { 1114 console.info('stop videorecorder success'); 1115 } else { 1116 console.error('stop videorecorder failed and error is ' + err.message); 1117 } 1118}); 1119``` 1120 1121### stop<sup>9+</sup> 1122 1123stop(): Promise\<void> 1124 1125异步方式停止视频录制。通过Promise获取返回值。 1126 1127需要重新调用[prepare()](#prepare9-1)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。 1128 1129**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1130 1131**系统接口:** 该接口为系统接口 1132 1133**返回值:** 1134 1135| 类型 | 说明 | 1136| -------------- | ------------------------------------- | 1137| Promise\<void> | 异步停止视频录制方法的Promise返回值。 | 1138 1139**错误码:** 1140 1141以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 1142 1143| 错误码ID | 错误信息 | 1144| -------- | ----------------------------------------- | 1145| 202 | Not system App. | 1146| 5400102 | Operation not allowed. Return by promise. | 1147| 5400103 | I/O error. Return by promise. | 1148| 5400105 | Service died. Return by promise. | 1149 1150**示例:** 1151 1152```ts 1153import { BusinessError } from '@kit.BasicServicesKit'; 1154 1155// promise. 1156videoRecorder.stop().then(() => { 1157 console.info('stop videorecorder success'); 1158}).catch((err: BusinessError) => { 1159 console.error('stop videorecorder failed and catch error is ' + err.message); 1160}); 1161``` 1162 1163### release<sup>9+</sup> 1164 1165release(callback: AsyncCallback\<void>): void 1166 1167异步方式释放视频录制资源。通过注册回调函数获取返回值。 1168 1169**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1170 1171**系统接口:** 该接口为系统接口 1172 1173**参数:** 1174 1175| 参数名 | 类型 | 必填 | 说明 | 1176| -------- | -------------------- | ---- | -------------------------------- | 1177| callback | AsyncCallback\<void> | 是 | 异步释放视频录制资源的回调方法。 | 1178 1179**错误码:** 1180 1181以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 1182 1183| 错误码ID | 错误信息 | 1184| -------- | --------------------------------- | 1185| 202 | Not system App. | 1186| 5400105 | Service died. Return by callback. | 1187 1188**示例:** 1189 1190```ts 1191import { BusinessError } from '@kit.BasicServicesKit'; 1192 1193// asyncallback. 1194videoRecorder.release((err: BusinessError) => { 1195 if (err == null) { 1196 console.info('release videorecorder success'); 1197 } else { 1198 console.error('release videorecorder failed and error is ' + err.message); 1199 } 1200}); 1201``` 1202 1203### release<sup>9+</sup> 1204 1205release(): Promise\<void> 1206 1207异步方式释放视频录制资源。通过Promise获取返回值。 1208 1209**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1210 1211**系统接口:** 该接口为系统接口 1212 1213**返回值:** 1214 1215| 类型 | 说明 | 1216| -------------- | ----------------------------------------- | 1217| Promise\<void> | 异步释放视频录制资源方法的Promise返回值。 | 1218 1219**错误码:** 1220 1221以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 1222 1223| 错误码ID | 错误信息 | 1224| -------- | --------------------------------- | 1225| 202 | Not system App. | 1226| 5400105 | Service died. Return by callback. | 1227 1228**示例:** 1229 1230```ts 1231import { BusinessError } from '@kit.BasicServicesKit'; 1232 1233// promise. 1234videoRecorder.release().then(() => { 1235 console.info('release videorecorder success'); 1236}).catch((err: BusinessError) => { 1237 console.error('release videorecorder failed and catch error is ' + err.message); 1238}); 1239``` 1240 1241### reset<sup>9+</sup> 1242 1243reset(callback: AsyncCallback\<void>): void 1244 1245异步方式重置视频录制。通过注册回调函数获取返回值。 1246 1247需要重新调用[prepare()](#prepare9)和[getInputSurface()](#getinputsurface9)接口才能重新录制。 1248 1249**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1250 1251**系统接口:** 该接口为系统接口 1252 1253**参数:** 1254 1255| 参数名 | 类型 | 必填 | 说明 | 1256| -------- | -------------------- | ---- | ---------------------------- | 1257| callback | AsyncCallback\<void> | 是 | 异步重置视频录制的回调方法。 | 1258 1259**错误码:** 1260 1261以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 1262 1263| 错误码ID | 错误信息 | 1264| -------- | --------------------------------- | 1265| 202 | Not system App. | 1266| 5400103 | I/O error. Return by callback. | 1267| 5400105 | Service died. Return by callback. | 1268 1269**示例:** 1270 1271```ts 1272import { BusinessError } from '@kit.BasicServicesKit'; 1273 1274// asyncallback. 1275videoRecorder.reset((err: BusinessError) => { 1276 if (err == null) { 1277 console.info('reset videorecorder success'); 1278 } else { 1279 console.error('reset videorecorder failed and error is ' + err.message); 1280 } 1281}); 1282``` 1283 1284### reset<sup>9+</sup> 1285 1286reset(): Promise\<void> 1287 1288异步方式重置视频录制。通过Promise获取返回值。 1289 1290需要重新调用[prepare()](#prepare9-1)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。 1291 1292**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1293 1294**系统接口:** 该接口为系统接口 1295 1296**返回值:** 1297 1298| 类型 | 说明 | 1299| -------------- | ------------------------------------- | 1300| Promise\<void> | 异步重置视频录制方法的Promise返回值。 | 1301 1302**错误码:** 1303 1304以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 1305 1306| 错误码ID | 错误信息 | 1307| -------- | -------------------------------- | 1308| 202 | Not system App. | 1309| 5400103 | I/O error. Return by promise. | 1310| 5400105 | Service died. Return by promise. | 1311 1312**示例:** 1313 1314```ts 1315import { BusinessError } from '@kit.BasicServicesKit'; 1316 1317// promise. 1318videoRecorder.reset().then(() => { 1319 console.info('reset videorecorder success'); 1320}).catch((err: BusinessError) => { 1321 console.error('reset videorecorder failed and catch error is ' + err.message); 1322}); 1323``` 1324 1325### on('error')<sup>9+</sup> 1326 1327on(type: 'error', callback: ErrorCallback): void 1328 1329开始订阅视频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。 1330 1331**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1332 1333**系统接口:** 该接口为系统接口 1334 1335**参数:** 1336 1337| 参数名 | 类型 | 必填 | 说明 | 1338| -------- | ------------- | ---- | ------------------------------------------------------------ | 1339| type | string | 是 | 录制错误事件回调类型'error'。<br/>- 'error':视频录制过程中发生错误,触发该事件。 | 1340| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 录制错误事件回调方法。 | 1341 1342**错误码:** 1343 1344以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[媒体错误码](errorcode-media.md)。 1345 1346| 错误码ID | 错误信息 | 1347| -------- | --------------------------------- | 1348| 201 | permission denied. | 1349| 202 | Not system App. | 1350| 5400103 | I/O error. Return by callback. | 1351| 5400105 | Service died. Return by callback. | 1352 1353**示例:** 1354 1355```ts 1356import { BusinessError } from '@kit.BasicServicesKit'; 1357 1358// 当获取videoRecordState接口出错时通过此订阅事件上报。 1359videoRecorder.on('error', (error: BusinessError) => { // 设置'error'事件回调。 1360 console.error(`audio error called, error: ${error}`); 1361}) 1362``` 1363 1364## VideoRecordState<sup>9+</sup> 1365 1366视频录制的状态机。可通过state属性获取当前状态。 1367 1368**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1369 1370**系统接口:** 该接口为系统接口 1371 1372| 名称 | 类型 | 说明 | 1373| -------- | ------ | ---------------------- | 1374| idle | string | 视频录制空闲。 | 1375| prepared | string | 视频录制参数设置完成。 | 1376| playing | string | 视频正在录制。 | 1377| paused | string | 视频暂停录制。 | 1378| stopped | string | 视频录制停止。 | 1379| error | string | 错误状态。 | 1380 1381## VideoRecorderConfig<sup>9+</sup> 1382 1383表示视频录制的参数设置。 1384 1385通过audioSourceType和videoSourceType区分纯视频录制和音视频录制(纯音频录制请使用[AVRecorder](arkts-apis-media-AVRecorder.md)或[AudioRecorder](arkts-apis-media-AudioRecorder.md))。纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。 1386 1387**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1388 1389**系统接口:** 该接口为系统接口 1390 1391| 名称 | 类型 | 必填 | 说明 | 1392| --------------- | ---------------------------------------------- | ---- | ------------------------------------------------------------ | 1393| audioSourceType | [AudioSourceType](arkts-apis-media-e.md#audiosourcetype9) | 否 | 视频录制的音频源类型,选择音频录制时必填。 | 1394| videoSourceType | [VideoSourceType](arkts-apis-media-e.md#videosourcetype9) | 是 | 视频录制的视频源类型。 | 1395| profile | [VideoRecorderProfile](#videorecorderprofile9) | 是 | 视频录制的profile。 | 1396| rotation | number | 否 | 录制的视频旋转角度,仅支持0,90,180,270,默认值为0。 | 1397| location | [Location](arkts-apis-media-i.md#location) | 否 | 录制视频的地理位置,默认不记录地理位置信息。 | 1398| url | string | 是 | 视频输出URL:fd://xx (fd number)<br/> | 1399 1400## VideoRecorderProfile<sup>9+</sup> 1401 1402视频录制的配置文件。 1403 1404**系统能力:** SystemCapability.Multimedia.Media.VideoRecorder 1405 1406**系统接口:** 该接口为系统接口 1407 1408| 名称 | 类型 | 必填 | 说明 | 1409| ---------------- | -------------------------------------------- | ---- | ---------------- | 1410| audioBitrate | number | 否 | 音频编码比特率,选择音频录制时必填。 | 1411| audioChannels | number | 否 | 音频采集声道数,选择音频录制时必填。 | 1412| audioCodec | [CodecMimeType](arkts-apis-media-e.md#codecmimetype8) | 否 | 音频编码格式,选择音频录制时必填。 | 1413| audioSampleRate | number | 否 | 音频采样率,选择音频录制时必填。 | 1414| fileFormat | [ContainerFormatType](arkts-apis-media-e.md#containerformattype8) | 是 | 文件的容器格式。 | 1415| videoBitrate | number | 是 | 视频编码比特率。 | 1416| videoCodec | [CodecMimeType](arkts-apis-media-e.md#codecmimetype8) | 是 | 视频编码格式。 | 1417| videoFrameWidth | number | 是 | 录制视频帧的宽。 | 1418| videoFrameHeight | number | 是 | 录制视频帧的高。 | 1419| videoFrameRate | number | 是 | 录制视频帧率。 | 1420 1421## WatermarkConfig<sup>13+</sup> 1422 1423设置给AVRecorder的水印相关配置,该位置以画面的左上角为开始点。 1424 1425**系统能力:** SystemCapability.Multimedia.Media.Core 1426 1427**系统接口:** 该接口为系统接口 1428 1429| 名称 | 类型 | 必填 | 说明 | 1430| --------- | ------ | ---- | ---------------- | 1431| top | number | 是 | 显示位置,距离图像顶部的像素偏移量。 | 1432| left | number | 是 | 显示位置,距离图像左部的像素偏移量。 | 1433 1434## ScreenCaptureMonitor<sup>18+</sup> 1435 1436录屏状态监控类,用于查询和监听系统录屏的录屏状态。在调用ScreenCaptureMonitor方法前,需要先通过[getScreenCaptureMonitor()](#mediagetscreencapturemonitor18)构建一个[ScreenCaptureMonitor](#screencapturemonitor18)实例。 1437 1438### 属性 1439 1440**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 1441 1442**系统接口:** 该接口为系统接口。 1443 1444| 名称 | 类型 | 只读 | 可选 | 说明 | 1445| ------------------ | -------------------------------------- | ---- | ---- | ---------------- | 1446| isSystemScreenRecorderWorking<sup>18+</sup> | boolean | 是 | 否 | 系统录屏是否处于录屏状态。 | 1447 1448### on('systemScreenRecorder')<sup>18+</sup> 1449 1450on(type: 'systemScreenRecorder', callback: Callback\<ScreenCaptureEvent>): void 1451 1452开始订阅系统录屏的录屏状态。当上报ScreenCaptureEvent事件后,用户可以根据ScreenCaptureEvent事件得知系统录屏当前处于开启还是停止的状态。 1453 1454**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 1455 1456**系统接口:** 该接口为系统接口。 1457 1458**参数:** 1459 1460| 参数名 | 类型 | 必填 | 说明 | 1461| -------- | ------------- | ---- | ------------------------------------------------------------ | 1462| type | string | 是 | 录屏状态回调类型'systemScreenRecorder'。<br/>- 'systemScreenRecorder':系统录屏应用的录屏状态发生变化,触发该事件。 | 1463| callback | function | 是 | 系统录屏状态回调。[ScreenCaptureEvent](#screencaptureevent18)表示切换到的状态。 | 1464 1465**错误码:** 1466 1467以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。 1468 1469| 错误码ID | 错误信息 | 1470| -------- | --------------------------------- | 1471| 202 | Not System App. | 1472 1473**示例:** 1474 1475```ts 1476 1477// 当系统录屏应用的录屏状态发生变化时通过此订阅事件上报。 1478screenCaptureMonitor.on('systemScreenRecorder', (event: media.ScreenCaptureEvent) => { 1479 // 设置'systemScreenRecorder'事件回调。 1480 console.info(`system ScreenRecorder event: ${event}`); 1481}) 1482``` 1483 1484### off('systemScreenRecorder')<sup>18+</sup> 1485 1486off(type: 'systemScreenRecorder', callback?: Callback\<ScreenCaptureEvent>): void 1487 1488取消订阅系统录屏的录屏状态。 1489 1490**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 1491 1492**系统接口:** 该接口为系统接口。 1493 1494**参数:** 1495 1496| 参数名 | 类型 | 必填 | 说明 | 1497| -------- | ------------- | ---- | ------------------------------------------------------------ | 1498| type | string | 是 | 录屏状态回调类型'systemScreenRecorder'。<br/>- 'systemScreenRecorder':系统录屏应用的录屏状态发生变化,触发该事件。 | 1499| callback | function | 否 | 系统录屏状态回调。[ScreenCaptureEvent](#screencaptureevent18)表示切换到的状态,不填此参数则会取消最后一次订阅事件。 | 1500 1501**错误码:** 1502 1503以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)。 1504 1505| 错误码ID | 错误信息 | 1506| -------- | --------------------------------- | 1507| 202 | Not System App. | 1508 1509**示例:** 1510 1511```ts 1512screenCaptureMonitor.off('systemScreenRecorder'); 1513``` 1514 1515## ScreenCaptureEvent<sup>18+</sup> 1516 1517系统录屏应用录屏状态的枚举值。 1518 1519**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 1520 1521**系统接口:** 该接口为系统接口。 1522 1523| 名称 | 值 | 说明 | 1524| ------------------------ | --------------- | ------------------------------------------------------------ | 1525| SCREENCAPTURE_STARTED | 0 | 表示系统录屏应用开始录屏。 | 1526| SCREENCAPTURE_STOPPED | 1 | 表示系统录屏应用停止录屏。 | 1527 1528## enableDeviceLevelCapture<sup>20+</sup> 1529 1530用于指定折叠屏PC在折叠状态下录制半块屏幕还是整块屏幕。 1531 1532**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture 1533 1534**系统接口:** 该接口为系统接口。 1535 1536enableDeviceLevelCapture是AVScreenCaptureStrategy接口中的一个可选参数,默认值为false。 1537 1538| 名称 | 类型 | 必填 | 说明 | 1539| ------------------------ | ------- | ---- | ---- | 1540| enableDeviceLevelCapture | boolean | 否 | true表示折叠屏PC在折叠状态下录制整块屏幕,false表示折叠屏PC在折叠状态下录制半块屏幕。 | 1541