• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/>-&nbsp;'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&nbsp;(fd&nbsp;number)<br/>![](figures/zh-cn_image_url.png) |
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/>-&nbsp;'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/>-&nbsp;'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