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