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