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