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