1# AVScreenCapture
2
3
4## 概述
5
6调用本模块下的接口,应用可以完成屏幕录制的功能。
7
8开发者可根据实际的开发需求,参考对应的开发指南及样例:
9
10- [使用AVScreenCapture录屏取码流](../../media/media/using-avscreencapture-for-buffer.md)
11- [使用AVScreenCapture录屏写文件](../../media/media/using-avscreencapture-for-file.md)
12
13**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
14
15**起始版本:** 10
16
17
18## 汇总
19
20
21### 文件
22
23| 名称 | 描述 |
24| -------- | -------- |
25| [native_avscreen_capture.h](native__avscreen__capture_8h.md) | 声明用于构造屏幕录制对象的API。 |
26| [native_avscreen_capture_base.h](native__avscreen__capture__base_8h.md) | 声明用于运行屏幕录制通用的结构体、字符常量、枚举。 |
27| [native_avscreen_capture_errors.h](native__avscreen__capture__errors_8h.md) | 声明用于运行屏幕录制过程中接口调用的错误码说明。 |
28
29
30### 结构体
31
32| 名称 | 描述 |
33| -------- | -------- |
34| struct  [OH_AudioCaptureInfo](_o_h___audio_capture_info.md) | 音频采样信息。 |
35| struct  [OH_AudioEncInfo](_o_h___audio_enc_info.md) | 音频编码信息。 |
36| struct  [OH_AudioInfo](_o_h___audio_info.md) | 音频信息。 |
37| struct  [OH_VideoCaptureInfo](_o_h___video_capture_info.md) | 视频录制信息。 |
38| struct  [OH_VideoEncInfo](_o_h___video_enc_info.md) | 视频编码信息。 |
39| struct  [OH_VideoInfo](_o_h___video_info.md) |视频信息。 |
40| struct  [OH_RecorderInfo](_o_h___recorder_info.md) | 录制文件信息。 |
41| struct  [OH_AVScreenCaptureConfig](_o_h___a_v_screen_capture_config.md) | 屏幕录制配置参数。 |
42| struct  [OH_AVScreenCaptureCallback](_o_h___a_v_screen_capture_callback.md) | OH_AVScreenCapture中所有异步回调函数指针的集合。 |
43| struct  [OH_Rect](_o_h___rect.md) | 定义录屏界面的宽高以及画面信息。 |
44| struct  [OH_AudioBuffer](_o_h___audio_buffer.md) | 定义了音频数据的大小,类型,时间戳等配置信息。 |
45
46
47### 类型定义
48
49| 名称 | 描述 |
50| -------- | -------- |
51| typedef struct [OH_NativeBuffer](#oh_nativebuffer) [OH_NativeBuffer](#oh_nativebuffer) | 提供录屏的视频原始码流类。 |
52| typedef struct [OH_AVScreenCapture](#oh_avscreencapture) [OH_AVScreenCapture](#oh_avscreencapture) | 通过OH_AVScreenCapture可以获取视频与音频的原始码流。 |
53| typedef struct [OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter) [OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter) | 通过OH_AVScreenCapture_ContentFilter过滤音视频内容。 |
54| typedef enum [OH_CaptureMode](#oh_capturemode-1) [OH_CaptureMode](#oh_capturemode) | 枚举,表示屏幕录制的不同模式。 |
55| typedef enum [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype-1) [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) | 枚举,表示屏幕录制时的音频源类型。 |
56| typedef enum [OH_AudioCodecFormat](#oh_audiocodecformat-1) [OH_AudioCodecFormat](#oh_audiocodecformat) | 枚举,表示音频编码格式。 |
57| typedef enum [OH_VideoCodecFormat](#oh_videocodecformat-1) [OH_VideoCodecFormat](#oh_videocodecformat) | 枚举,表示视频编码格式。 |
58| typedef enum [OH_DataType](#oh_datatype-1) [OH_DataType](#oh_datatype) | 枚举,表示屏幕录制流的数据格式。 |
59| typedef enum [OH_VideoSourceType](#oh_videosourcetype-1) [OH_VideoSourceType](#oh_videosourcetype) | 枚举,表示视频源格式。当前仅支持RGBA格式。 |
60| typedef enum [OH_ContainerFormatType](#oh_containerformattype-1) [OH_ContainerFormatType](#oh_containerformattype) | 枚举,表示屏幕录制生成的文件类型。 |
61| typedef struct [OH_AudioCaptureInfo](_o_h___audio_capture_info.md) [OH_AudioCaptureInfo](#oh_audiocaptureinfo) | 音频采样信息。 |
62| typedef struct [OH_AudioEncInfo](_o_h___audio_enc_info.md) [OH_AudioEncInfo](#oh_audioencinfo) | 音频编码信息。 |
63| typedef struct [OH_AudioInfo](_o_h___audio_info.md) [OH_AudioInfo](#oh_audioinfo) | 音频信息。 |
64| typedef struct [OH_VideoCaptureInfo](_o_h___video_capture_info.md) [OH_VideoCaptureInfo](#oh_videocaptureinfo) | 视频录制信息。 |
65| typedef struct [OH_VideoEncInfo](_o_h___video_enc_info.md) [OH_VideoEncInfo](#oh_videoencinfo) | 视频编码信息。 |
66| typedef struct [OH_VideoInfo](_o_h___video_info.md) [OH_VideoInfo](#oh_videoinfo) | 视频信息。 |
67| typedef struct [OH_RecorderInfo](_o_h___recorder_info.md) [OH_RecorderInfo](#oh_recorderinfo) | 录制文件信息。 |
68| typedef struct [OH_AVScreenCaptureConfig](_o_h___a_v_screen_capture_config.md) [OH_AVScreenCaptureConfig](#oh_avscreencaptureconfig) | 屏幕录制配置参数。 |
69| typedef void(\* [OH_AVScreenCaptureOnError](#oh_avscreencaptureonerror)) ([OH_AVScreenCapture](#oh_avscreencapture) \*capture, int32_t errorCode) | 当OH_AVScreenCapture实例运行出错时,将调用函数指针。 |
70| typedef void(\* [OH_AVScreenCaptureOnAudioBufferAvailable](#oh_avscreencaptureonaudiobufferavailable)) ([OH_AVScreenCapture](#oh_avscreencapture) \*capture, bool isReady, [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) type) | 当OH_AVScreenCapture操作期间音频缓冲区可用时,将调用函数指针。 |
71| typedef void(\* [OH_AVScreenCaptureOnVideoBufferAvailable](#oh_avscreencaptureonvideobufferavailable)) ([OH_AVScreenCapture](#oh_avscreencapture) \*capture, bool isReady) | 当OH_AVScreenCapture操作期间视频缓冲区可用时,将调用函数指针。 |
72| typedef struct [OH_AVScreenCaptureCallback](_o_h___a_v_screen_capture_callback.md) [OH_AVScreenCaptureCallback](#oh_avscreencapturecallback) | OH_AVScreenCapture中所有异步回调函数指针的集合。 |
73| typedef struct [OH_Rect](_o_h___rect.md) [OH_Rect](#oh_rect) | 定义录屏界面的宽高以及画面信息。 |
74| typedef struct [OH_AudioBuffer](_o_h___audio_buffer.md) [OH_AudioBuffer](#oh_audiobuffer) | 定义了音频数据的大小,类型,时间戳等配置信息。 |
75| typedef enum [OH_AVScreenCaptureStateCode](#oh_avscreencapturestatecode-1) [OH_AVScreenCaptureStateCode](#oh_avscreencapturestatecode) | 枚举,表示状态码。 |
76| typedef enum [OH_AVScreenCaptureBufferType](#oh_avscreencapturebuffertype-1) [OH_AVScreenCaptureBufferType](#oh_avscreencapturebuffertype) | 枚举,表示buffer类型。 |
77| typedef enum [OH_AVScreenCaptureFilterableAudioContent](#oh_avscreencapturefilterableaudiocontent-1) [OH_AVScreenCaptureFilterableAudioContent](#oh_avscreencapturefilterableaudiocontent) | 枚举,表示可过滤的音频类型。 |
78| typedef void(\* [OH_AVScreenCapture_OnStateChange](#oh_avscreencapture_onstatechange)) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, [OH_AVScreenCaptureStateCode](#oh_avscreencapturestatecode) stateCode, void \*userData) | 当OH_AVScreenCapture实例操作期间发生状态变更时,将调用函数指针。 |
79| typedef void(\* [OH_AVScreenCapture_OnError](#oh_avscreencapture_onerror)) ([OH_AVScreenCapture](#oh_avscreencapture) \*capture, int32_t errorCode, void \*userData) | 当OH_AVScreenCapture实例操作期间发生错误时,将调用函数指针。 |
80| typedef void(\* [OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable)) ([OH_AVScreenCapture](#oh_avscreencapture) \*capture, OH_AVBuffer \*buffer, [OH_AVScreenCaptureBufferType](#oh_avscreencapturebuffertype) bufferType, int64_t timestamp, void \*userData) | 当OH_AVScreenCapture实例操作期间音频或视频缓存区可用时,将调用该函数指针。 |
81| typedef enum [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode-1) [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) | 屏幕录制过程中产生的不同结果码。 |
82
83
84### 枚举
85
86| 名称 | 描述 |
87| -------- | -------- |
88| [OH_CaptureMode](#oh_capturemode-1) {<br/>OH_CAPTURE_HOME_SCREEN = 0,<br/>OH_CAPTURE_SPECIFIED_SCREEN = 1,<br/>OH_CAPTURE_SPECIFIED_WINDOW = 2,<br/>OH_CAPTURE_INVAILD = -1<br/>} | 枚举,表示屏幕录制的不同模式。 |
89| [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype-1) {<br/>OH_SOURCE_INVALID = -1,<br/>OH_SOURCE_DEFAULT = 0,<br/>OH_MIC = 1,<br/>OH_ALL_PLAYBACK = 2,<br/>OH_APP_PLAYBACK = 3<br/>} | 枚举,表示屏幕录制时的音频源类型。 |
90| [OH_AudioCodecFormat](#oh_audiocodecformat-1) {<br/>OH_AUDIO_DEFAULT = 0,<br/>OH_AAC_LC = 3,<br/>OH_AUDIO_CODEC_FORMAT_BUTT<br/>} | 枚举,表示音频编码格式。 |
91| [OH_VideoCodecFormat](#oh_videocodecformat-1) {<br/>OH_VIDEO_DEFAULT = 0,<br/>OH_H264 = 2,<br/>OH_H265 = 4,<br/>OH_MPEG4 = 6,<br/>OH_VP8 = 8,<br/>OH_VP9 = 10,<br/>OH_VIDEO_CODEC_FORMAT_BUTT<br/>} | 枚举,表示视频编码格式。 |
92| [OH_DataType](#oh_datatype-1) {<br/>OH_ORIGINAL_STREAM = 0,<br/>OH_ENCODED_STREAM = 1,<br/>OH_CAPTURE_FILE = 2,<br/>OH_INVAILD = -1<br/>} | 枚举,表示屏幕录制流的数据格式。 |
93| [OH_VideoSourceType](#oh_videosourcetype-1) {<br/>OH_VIDEO_SOURCE_SURFACE_YUV = 0,<br/>OH_VIDEO_SOURCE_SURFACE_ES,<br/>OH_VIDEO_SOURCE_SURFACE_RGBA,<br/>OH_VIDEO_SOURCE_BUTT<br/>} | 枚举,表示视频源格式。当前仅支持RGBA格式。 |
94| [OH_ContainerFormatType](#oh_containerformattype) {<br/>CFT_MPEG_4A = 0,<br/>CFT_MPEG_4 = 1<br/>} | 枚举,表示屏幕录制生成的文件类型。 |
95| [OH_AVScreenCaptureStateCode](#oh_avscreencapturestatecode-1) {<br/>OH_SCREEN_CAPTURE_STATE_STARTED = 0,<br/>OH_SCREEN_CAPTURE_STATE_CANCELED = 1,<br/>OH_SCREEN_CAPTURE_STATE_STOPPED_BY_USER = 2,<br/>OH_SCREEN_CAPTURE_STATE_INTERRUPTED_BY_OTHER = 3,<br/>OH_SCREEN_CAPTURE_STATE_STOPPED_BY_CALL = 4,<br/>OH_SCREEN_CAPTURE_STATE_MIC_UNAVAILABLE = 5,<br/>OH_SCREEN_CAPTURE_STATE_MIC_MUTED_BY_USER = 6,<br/>OH_SCREEN_CAPTURE_STATE_MIC_UNMUTED_BY_USER = 7,<br/>OH_SCREEN_CAPTURE_STATE_ENTER_PRIVATE_SCENE = 8,<br/>OH_SCREEN_CAPTURE_STATE_EXIT_PRIVATE_SCENE = 9<br/>OH_SCREEN_CAPTURE_STATE_STOPPED_BY_USER_SWITCHES = 10<br/>} | 枚举,表示状态码。 |
96| [OH_AVScreenCaptureBufferType](#oh_avscreencapturebuffertype-1) {<br/>OH_SCREEN_CAPTURE_BUFFERTYPE_VIDEO = 0,<br/>OH_SCREEN_CAPTURE_BUFFERTYPE_AUDIO_INNER = 1,<br/>OH_SCREEN_CAPTURE_BUFFERTYPE_AUDIO_MIC = 2<br/>} | 枚举,表示buffer类型。 |
97| [OH_AVScreenCaptureFilterableAudioContent](#oh_avscreencapturefilterableaudiocontent-1) {<br/>OH_SCREEN_CAPTURE_NOTIFICATION_AUDIO = 0, <br/>OH_SCREEN_CAPTURE_CURRENT_APP_AUDIO = 1 <br/>} | 枚举,表示可过滤的音频类型。  |
98| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode-1) {<br/>AV_SCREEN_CAPTURE_ERR_BASE = 0,<br/>AV_SCREEN_CAPTURE_ERR_OK = AV_SCREEN_CAPTURE_ERR_BASE,<br/>AV_SCREEN_CAPTURE_ERR_NO_MEMORY = AV_SCREEN_CAPTURE_ERR_BASE + 1,<br/>AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT = AV_SCREEN_CAPTURE_ERR_BASE + 2,<br/>AV_SCREEN_CAPTURE_ERR_INVALID_VAL = AV_SCREEN_CAPTURE_ERR_BASE + 3,<br/>AV_SCREEN_CAPTURE_ERR_IO = AV_SCREEN_CAPTURE_ERR_BASE + 4,<br/>AV_SCREEN_CAPTURE_ERR_TIMEOUT = AV_SCREEN_CAPTURE_ERR_BASE + 5,<br/>AV_SCREEN_CAPTURE_ERR_UNKNOWN = AV_SCREEN_CAPTURE_ERR_BASE + 6,<br/>AV_SCREEN_CAPTURE_ERR_SERVICE_DIED = AV_SCREEN_CAPTURE_ERR_BASE + 7,<br/>AV_SCREEN_CAPTURE_ERR_INVALID_STATE = AV_SCREEN_CAPTURE_ERR_BASE + 8,<br/>AV_SCREEN_CAPTURE_ERR_UNSUPPORT = AV_SCREEN_CAPTURE_ERR_BASE + 9,<br/>AV_SCREEN_CAPTURE_ERR_EXTEND_START = AV_SCREEN_CAPTURE_ERR_BASE + 100<br/>} | 屏幕录制过程中产生的不同结果码。 |
99
100
101### 函数
102
103| 名称 | 描述 |
104| -------- | -------- |
105| struct [OH_AVScreenCapture](#oh_avscreencapture) \* [OH_AVScreenCapture_Create](#oh_avscreencapture_create) (void) | 创建OH_AVScreenCapture。  |
106| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_Init](#oh_avscreencapture_init) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, [OH_AVScreenCaptureConfig](_o_h___a_v_screen_capture_config.md) config) | 初始化OH_AVScreenCapture相关参数,包括下发的音频麦克风采样相关参数(可选),音频内录采样相关参数,视频分辨率相关参数。  |
107| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_StartScreenCapture](#oh_avscreencapture_startscreencapture) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 开始录屏,采集原始码流。  |
108| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_StartScreenCaptureWithSurface](#oh_avscreencapture_startscreencapturewithsurface) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, OHNativeWindow \*window) | 使用Surface模式录屏。  |
109| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_StopScreenCapture](#oh_avscreencapture_stopscreencapture) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 结束录屏,与OH_AVScreenCapture_StartScreenCapture配合使用。  |
110| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_StartScreenRecording](#oh_avscreencapture_startscreenrecording) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 启动录屏,调用此接口,可将录屏文件保存。  |
111| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_StopScreenRecording](#oh_avscreencapture_stopscreenrecording) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 停止录屏,与OH_AVScreenCapture_StartScreenRecording配合使用。 |
112| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_AcquireAudioBuffer](#oh_avscreencapture_acquireaudiobuffer) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, [OH_AudioBuffer](_o_h___audio_buffer.md) \*\*audiobuffer, [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) type) | 获取音频buffer,应用在调用时,需要对audiobuffer分配对应结构体大小的内存,否则会影响音频buffer的获取。  |
113| [OH_NativeBuffer](#oh_nativebuffer) \* [OH_AVScreenCapture_AcquireVideoBuffer](#oh_avscreencapture_acquirevideobuffer) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, int32_t \*fence, int64_t \*timestamp, struct [OH_Rect](_o_h___rect.md) \*region) | 获取视频buffer,应用在调用时,通过此接口来获取到视频的buffer以及时间戳等信息。  |
114| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_ReleaseAudioBuffer](#oh_avscreencapture_releaseaudiobuffer) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) type) | 根据音频类型释放buffer。  |
115| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_ReleaseVideoBuffer](#oh_avscreencapture_releasevideobuffer) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 根据视频类型释放buffer。当某一帧视频buffer使用完成后,调用此接口进行释放对应的视频buffer。  |
116| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_SetCallback](#oh_avscreencapture_setcallback) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, struct [OH_AVScreenCaptureCallback](_o_h___a_v_screen_capture_callback.md) callback) | 设置监听接口,通过设置监听,可以监听到调用过程中的错误信息,以及是否有可用的视频buffer和音频buffer。  |
117| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_Release](#oh_avscreencapture_release) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture) | 释放创建的OH_AVScreenCapture实例,对应OH_AVScreenCapture_Create。  |
118| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_SetMicrophoneEnabled](#oh_avscreencapture_setmicrophoneenabled) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, bool isMicrophone) | 设置麦克风开关。  |
119| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_SetStateCallback](#oh_avscreencapture_setstatecallback) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, [OH_AVScreenCapture_OnStateChange](#oh_avscreencapture_onstatechange) callback, void \*userData) | 设置状态变更处理回调方法,在开始录制前调用。  |
120| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_SetDataCallback](#oh_avscreencapture_setdatacallback) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, [OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable) callback, void \*userData) | 设置数据处理回调方法,在开始录制前调用。  |
121| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_SetErrorCallback](#oh_avscreencapture_seterrorcallback) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, [OH_AVScreenCapture_OnError](#oh_avscreencapture_onerror) callback, void \*userData) | 设置错误处理回调方法,在开始录制前调用。  |
122| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_SetCanvasRotation](#oh_avscreencapture_setcanvasrotation) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, bool canvasRotation) | 设置录屏屏幕数据旋转。  |
123| struct [OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter) \* [OH_AVScreenCapture_CreateContentFilter](#oh_avscreencapture_createcontentfilter) (void) | 创建ContentFilter。  |
124| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_ReleaseContentFilter](#oh_avscreencapture_releasecontentfilter) (struct [OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter) \*filter) | 释放ContentFilter。  |
125| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_ContentFilter_AddAudioContent](#oh_avscreencapture_contentfilter_addaudiocontent) (struct [OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter) \*filter, [OH_AVScreenCaptureFilterableAudioContent](#oh_avscreencapturefilterableaudiocontent) content) | 向ContentFilter实例添加可被过滤的声音类型。  |
126| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_ExcludeContent](#oh_avscreencapture_excludecontent) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, struct [OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter) \*filter) | 向OH_AVScreenCapture实例设置内容过滤器ContentFilter。  |
127| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_ContentFilter_AddWindowContent](#oh_avscreencapture_contentfilter_addwindowcontent) (struct [OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter) \*filter, int32_t \*windowIDs, int32_t windowCount) | 向ContentFilter实例添加可被过滤的窗口ID列表  |
128| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_ResizeCanvas](#oh_avscreencapture_resizecanvas) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, int32_t width, int32_t height) | 调整屏幕的分辨率  |
129| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_SkipPrivacyMode](#oh_avscreencapture_skipprivacymode) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, int32_t \*windowIDs, int32_t windowCount) | 录屏时豁免隐私窗口  |
130| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) [OH_AVScreenCapture_SetMaxVideoFrameRate](#oh_avscreencapture_setmaxvideoframerate) (struct [OH_AVScreenCapture](#oh_avscreencapture) \*capture, int32_t frameRate) | 设置录屏的最大帧率  |
131
132
133## 类型定义说明
134
135
136### OH_AudioBuffer
137
138```
139typedef struct OH_AudioBuffer OH_AudioBuffer
140```
141**描述**
142定义了音频数据的大小,类型,时间戳等配置信息。
143
144**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
145
146**起始版本:** 10
147
148
149### OH_AudioCaptureInfo
150
151```
152typedef struct OH_AudioCaptureInfo OH_AudioCaptureInfo
153```
154**描述**
155音频采样信息。
156
157当audioSampleRate和audioChannels同时为0时,忽略该类型音频相关参数,不录制该类型音频数据。
158
159**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
160
161**起始版本:** 10
162
163
164### OH_AudioCaptureSourceType
165
166```
167typedef enum OH_AudioCaptureSourceType OH_AudioCaptureSourceType
168```
169**描述**
170枚举,表示屏幕录制时的音频源类型。
171
172**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
173
174**起始版本:** 10
175
176
177### OH_AudioCodecFormat
178
179```
180typedef enum OH_AudioCodecFormat OH_AudioCodecFormat
181```
182**描述**
183枚举,表示音频编码格式。
184
185**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
186
187**起始版本:** 10
188
189
190### OH_AudioEncInfo
191
192```
193typedef struct OH_AudioEncInfo OH_AudioEncInfo
194```
195**描述**
196音频编码信息。
197
198**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
199
200**起始版本:** 10
201
202
203### OH_AudioInfo
204
205```
206typedef struct OH_AudioInfo OH_AudioInfo
207```
208**描述**
209音频信息。
210
211同时采集音频麦克风和音频内录数据时,两路音频的audioSampleRate和audioChannels采样参数需要相同。
212
213**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
214
215**起始版本:** 10
216
217
218### OH_AVSCREEN_CAPTURE_ErrCode
219
220```
221typedef enum OH_AVSCREEN_CAPTURE_ErrCode OH_AVSCREEN_CAPTURE_ErrCode
222```
223**描述**
224屏幕录制过程中产生的不同结果码。
225
226**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
227
228**起始版本:** 10
229
230
231### OH_AVScreenCapture
232
233```
234typedef struct OH_AVScreenCaptureOH_AVScreenCapture
235```
236**描述**
237通过OH_AVScreenCapture可以获取视频与音频的原始码流。
238
239**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
240
241**起始版本:** 10
242
243
244### OH_AVScreenCapture_ContentFilter
245
246```
247typedef struct OH_AVScreenCapture_ContentFilterOH_AVScreenCapture_ContentFilter
248```
249**描述**
250通过OH_AVScreenCapture_ContentFilter过滤音视频内容。
251
252**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
253
254**起始版本:** 12
255
256
257### OH_AVScreenCapture_OnBufferAvailable
258
259```
260typedef void(* OH_AVScreenCapture_OnBufferAvailable) (OH_AVScreenCapture *capture, OH_AVBuffer *buffer, OH_AVScreenCaptureBufferType bufferType, int64_t timestamp, void *userData)
261```
262**描述**
263当OH_AVScreenCapture实例操作期间音频或视频缓存区可用时,将调用该函数指针。
264
265**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
266
267**起始版本:** 12
268
269**参数:**
270
271| 名称 | 描述 |
272| -------- | -------- |
273| capture | 指向OH_AVScreenCapture实例的指针。  |
274| buffer | 指向OH_AVBuffer缓存区实例的指针,该回调方法执行结束返回后,数据缓存区不再有效。  |
275| bufferType | 可用缓冲区的数据类型。  |
276| timestamp | 时间戳, 单位纳秒。  |
277| userData | 指向应用设置该回调处理方法时提供的自定义数据的指针。 |
278
279
280### OH_AVScreenCapture_OnError
281
282```
283typedef void(* OH_AVScreenCapture_OnError) (OH_AVScreenCapture *capture, int32_t errorCode, void *userData)
284```
285**描述**
286当OH_AVScreenCapture实例操作期间发生错误时,将调用函数指针。
287
288**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
289
290**起始版本:** 12
291
292**参数:**
293
294| 名称 | 描述 |
295| -------- | -------- |
296| capture | 指向OH_AVScreenCapture实例的指针。  |
297| errorCode | 指定错误码。  |
298| userData | 指向应用设置该回调处理方法时提供的自定义数据的指针。 |
299
300
301### OH_AVScreenCapture_OnStateChange
302
303```
304typedef void(* OH_AVScreenCapture_OnStateChange) (struct OH_AVScreenCapture *capture, OH_AVScreenCaptureStateCode stateCode, void *userData)
305```
306**描述**
307当OH_AVScreenCapture实例操作期间发生状态变更时,将调用函数指针。
308
309**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
310
311**起始版本:** 12
312
313**参数:**
314
315| 名称 | 描述 |
316| -------- | -------- |
317| capture | 指向OH_AVScreenCapture实例的指针。  |
318| stateCode | 指定状态码。  |
319| userData | 指向应用设置该回调处理方法时提供的自定义数据的指针。 |
320
321
322### OH_AVScreenCaptureBufferType
323
324```
325typedef enum OH_AVScreenCaptureBufferTypeOH_AVScreenCaptureBufferType
326```
327**描述**
328枚举,表示buffer类型。
329
330**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
331
332**起始版本:** 12
333
334
335### OH_AVScreenCaptureCallback
336
337```
338typedef struct OH_AVScreenCaptureCallback OH_AVScreenCaptureCallback
339```
340**描述**
341OH_AVScreenCapture中所有异步回调函数指针的集合。将该结构体的实例注册到OH_AVScreenCapture实例中, 并处理回调上报的信息,以保证OH_AVScreenCapture的正常运行。
342
343**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
344
345**起始版本:** 10
346
347**废弃版本:** 12
348
349**替代接口:**
350
351[OH_AVScreenCapture_OnError](#oh_avscreencapture_onerror) [OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable)
352
353**参数:**
354
355| 名称 | 描述 |
356| -------- | -------- |
357| onError | 监控录屏调用操作错误,请参见[OH_AVScreenCaptureOnError](#oh_avscreencaptureonerror)。 |
358| onAudioBufferAvailable | 监控音频码流是否有数据产生,请参见[OH_AVScreenCaptureOnAudioBufferAvailable](#oh_avscreencaptureonaudiobufferavailable)。 |
359| onVideoBufferAvailable | 监控视频码流是否有数据产生,请参见[OH_AVScreenCaptureOnVideoBufferAvailable](#oh_avscreencaptureonvideobufferavailable)。 |
360
361
362### OH_AVScreenCaptureConfig
363
364```
365typedef struct OH_AVScreenCaptureConfig OH_AVScreenCaptureConfig
366```
367**描述**
368录屏配置信息
369
370**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
371
372**起始版本:** 10
373
374
375### OH_AVScreenCaptureFilterableAudioContent
376
377```
378typedef enum OH_AVScreenCaptureFilterableAudioContent OH_AVScreenCaptureFilterableAudioContent
379```
380**描述**
381枚举,表示可过滤的音频类型。
382
383**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
384
385**起始版本:** 12
386
387
388### OH_AVScreenCaptureOnAudioBufferAvailable
389
390```
391typedef void(* OH_AVScreenCaptureOnAudioBufferAvailable) (OH_AVScreenCapture *capture, bool isReady, OH_AudioCaptureSourceType type)
392```
393**描述**
394当OH_AVScreenCapture操作期间音频缓冲区可用时,将调用函数指针。
395
396**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
397
398**起始版本:** 10
399
400**废弃版本:** 12
401
402**替代接口:**[OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable)
403
404**参数:**
405
406| 名称 | 描述 |
407| -------- | -------- |
408| capture | 指向OH_AVScreenCapture实例的指针。  |
409| isReady | 音频缓冲区是否可用。  |
410| type | 音频源类型。 |
411
412
413### OH_AVScreenCaptureOnError
414
415```
416typedef void(* OH_AVScreenCaptureOnError) (OH_AVScreenCapture *capture, int32_t errorCode)
417```
418**描述**
419当OH_AVScreenCapture实例运行出错时,将调用函数指针。
420
421**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
422
423**起始版本:** 10
424
425**废弃版本:** 12
426
427**替代接口:**[OH_AVScreenCapture_OnError](#oh_avscreencapture_onerror)
428
429**参数:**
430
431| 名称 | 描述 |
432| -------- | -------- |
433| capture | 指向OH_AVScreenCapture实例的指针。  |
434| errorCode | 指定错误码。 |
435
436
437### OH_AVScreenCaptureOnVideoBufferAvailable
438
439```
440typedef void(* OH_AVScreenCaptureOnVideoBufferAvailable) (OH_AVScreenCapture *capture, bool isReady)
441```
442**描述**
443当OH_AVScreenCapture操作期间视频缓冲区可用时,将调用函数指针。
444
445**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
446
447**起始版本:** 10
448
449**废弃版本:** 12
450
451**替代接口:**[OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable)
452
453**参数:**
454
455| 名称 | 描述 |
456| -------- | -------- |
457| capture | 指向OH_AVScreenCapture实例的指针。  |
458| isReady | 视频缓冲区是否可用。 |
459
460
461### OH_AVScreenCaptureStateCode
462
463```
464typedef enum OH_AVScreenCaptureStateCode OH_AVScreenCaptureStateCode
465```
466**描述**
467枚举,表示状态码。
468
469**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
470
471**起始版本:** 12
472
473
474### OH_CaptureMode
475
476```
477typedef enum OH_CaptureMode OH_CaptureMode
478```
479**描述**
480枚举,表示屏幕录制的不同模式。
481
482**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
483
484**起始版本:** 10
485
486
487### OH_ContainerFormatType
488
489```
490typedef enum OH_ContainerFormatType OH_ContainerFormatType
491```
492**描述**
493枚举,表示屏幕录制生成的文件类型。
494
495**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
496
497**起始版本:** 10
498
499
500### OH_DataType
501
502```
503typedef enum OH_DataType OH_DataType
504```
505**描述**
506枚举,表示屏幕录制流的数据格式。
507
508**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
509
510**起始版本:** 10
511
512
513### OH_NativeBuffer
514
515```
516typedef struct OH_NativeBuffer OH_NativeBuffer
517```
518**描述**
519提供录屏的视频原始码流类。
520
521**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
522
523**起始版本:** 10
524
525
526### OH_RecorderInfo
527
528```
529typedef struct OH_RecorderInfo OH_RecorderInfo
530```
531**描述**
532录制文件信息。
533
534**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
535
536**起始版本:** 10
537
538
539### OH_Rect
540
541```
542typedef struct OH_Rect OH_Rect
543```
544**描述**
545定义录屏界面的宽高以及画面信息。
546
547**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
548
549**起始版本:** 10
550
551
552### OH_VideoCaptureInfo
553
554```
555typedef struct OH_VideoCaptureInfo OH_VideoCaptureInfo
556```
557**描述**
558视频录制信息。
559
560当videoFrameWidth和videoFrameHeight同时为0时,忽略视频相关参数不录制屏幕数据。
561
562**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
563
564**起始版本:** 10
565
566
567### OH_VideoCodecFormat
568
569```
570typedef enum OH_VideoCodecFormat OH_VideoCodecFormat
571```
572**描述**
573枚举,表示视频编码格式。
574
575**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
576
577**起始版本:** 10
578
579
580### OH_VideoEncInfo
581
582```
583typedef struct OH_VideoEncInfo OH_VideoEncInfo
584```
585**描述**
586视频编码参数。
587
588**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
589
590**起始版本:** 10
591
592
593### OH_VideoInfo
594
595```
596typedef struct OH_VideoInfo OH_VideoInfo
597```
598**描述**
599视频信息。
600
601**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
602
603**起始版本:** 10
604
605
606### OH_VideoSourceType
607
608```
609typedef enum OH_VideoSourceType OH_VideoSourceType
610```
611**描述**
612枚举,表示视频源格式。当前仅支持RGBA格式。
613
614**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
615
616**起始版本:** 10
617
618
619## 枚举类型说明
620
621
622### OH_AudioCaptureSourceType
623
624```
625enum OH_AudioCaptureSourceType
626```
627**描述**
628枚举,表示屏幕录制时的音频源类型。
629
630**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
631
632**起始版本:** 10
633
634| 枚举值 | 描述 |
635| -------- | -------- |
636| OH_SOURCE_INVALID  | 无效音频源。   |
637| OH_SOURCE_DEFAULT  | 默认音频源,默认为MIC。   |
638| OH_MIC  | 麦克风录制的外部音频流。   |
639| OH_ALL_PLAYBACK  | 系统播放的所有内部音频流。   |
640| OH_APP_PLAYBACK  | 指定应用播放的内部音频流。   |
641
642
643### OH_AudioCodecFormat
644
645```
646enum OH_AudioCodecFormat
647```
648**描述**
649枚举,表示音频编码格式。
650
651**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
652
653**起始版本:** 10
654
655| 枚举值 | 描述 |
656| -------- | -------- |
657| OH_AUDIO_DEFAULT  | 默认音频编码,默认为AAC_LC。   |
658| OH_AAC_LC  | AAC_LC音频编码。   |
659| OH_AUDIO_CODEC_FORMAT_BUTT  | 无效格式。   |
660
661
662### OH_AVSCREEN_CAPTURE_ErrCode
663
664```
665enum OH_AVSCREEN_CAPTURE_ErrCode
666```
667
668**描述**
669
670屏幕录制过程中产生的不同结果码。
671
672**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
673
674**起始版本:** 10
675
676| 枚举值 | 描述 |
677| -------- | -------- |
678| AV_SCREEN_CAPTURE_ERR_BASE | 接口调用错误返回的基础值。 |
679| AV_SCREEN_CAPTURE_ERR_OK | 操作成功。 |
680| AV_SCREEN_CAPTURE_ERR_NO_MEMORY | 内存不足。 |
681| AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT | 不允许操作。 |
682| AV_SCREEN_CAPTURE_ERR_INVALID_VAL | 无效参数。 |
683| AV_SCREEN_CAPTURE_ERR_IO | 输入输出流异常。 |
684| AV_SCREEN_CAPTURE_ERR_TIMEOUT | 网络超时。 |
685| AV_SCREEN_CAPTURE_ERR_UNKNOWN | 未知错误。 |
686| AV_SCREEN_CAPTURE_ERR_SERVICE_DIED | 媒体服务已终止。 |
687| AV_SCREEN_CAPTURE_ERR_INVALID_STATE | 当前状态不支持此操作。 |
688| AV_SCREEN_CAPTURE_ERR_UNSUPPORT | 不支持的接口。 |
689| AV_SCREEN_CAPTURE_ERR_EXTEND_START | 预期之外的错误。 |
690
691
692### OH_AVScreenCaptureBufferType
693
694```
695enum OH_AVScreenCaptureBufferType
696```
697**描述**
698枚举,表示buffer类型。
699
700**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
701
702**起始版本:** 12
703
704| 枚举值 | 描述 |
705| -------- | -------- |
706| OH_SCREEN_CAPTURE_BUFFERTYPE_VIDEO  | 视频数据。   |
707| OH_SCREEN_CAPTURE_BUFFERTYPE_AUDIO_INNER  | 内录音频数据。   |
708| OH_SCREEN_CAPTURE_BUFFERTYPE_AUDIO_MIC  | 麦克风音频数据。   |
709
710
711### OH_AVScreenCaptureFilterableAudioContent
712
713```
714enum OH_AVScreenCaptureFilterableAudioContent
715```
716**描述**
717枚举,表示可过滤的音频类型。
718
719**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
720
721**起始版本:** 12
722
723| 枚举值 | 描述 |
724| -------- | -------- |
725| OH_SCREEN_CAPTURE_NOTIFICATION_AUDIO  | 通知音。   |
726| OH_SCREEN_CAPTURE_CURRENT_APP_AUDIO  | 应用自身声音。   |
727
728
729### OH_AVScreenCaptureStateCode
730
731```
732enum OH_AVScreenCaptureStateCode
733```
734**描述**
735枚举,表示状态码。
736
737**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
738
739**起始版本:** 12
740
741| 枚举值 | 描述 |
742| -------- | -------- |
743| OH_SCREEN_CAPTURE_STATE_STARTED  | 已开始录屏。   |
744| OH_SCREEN_CAPTURE_STATE_CANCELED  | 已取消录屏。   |
745| OH_SCREEN_CAPTURE_STATE_STOPPED_BY_USER  | 已停止录屏。   |
746| OH_SCREEN_CAPTURE_STATE_INTERRUPTED_BY_OTHER  | 录屏被其他录屏中断。   |
747| OH_SCREEN_CAPTURE_STATE_STOPPED_BY_CALL  | 录屏被通话中断。   |
748| OH_SCREEN_CAPTURE_STATE_MIC_UNAVAILABLE  | 麦克风不可用。   |
749| OH_SCREEN_CAPTURE_STATE_MIC_MUTED_BY_USER  | 麦克风被静音。   |
750| OH_SCREEN_CAPTURE_STATE_MIC_UNMUTED_BY_USER  | 麦克风被取消静音。    |
751| OH_SCREEN_CAPTURE_STATE_ENTER_PRIVATE_SCENE  | 进入隐私弹窗。    |
752| OH_SCREEN_CAPTURE_STATE_EXIT_PRIVATE_SCENE  | 隐私弹窗退出。    |
753| OH_SCREEN_CAPTURE_STATE_STOPPED_BY_USER_SWITCHES   | 系统用户切换,录屏中断。 |
754
755
756### OH_CaptureMode
757
758```
759enum OH_CaptureMode
760```
761**描述**
762枚举,表示屏幕录制的不同模式。
763
764**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
765
766**起始版本:** 10
767
768| 枚举值 | 描述 |
769| -------- | -------- |
770| OH_CAPTURE_HOME_SCREEN  | 录制主屏幕。   |
771| OH_CAPTURE_SPECIFIED_SCREEN  | 录制指定屏幕。   |
772| OH_CAPTURE_SPECIFIED_WINDOW  | 录制指定窗口。   |
773| OH_CAPTURE_INVAILD  | 无效模式。   |
774
775
776### OH_ContainerFormatType
777
778```
779enum OH_ContainerFormatType
780```
781**描述**
782枚举,表示屏幕录制生成的文件类型。
783
784**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
785
786**起始版本:** 10
787
788| 枚举值 | 描述 |
789| -------- | -------- |
790| CFT_MPEG_4A  | 音频格式 m4a。   |
791| CFT_MPEG_4  | 视频格式 mp4。   |
792
793
794### OH_DataType
795
796```
797enum OH_DataType
798```
799**描述**
800枚举,表示屏幕录制流的数据格式。
801
802**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
803
804**起始版本:** 10
805
806| 枚举值 | 描述 |
807| -------- | -------- |
808| OH_ORIGINAL_STREAM  | 原始流格式,如YUV/RGBA/PCM等。   |
809| OH_ENCODED_STREAM  | 编码格式,如H264/AAC等。 当前版本暂不支持。   |
810| OH_CAPTURE_FILE  | 保存文件格式,支持mp4。   |
811| OH_INVAILD  | 无效格式。   |
812
813
814### OH_VideoCodecFormat
815
816```
817enum OH_VideoCodecFormat
818```
819**描述**
820枚举,表示视频编码格式。
821
822**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
823
824**起始版本:** 10
825
826| 枚举值 | 描述 |
827| -------- | -------- |
828| OH_VIDEO_DEFAULT | 默认视频编码,默认为H.264。 |
829| OH_H264 | H.264。 |
830| OH_H265 | H.265/HEVC。 |
831| OH_MPEG4 | MPEG4。 |
832| OH_VP8 | VP8。 |
833| OH_VP9 | VP9。 |
834| OH_VIDEO_CODEC_FORMAT_BUTT | 无效格式。 |
835
836
837### OH_VideoSourceType
838
839```
840enum OH_VideoSourceType
841```
842**描述**
843枚举,表示视频源格式。当前仅支持RGBA格式。
844
845**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
846
847**起始版本:** 10
848
849| 枚举值 | 描述 |
850| -------- | -------- |
851| OH_VIDEO_SOURCE_SURFACE_YUV  | YUV格式。当前版本暂不支持。   |
852| OH_VIDEO_SOURCE_SURFACE_ES  | raw格式。当前版本暂不支持。  |
853| OH_VIDEO_SOURCE_SURFACE_RGBA  | RGBA格式。   |
854| OH_VIDEO_SOURCE_BUTT  | 无效格式。   |
855
856
857## 函数说明
858
859
860### OH_AVScreenCapture_AcquireAudioBuffer()
861
862```
863OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_AcquireAudioBuffer (struct OH_AVScreenCapture * capture, OH_AudioBuffer ** audiobuffer, OH_AudioCaptureSourceType type )
864```
865**描述**
866获取音频buffer,应用在调用时,需要对audiobuffer分配对应结构体大小的内存,否则会影响音频buffer的获取。
867
868**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
869
870**起始版本:** 10
871
872**废弃版本:** 12
873
874**替代接口:**[OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable)
875
876**参数:**
877
878| 名称 | 描述 |
879| -------- | -------- |
880| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
881| audiobuffer | 保存音频buffer的结构体,通过该结构体获取到音频buffer以及buffer的时间戳等信息。 |
882| type | 音频buffer的类型,区分是麦克风录制的外部流还是系统内部播放音频的内录流,详情请参阅[OH_AudioCaptureSourceType](#oh_audiocapturesourcetype)。 |
883
884**返回:**
885
886函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
887
888AV_SCREEN_CAPTURE_ERR_OK:执行成功。
889
890AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数audiobuffer为空指针。
891
892AV_SCREEN_CAPTURE_ERR_NO_MEMORY:内存不足,audiobuffer分配失败。
893
894AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置隐私权限启用失败或获取音频buffer失败。
895
896
897
898### OH_AVScreenCapture_AcquireVideoBuffer()
899
900```
901OH_NativeBuffer* OH_AVScreenCapture_AcquireVideoBuffer (struct OH_AVScreenCapture * capture, int32_t * fence, int64_t * timestamp, struct OH_Rect * region )
902```
903**描述**
904获取视频buffer,应用在调用时,通过此接口来获取到视频的buffer以及时间戳等信息。 buffer使用完成后,调用[OH_AVScreenCapture_ReleaseVideoBuffer](#oh_avscreencapture_releasevideobuffer)接口进行视频buffer的释放。
905
906**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
907
908**起始版本:** 10
909
910**废弃版本:** 12
911
912**替代接口:**[OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable)
913
914**参数:**
915
916| 名称 | 描述 |
917| -------- | -------- |
918| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。  |
919| fence | 用于同步的显示相关参数信息。  |
920| timestamp | 视频帧的时间戳。  |
921| region | 视频显示相关的坐标信息。  |
922
923**返回:**
924
925执行成功返回OH_NativeBuffer对象,通过OH_NativeBuffer对象相关接口可以获取到视频buffer和分辨率等信息参数。
926
927
928### OH_AVScreenCapture_ContentFilter_AddAudioContent()
929
930```
931OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ContentFilter_AddAudioContent (struct OH_AVScreenCapture_ContentFilter * filter, OH_AVScreenCaptureFilterableAudioContent content )
932```
933**描述**
934向ContentFilter实例添加可被过滤的声音类型。
935
936**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
937
938**起始版本:** 12
939
940**参数:**
941
942| 名称 | 描述 |
943| -------- | -------- |
944| filter | 指向[OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter)实例的指针。 |
945| content | [OH_AVScreenCaptureFilterableAudioContent](#oh_avscreencapturefilterableaudiocontent)实例。 |
946
947**返回:**
948
949函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
950
951AV_SCREEN_CAPTURE_ERR_OK:执行成功。
952
953AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数filter为空指针或输入参数content无效。
954
955
956### OH_AVScreenCapture_ContentFilter_AddWindowContent()
957
958```
959OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ContentFilter_AddWindowContent (struct OH_AVScreenCapture_ContentFilter *filter, int32_t *windowIDs, int32_t windowCount)
960```
961**描述**
962向ContentFilter实例添加可被过滤的窗口ID列表。
963
964**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
965
966**起始版本:** 12
967
968**参数:**
969
970| 名称 | 描述 |
971| -------- | -------- |
972| filter | 指向OH_AVScreenCapture_ContentFilter实例的指针。  |
973| windowIDs | 指向窗口ID的指针。  |
974| windowCount | 窗口ID列表的长度。  |
975
976**返回:**
977
978执行成功返回AV_SCREEN_CAPTURE_ERR_OK,否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode-1)。
979
980
981### OH_AVScreenCapture_Create()
982
983```
984struct OH_AVScreenCapture* OH_AVScreenCapture_Create (void )
985```
986**描述**
987实例化对象,创建OH_AVScreenCapture。可以通过调用[OH_AVScreenCapture_Release](#oh_avscreencapture_release)释放实例。
988
989**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
990
991**起始版本:** 10
992
993**返回:**
994
995返回一个指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。
996
997
998### OH_AVScreenCapture_CreateContentFilter()
999
1000```
1001struct OH_AVScreenCapture_ContentFilter* OH_AVScreenCapture_CreateContentFilter (void )
1002```
1003**描述**
1004创建ContentFilter。
1005
1006**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1007
1008**起始版本:** 12
1009
1010**返回:**
1011
1012执行成功返回[OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter)实例,否则返回空指针。
1013
1014
1015### OH_AVScreenCapture_ExcludeContent()
1016
1017```
1018OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ExcludeContent (struct OH_AVScreenCapture * capture, struct OH_AVScreenCapture_ContentFilter * filter )
1019```
1020**描述**
1021向OH_AVScreenCapture实例设置内容过滤器ContentFilter。
1022
1023**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1024
1025**起始版本:** 12
1026
1027**参数:**
1028
1029| 名称 | 描述 |
1030| -------- | -------- |
1031| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1032| filter | 指向[OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter)实例的指针。 |
1033
1034**返回:**
1035
1036函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1037
1038AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1039
1040AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数filter为空指针。
1041
1042AV_SCREEN_CAPTURE_ERR_UNSUPPORT:操作不支持,对于流,在启动时应该调用AudioCapturer接口生效;对于capture文件,在启动时应该调用Recorder接口生效。
1043
1044
1045### OH_AVScreenCapture_Init()
1046
1047```
1048OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Init (struct OH_AVScreenCapture * capture, OH_AVScreenCaptureConfig config )
1049```
1050**描述**
1051初始化[OH_AVScreenCapture](#oh_avscreencapture)相关参数,包括下发的音频麦克风采样相关参数(可选),音频内录采样相关参数,视频分辨率相关参数。
1052
1053录屏存文件场景,应用需要保证视频编码参数、视频采样参数、音频编码参数、音频内录采样参数均合法,音频麦克风采样参数合法(可选)。
1054
1055录屏出码流场景,应用需要保证音频内录采样参数、视频采样参数至少一个合法,音频麦克风采样参数合法(可选)。
1056
1057由于结构体变量在初始化时不会对成员进行初始化,应用必须根据使用场景正确设置各项参数。建议应用先将
1058OH_AVScreenCaptureConfig结构体变量的所有内存字节均设置为0,然后再根据录屏场景设置合法参数。
1059
1060音频采样参数结构体[OH_AudioCaptureInfo](#oh_audiocaptureinfo),若audioSampleRate和audioChannels同时为0,
1061则录屏实例OH_AVScreenCapture将忽略该类型的音频参数,且不采集该类型的音频数据。
1062
1063视频采样参数结构体[OH_AudioCaptureInfo](#oh_audiocaptureinfo),若videoFrameWidth和videoFrameHeight同时为0,
1064则录屏实例OH_AVScreenCapture将忽略对应视频参数,且不采集屏幕数据。
1065
1066**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1067
1068**起始版本:** 10
1069
1070**参数:**
1071
1072| 名称 | 描述 |
1073| -------- | -------- |
1074| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1075| config | 录屏初始化相关参数。 |
1076
1077**返回:**
1078
1079函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1080
1081AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1082
1083AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1084
1085AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,初始化配置失败。
1086
1087
1088### OH_AVScreenCapture_Release()
1089
1090```
1091OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Release (struct OH_AVScreenCapture * capture)
1092```
1093**描述**
1094释放创建的OH_AVScreenCapture实例,对应[OH_AVScreenCapture_Create](#oh_avscreencapture_create)。
1095
1096**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1097
1098**起始版本:** 10
1099
1100**参数:**
1101
1102| 名称 | 描述 |
1103| -------- | -------- |
1104| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1105
1106**返回:**
1107
1108函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1109
1110AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1111
1112AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1113
1114AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,OH_AVScreenCapture实例释放失败。
1115
1116### OH_AVScreenCapture_ReleaseAudioBuffer()
1117
1118```
1119OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseAudioBuffer (struct OH_AVScreenCapture * capture, OH_AudioCaptureSourceType type )
1120```
1121**描述**
1122根据音频类型释放buffer。当某一帧音频buffer使用完成后,调用此接口进行释放对应的音频buffer。
1123
1124**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1125
1126**起始版本:** 10
1127
1128**废弃版本:** 12
1129
1130**替代接口:**[OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable)
1131
1132**参数:**
1133
1134| 名称 | 描述 |
1135| -------- | -------- |
1136| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1137| type | 音频buffer的类型,区分麦克风录制的外部流还是系统内部播放音频的内录流。 |
1138
1139**返回:**
1140
1141函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1142
1143AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1144
1145AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1146
1147AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,不允许用于已设置过DataCallback或释放音频buffer失败。
1148
1149
1150### OH_AVScreenCapture_ReleaseContentFilter()
1151
1152```
1153OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseContentFilter (struct OH_AVScreenCapture_ContentFilter * filter)
1154```
1155**描述**
1156释放ContentFilter。
1157
1158**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1159
1160**起始版本:** 12
1161
1162**参数:**
1163
1164| 名称 | 描述 |
1165| -------- | -------- |
1166| filter | 指向[OH_AVScreenCapture_ContentFilter](#oh_avscreencapture_contentfilter)实例的指针。 |
1167
1168**返回:**
1169
1170函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1171
1172AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1173
1174AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数filter为空指针。
1175
1176
1177### OH_AVScreenCapture_ReleaseVideoBuffer()
1178
1179```
1180OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseVideoBuffer (struct OH_AVScreenCapture * capture)
1181```
1182**描述**
1183根据视频类型释放buffer。当某一帧视频buffer使用完成后,调用此接口进行释放对应的视频buffer。
1184
1185**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1186
1187**起始版本:** 10
1188
1189**废弃版本:** 12
1190
1191**替代接口:**[OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable)
1192
1193**参数:**
1194
1195| 名称 | 描述 |
1196| -------- | -------- |
1197| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1198
1199**返回:**
1200
1201函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1202
1203AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1204
1205AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1206
1207AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,不允许用于已设置过DataCallback或释放视频buffer失败。
1208
1209
1210### OH_AVScreenCapture_SetCallback()
1211
1212```
1213OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCallback (struct OH_AVScreenCapture * capture, struct OH_AVScreenCaptureCallback callback )
1214```
1215**描述**
1216设置监听接口,通过设置监听,可以监听到调用过程中的错误信息,以及是否有可用的视频buffer和音频buffer。
1217
1218**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1219
1220**起始版本:** 10
1221
1222**废弃版本:** 12
1223
1224**替代接口: **[OH_AVScreenCapture_SetErrorCallback](#oh_avscreencapture_seterrorcallback) [OH_AVScreenCapture_SetDataCallback](#oh_avscreencapture_setdatacallback)
1225
1226**参数:**
1227
1228| 名称 | 描述 |
1229| -------- | -------- |
1230| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1231| callback | [OH_AVScreenCaptureCallback](_o_h___a_v_screen_capture_callback.md)的结构体,保存相关回调函数指针。 |
1232
1233**返回:**
1234
1235函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1236
1237AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1238
1239AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数callback为空指针。
1240
1241AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置监听接口失败。
1242
1243
1244### OH_AVScreenCapture_SetCanvasRotation()
1245
1246```
1247OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCanvasRotation (struct OH_AVScreenCapture * capture, bool canvasRotation )
1248```
1249**描述**
1250设置录屏屏幕数据旋转。
1251
1252调用该方法可以设置录屏屏幕数据是否旋转,当canvasRotation为true时,打开录屏屏幕数据旋转功能,录制的屏幕数据保持正向。
1253
1254默认为false。
1255
1256**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1257
1258**起始版本:** 12
1259
1260**参数:**
1261
1262| 名称 | 描述 |
1263| -------- | -------- |
1264| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1265| canvasRotation | 指示屏幕数据旋转参数。 |
1266
1267**返回:**
1268
1269函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1270
1271AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1272
1273AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1274
1275AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置录屏屏幕数据旋转失败。
1276
1277
1278### OH_AVScreenCapture_SetDataCallback()
1279
1280```
1281OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetDataCallback (struct OH_AVScreenCapture * capture, OH_AVScreenCapture_OnBufferAvailable callback, void * userData )
1282```
1283**描述**
1284设置数据处理回调方法,在开始录制前调用。
1285
1286调用该方法设置数据处理回调方法,当OH_AVScreenCapture操作期间有音频或视频数据缓存区可用时,将调用该数据处理回调方法。
1287
1288应用需要在该数据处理回调方法中根据数据类型完成处理麦克风音频、内录音频、视频数据,当该数据处理回调方法返回后数据缓存区将不再有效。
1289
1290调用该方法成功后:
1291
12921. 当OH_AVScreenCapture操作期间有音视频缓存区可用时,将不再调用通过[OH_AVScreenCapture_SetCallback](#oh_avscreencapture_setcallback)设置的数据回调方法[OH_AVScreenCaptureOnAudioBufferAvailable](#oh_avscreencaptureonaudiobufferavailable)和[OH_AVScreenCaptureOnVideoBufferAvailable](#oh_avscreencaptureonvideobufferavailable)。
12932. 不允许应用调用如下4个方法[OH_AVScreenCapture_AcquireAudioBuffer](#oh_avscreencapture_acquireaudiobuffer)、[OH_AVScreenCapture_ReleaseAudioBuffer](#oh_avscreencapture_releaseaudiobuffer)、[OH_AVScreenCapture_AcquireVideoBuffer](#oh_avscreencapture_acquirevideobuffer)和[OH_AVScreenCapture_ReleaseVideoBuffer](#oh_avscreencapture_releasevideobuffer),直接返回失败。
1294
1295**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1296
1297**起始版本:** 12
1298
1299**参数:**
1300
1301| 名称 | 描述 |
1302| -------- | -------- |
1303| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1304| callback | 指向数据处理回调方法实例的指针[OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable)。 |
1305| userData | 指向应用提供的自定义数据的指针,在数据处理回调方法被调用时作为入参回传。 |
1306
1307**返回:**
1308
1309函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1310
1311AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1312
1313AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数callback为空指针。
1314
1315AV_SCREEN_CAPTURE_ERR_NO_MEMORY:内存不足,内存分配失败。
1316
1317AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置DataCallback失败。
1318
1319
1320### OH_AVScreenCapture_SetErrorCallback()
1321
1322```
1323OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetErrorCallback (struct OH_AVScreenCapture * capture, OH_AVScreenCapture_OnError callback, void * userData )
1324```
1325**描述**
1326设置错误处理回调方法,在开始录制前调用。
1327
1328调用该方法设置错误处理回调方法,当OH_AVScreenCapture实例发生错误时,该错误处理回调方法将会被调用。
1329
1330调用该设置方法成功后:当OH_AVScreenCapture实例发生错误时,将不再调用通过[OH_AVScreenCapture_SetCallback](#oh_avscreencapture_setcallback)设置的错误处理回调方法[OH_AVScreenCaptureOnError](#oh_avscreencaptureonerror)。
1331
1332**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1333
1334**起始版本:** 12
1335
1336**参数:**
1337
1338| 名称 | 描述 |
1339| -------- | -------- |
1340| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1341| callback | 指向错误处理回调方法实例的指针[OH_AVScreenCapture_OnError](#oh_avscreencapture_onerror)。 |
1342| userData | 指向应用提供的自定义数据的指针,在错误处理回调方法被调用时作为入参回传。 |
1343
1344**返回:**
1345
1346函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1347
1348AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1349
1350AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数callback为空指针。
1351
1352AV_SCREEN_CAPTURE_ERR_NO_MEMORY:内存不足,内存分配失败。
1353
1354AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置ErrorCallback失败。
1355
1356
1357### OH_AVScreenCapture_SetMicrophoneEnabled()
1358
1359```
1360OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMicrophoneEnabled (struct OH_AVScreenCapture * capture, bool isMicrophone )
1361```
1362**描述**
1363设置麦克风开关。当isMicrophone为true时,则打开麦克风,通过调用[OH_AVScreenCapture_StartScreenCapture](#oh_avscreencapture_startscreencapture)和[OH_AVScreenCapture_AcquireAudioBuffer](#oh_avscreencapture_acquireaudiobuffer)可以正常获取到音频的麦克风原始PCM数据;isMicrophone为false时,获取到的音频数据为无声数据。
1364
1365默认麦克风开关为开启。
1366
1367**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1368
1369**起始版本:** 10
1370
1371**参数:**
1372
1373| 名称 | 描述 |
1374| -------- | -------- |
1375| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1376| isMicrophone | 麦克风开关参数。 |
1377
1378**返回:**
1379
1380函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1381
1382AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1383
1384AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1385
1386AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置麦克风开关失败。
1387
1388
1389### OH_AVScreenCapture_SetStateCallback()
1390
1391```
1392OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetStateCallback (struct OH_AVScreenCapture * capture, OH_AVScreenCapture_OnStateChange callback, void * userData )
1393```
1394**描述**
1395设置状态变更处理回调方法,在开始录制前调用。
1396
1397调用该方法设置状态变更处理回调方法,当OH_AVScreenCapture实例发生状态变更时,该状态变更处理回调方法将会被调用。
1398
1399调用该设置方法成功后,在启动录屏时将通过隐私弹窗方式征求用户同意:
1400
14011. 如果用户同意则开始启动录屏流程,在启动录屏成功后,通过该状态处理回调方法上报[OH_SCREEN_CAPTURE_STATE_STARTED](#oh_avscreencapturestatecode-1)状态,告知应用启动录屏成功,并在屏幕显示录屏通知。
1402
1403   如果启动录屏失败,则通过该状态处理回调方法上报失败状态信息(如,若麦克风不可用则上报[OH_SCREEN_CAPTURE_STATE_MIC_UNAVAILABLE](#oh_avscreencapturestatecode-1)状态),或通过错误处理回调方法[OH_AVScreenCapture_OnError](#oh_avscreencapture_onerror)上报错误信息。
1404
14052. 如果用户拒绝,则终止启动录屏,通过该状态处理回调方法上报[OH_SCREEN_CAPTURE_STATE_CANCELED](#oh_avscreencapturestatecode-1)状态,告知应用用户拒绝启动录屏,启动录屏失败。
1406
1407**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1408
1409**起始版本:** 12
1410
1411**参数:**
1412
1413| 名称 | 描述 |
1414| -------- | -------- |
1415| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1416| callback | 指向状态处理回调方法实例的指针[OH_AVScreenCapture_OnStateChange](#oh_avscreencapture_onstatechange) |
1417| userData | 指向应用提供的自定义数据的指针,在状态处理回调方法被调用时作为入参回传。 |
1418
1419**返回:**
1420
1421函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1422
1423AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1424
1425AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数callback为空指针。
1426
1427AV_SCREEN_CAPTURE_ERR_NO_MEMORY:内存不足,内存分配失败。
1428
1429AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置StateCallback失败。
1430
1431
1432### OH_AVScreenCapture_StartScreenCapture()
1433
1434```
1435OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenCapture (struct OH_AVScreenCapture * capture)
1436```
1437**描述**
1438开始录屏,采集原始码流。调用后可以通过回调的监听([OH_AVScreenCapture_OnBufferAvailable](#oh_avscreencapture_onbufferavailable))来监听当前是否有码流的产生,通过回调的监听([OH_AVScreenCapture_OnStateChange](#oh_avscreencapture_onstatechange))来监听启动状态。
1439
1440通过调用获取音频buffer([OH_AVScreenCapture_AcquireAudioBuffer](#oh_avscreencapture_acquireaudiobuffer))和视频buffer([OH_AVScreenCapture_ReleaseVideoBuffer](#oh_avscreencapture_releasevideobuffer))的接口来获取录屏的原始码流。
1441
1442**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1443
1444**起始版本:** 10
1445
1446**参数:**
1447
1448| 名称 | 描述 |
1449| -------- | -------- |
1450| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1451
1452**返回:**
1453
1454函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1455
1456AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1457
1458AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1459
1460AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置隐私权限启用失败或启动录屏失败。
1461
1462
1463### OH_AVScreenCapture_StartScreenCaptureWithSurface()
1464
1465```
1466OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenCaptureWithSurface (struct OH_AVScreenCapture * capture, OHNativeWindow * window )
1467```
1468**描述**
1469使用Surface模式录屏。
1470
1471**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1472
1473**起始版本:** 12
1474
1475**参数:**
1476
1477| 名称 | 描述 |
1478| -------- | -------- |
1479| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1480| window | 指向[OHNativeWindow](../apis-arkgraphics2d/_native_window.md#ohnativewindow)实例的指针。 |
1481
1482**返回:**
1483
1484函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1485
1486AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1487
1488AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针、输入参数window为空指针或window指向的windowSurface为空指针。
1489
1490AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置隐私权限启用失败或启动ScreenCaptureWithSurface失败。
1491
1492
1493### OH_AVScreenCapture_StartScreenRecording()
1494
1495```
1496OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenRecording (struct OH_AVScreenCapture * capture)
1497```
1498**描述**
1499启动录屏,调用此接口,可将录屏文件保存。
1500
1501**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1502
1503**起始版本:** 10
1504
1505**参数:**
1506
1507| 名称 | 描述 |
1508| -------- | -------- |
1509| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1510
1511**返回:**
1512
1513函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1514
1515AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1516
1517AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1518
1519AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置隐私权限启用失败或启用屏幕录制失败。
1520
1521
1522### OH_AVScreenCapture_StopScreenCapture()
1523
1524```
1525OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenCapture (struct OH_AVScreenCapture * capture)
1526```
1527**描述**
1528结束录屏,与[OH_AVScreenCapture_StartScreenCapture](#oh_avscreencapture_startscreencapture)配合使用。调用后针对调用该接口的应用会停止录屏或屏幕共享,释放麦克风。
1529
1530**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1531
1532**起始版本:** 10
1533
1534**参数:**
1535
1536| 名称 | 描述 |
1537| -------- | -------- |
1538| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1539
1540**返回:**
1541
1542函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1543
1544AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1545
1546AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1547
1548AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,结束录屏失败。
1549
1550
1551### OH_AVScreenCapture_StopScreenRecording()
1552
1553```
1554OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenRecording (struct OH_AVScreenCapture * capture)
1555```
1556**描述**
1557停止录屏,与[OH_AVScreenCapture_StartScreenRecording](#oh_avscreencapture_startscreenrecording)配合使用。
1558
1559**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1560
1561**起始版本:** 10
1562
1563**参数:**
1564
1565| 名称 | 描述 |
1566| -------- | -------- |
1567| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1568
1569**返回:**
1570
1571函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1572
1573AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1574
1575AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1576
1577AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,停止屏幕录制失败。
1578
1579### OH_AVScreenCapture_ResizeCanvas()
1580
1581```
1582OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ResizeCanvas (struct OH_AVScreenCapture * capture, int32_t width, int32_t height)
1583```
1584**描述**
1585调整屏幕的分辨率。
1586
1587调用该方法可以设置录屏屏幕数据的分辨率,width为屏幕的宽度,height为屏幕的高度。
1588
1589该接口目前仅支持录屏取码流的场景,不支持录屏存文件的场景。并且调用该接口的调用者以及视频数据的消费者需要确保自身能够支持收到的视频数据分辨率发生变化。
1590
1591**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1592
1593**起始版本:** 12
1594
1595**参数:**
1596
1597| 名称 | 描述 |
1598| -------- | -------- |
1599| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1600| width | 录屏屏幕的宽度。 |
1601| height | 录屏屏幕的高度。 |
1602
1603**返回:**
1604
1605函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1606
1607AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1608
1609AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1610
1611AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作。
1612
1613### OH_AVScreenCapture_SkipPrivacyMode()
1614
1615```
1616OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SkipPrivacyMode (struct OH_AVScreenCapture * capture, int32_t *windowIDs, int32_t windowCount)
1617```
1618**描述**
1619录屏时豁免隐私窗口。
1620
1621调用该方法可以豁免隐私窗口,windowIDs为需要豁免的隐私窗口ID指针,windowCount 为隐私窗口ID列表的长度,目前豁免需要传入所有隐私子窗口和主窗口ID。
1622
1623**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1624
1625**起始版本:** 12
1626
1627**参数:**
1628
1629| 名称 | 描述 |
1630| -------- | -------- |
1631| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1632| windowIDs | 向隐私窗口ID的指针。 |
1633| windowCount | 隐私窗口ID列表的长度。 |
1634
1635**返回:**
1636
1637函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1638
1639AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1640
1641AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。
1642
1643AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作。
1644
1645
1646### OH_AVScreenCapture_SetMaxVideoFrameRate()
1647```
1648OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMaxVideoFrameRate (struct OH_AVScreenCapture * capture, int32_t frameRate)
1649```
1650**描述**
1651设置录屏的最大帧率。
1652
1653调用该方法可以设置录屏时的最大帧率,frameRate为想要设置的最大帧率。
1654
1655该接口设置最大帧率时,实际设置的帧率受限设备的能力,由底层的系统能力决定。
1656
1657调用该接口设置录屏最大帧率时,实际帧率将受限于设备能力。目前接口入参的最大值不设限制,但当前支持的最高帧率为60FPS,当入参设置超过60FPS,将以60FPS处理。不超过上限时,则按照实际入参值处理。
1658
1659**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1660
1661**起始版本:** 14
1662
1663**参数:**
1664
1665| 名称 | 描述 |
1666| -------- | -------- |
1667| capture | 指向[OH_AVScreenCapture](#oh_avscreencapture)实例的指针。 |
1668| frameRate | 设置录屏的最大帧率。 |
1669
1670**返回:**
1671
1672函数结果代码[OH_AVErrCode](../apis-avcodec-kit/_core.md#oh_averrcode-1):
1673
1674AV_SCREEN_CAPTURE_ERR_OK:执行成功。
1675
1676AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针,或者输入参数frameRate不支持。
1677
1678AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:操作受限,建议重试。