• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# native_avscreen_capture.h
2<!--Kit: Media Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @zzs_911-->
5<!--Designer: @stupig001-->
6<!--Tester: @xdlinc-->
7<!--Adviser: @zengyawen-->
8
9## 概述
10
11声明用于构造屏幕录制对象的API。
12
13**引用文件:** <multimedia/player_framework/native_avscreen_capture.h>
14
15**库:** libnative_avscreen_capture.so
16
17**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
18
19**起始版本:** 10
20
21**相关模块:** [AVScreenCapture](capi-avscreencapture.md)
22
23**相关示例:** [NativeAvScreenCapture](https://gitcode.com/openharmony/applications_app_samples/tree/master/code/DocsSample/Media/ScreenCapture/ScreenCaptureSample)
24
25## 汇总
26
27### 函数
28
29| 名称 | 描述 |
30| -- | -- |
31| [struct OH_AVScreenCapture *OH_AVScreenCapture_Create(void)](#oh_avscreencapture_create) | 实例化对象,创建OH_AVScreenCapture。<br> 可以通过调用[OH_AVScreenCapture_Release](#oh_avscreencapture_release)释放实例。 |
32| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Init(struct OH_AVScreenCapture *capture, OH_AVScreenCaptureConfig config)](#oh_avscreencapture_init) | 初始化[OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md)相关参数,包括下发的音频麦克风采样相关参数(可选)、音频内录采样相关参数、视频分辨率相关参数。 |
33| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenCapture(struct OH_AVScreenCapture *capture)](#oh_avscreencapture_startscreencapture) | 开始录屏,采集原始码流。 |
34| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenCapture(struct OH_AVScreenCapture *capture)](#oh_avscreencapture_stopscreencapture) | 结束录屏,与[OH_AVScreenCapture_StartScreenCapture](#oh_avscreencapture_startscreencapture)配合使用。调用后针对调用该接口的应用会停止录屏或屏幕共享,释放麦克风。 |
35| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenRecording(struct OH_AVScreenCapture *capture)](#oh_avscreencapture_startscreenrecording) | 启动录屏,调用此接口,可保存录屏文件。 |
36| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenRecording(struct OH_AVScreenCapture *capture)](#oh_avscreencapture_stopscreenrecording) | 停止录屏,与[OH_AVScreenCapture_StartScreenRecording](#oh_avscreencapture_startscreenrecording)配合使用。 |
37| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_AcquireAudioBuffer(struct OH_AVScreenCapture *capture, OH_AudioBuffer **audiobuffer, OH_AudioCaptureSourceType type)](#oh_avscreencapture_acquireaudiobuffer) | 获取音频buffer。应用调用时需分配audiobuffer对应结构体大小的内存,否则影响音频buffer的获取。<br> 从API 12开始,推荐使用接口[OH_AVScreenCapture_OnBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onbufferavailable)替代。 |
38| [OH_NativeBuffer* OH_AVScreenCapture_AcquireVideoBuffer(struct OH_AVScreenCapture *capture, int32_t *fence, int64_t *timestamp, struct OH_Rect *region)](#oh_avscreencapture_acquirevideobuffer) | 获取视频buffer。应用通过此接口获取视频缓存区及时间戳等信息。<br> buffer使用完成后,调用OH_AVScreenCapture_ReleaseVideoBuffer接口进行视频buffer的释放。<br> 从API 12开始,推荐使用接口[OH_AVScreenCapture_OnBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onbufferavailable)替代。 |
39| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseAudioBuffer(struct OH_AVScreenCapture *capture, OH_AudioCaptureSourceType type)](#oh_avscreencapture_releaseaudiobuffer) | 根据音频类型释放buffer。当某一帧音频buffer使用完成后,调用此接口进行释放对应的音频buffer。<br> 从API 12开始,推荐使用接口[OH_AVScreenCapture_OnBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onbufferavailable)替代。 |
40| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseVideoBuffer(struct OH_AVScreenCapture *capture)](#oh_avscreencapture_releasevideobuffer) | 根据视频类型释放buffer。当某一帧视频buffer使用完成后,调用此接口释放对应的视频buffer。<br> 从API 12开始,推荐使用接口[OH_AVScreenCapture_OnBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onbufferavailable)替代。 |
41| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCallback(struct OH_AVScreenCapture *capture, struct OH_AVScreenCaptureCallback callback)](#oh_avscreencapture_setcallback) | 设置监听接口,通过设置监听,可以监听到调用过程中的错误信息,以及是否有可用的视频buffer和音频buffer。<br> 从API 12开始,推荐使用接口[OH_AVScreenCapture_SetErrorCallback](#oh_avscreencapture_seterrorcallback)、[OH_AVScreenCapture_SetDataCallback](#oh_avscreencapture_setdatacallback)替代。 |
42| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Release(struct OH_AVScreenCapture *capture)](#oh_avscreencapture_release) | 释放创建的OH_AVScreenCapture实例,对应[OH_AVScreenCapture_Create](#oh_avscreencapture_create)。 |
43| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMicrophoneEnabled(struct OH_AVScreenCapture *capture, bool isMicrophone)](#oh_avscreencapture_setmicrophoneenabled) | 设置麦克风开关。<br> 当isMicrophone为true时,则打开麦克风,通过调用[OH_AVScreenCapture_StartScreenCapture](#oh_avscreencapture_startscreencapture)和[OH_AVScreenCapture_AcquireAudioBuffer](#oh_avscreencapture_acquireaudiobuffer)可以正常获取到音频的麦克风原始PCM数据;isMicrophone为false时,获取到的音频数据为无声数据。<br> 默认麦克风开关为开启。 |
44| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetStateCallback(struct OH_AVScreenCapture *capture, OH_AVScreenCapture_OnStateChange callback, void *userData)](#oh_avscreencapture_setstatecallback) | 设置状态变更处理回调方法,在开始录制前调用。 |
45| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetDataCallback(struct OH_AVScreenCapture *capture, OH_AVScreenCapture_OnBufferAvailable callback, void *userData)](#oh_avscreencapture_setdatacallback) | 设置数据处理回调方法,在开始录制前调用。 |
46| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetErrorCallback(struct OH_AVScreenCapture *capture, OH_AVScreenCapture_OnError callback, void *userData)](#oh_avscreencapture_seterrorcallback) | 设置错误处理回调方法,在开始录制前调用。 |
47| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenCaptureWithSurface(struct OH_AVScreenCapture *capture, OHNativeWindow *window)](#oh_avscreencapture_startscreencapturewithsurface) | 使用Surface模式录屏。 |
48| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCanvasRotation(struct OH_AVScreenCapture *capture, bool canvasRotation)](#oh_avscreencapture_setcanvasrotation) | 设置录屏屏幕数据旋转。<br> 调用该方法可以设置录屏屏幕数据是否旋转,当canvasRotation为true时,打开录屏屏幕数据旋转功能,录制的屏幕数据保持正向。<br> 默认为false。 |
49| [struct OH_AVScreenCapture_ContentFilter *OH_AVScreenCapture_CreateContentFilter(void)](#oh_avscreencapture_createcontentfilter) | 创建ContentFilter。 |
50| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseContentFilter(struct OH_AVScreenCapture_ContentFilter *filter)](#oh_avscreencapture_releasecontentfilter) | 释放ContentFilter。 |
51| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ContentFilter_AddAudioContent(struct OH_AVScreenCapture_ContentFilter *filter, OH_AVScreenCaptureFilterableAudioContent content)](#oh_avscreencapture_contentfilter_addaudiocontent) | 向ContentFilter实例添加可过滤的声音类型。 |
52| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ExcludeContent(struct OH_AVScreenCapture *capture,struct OH_AVScreenCapture_ContentFilter *filter)](#oh_avscreencapture_excludecontent) | 设置OH_AVScreenCapture实例的内容过滤器ContentFilter。 |
53| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ContentFilter_AddWindowContent(struct OH_AVScreenCapture_ContentFilter *filter, int32_t *windowIDs, int32_t windowCount)](#oh_avscreencapture_contentfilter_addwindowcontent) | 向ContentFilter实例添加可被过滤的窗口ID列表。 |
54| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ResizeCanvas(struct OH_AVScreenCapture *capture, int32_t width, int32_t height)](#oh_avscreencapture_resizecanvas) | 调整屏幕的分辨率。<br> 调用该方法可以设置录屏屏幕数据的分辨率,width为屏幕的宽度,height为屏幕的高度。<br> 该接口目前仅支持录屏取码流的场景,不支持录屏存文件的场景。并且调用该接口的调用者以及视频数据的消费者需要确保自身能够支持收到的视频数据分辨率发生变化。 |
55| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SkipPrivacyMode(struct OH_AVScreenCapture *capture, int32_t *windowIDs, int32_t windowCount)](#oh_avscreencapture_skipprivacymode) | 录屏时豁免隐私窗口。<br> 调用该方法可以豁免隐私窗口,windowIDs为需要豁免的隐私窗口ID指针,windowCount 为隐私窗口ID列表的长度,目前豁免需要传入所有隐私子窗口和主窗口ID。 |
56| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMaxVideoFrameRate(struct OH_AVScreenCapture *capture, int32_t frameRate)](#oh_avscreencapture_setmaxvideoframerate) | 设置录屏时的最大帧率。<br> 该接口应在录屏启动之后被调用。<br> 调用该方法可以设置录屏时的最大帧率,frameRate为想要设置的最大帧率。<br> 该接口设置最大帧率时,实际设置的帧率受限设备的能力,由底层的系统能力决定。<br> 调用该接口设置录屏最大帧率时,实际帧率将受限于设备能力。目前接口入参的最大值不设限制,但当前支持的最高帧率为60FPS,当入参设置超过60FPS,将以60FPS处理。不超过上限时,则按照实际入参值处理。 |
57| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ShowCursor(struct OH_AVScreenCapture *capture, bool showCursor)](#oh_avscreencapture_showcursor) | 设置光标显示开关。 |
58| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetDisplayCallback(struct OH_AVScreenCapture *capture, OH_AVScreenCapture_OnDisplaySelected callback, void *userData)](#oh_avscreencapture_setdisplaycallback) | 设置获取录屏屏幕Id的回调。 |
59| [OH_AVScreenCapture_CaptureStrategy* OH_AVScreenCapture_CreateCaptureStrategy(void)](#oh_avscreencapture_createcapturestrategy) | 创建录屏策略对象。 |
60| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseCaptureStrategy(OH_AVScreenCapture_CaptureStrategy* strategy)](#oh_avscreencapture_releasecapturestrategy) | 释放录屏策略对象。 |
61| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCaptureStrategy(struct OH_AVScreenCapture *capture, OH_AVScreenCapture_CaptureStrategy *strategy)](#oh_avscreencapture_setcapturestrategy) | 给指定的OH_AVScreenCapture实例设置捕获策略。<br> 该接口应在录屏启动之前被调用。 |
62| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForCanvasFollowRotation(OH_AVScreenCapture_CaptureStrategy *strategy, bool value)](#oh_avscreencapture_strategyforcanvasfollowrotation) | 设置屏幕录屏自动跟随旋转配置。设为ture,表示跟随屏幕旋转,并在横竖屏旋转后,自动调换虚拟屏尺寸,确保输出画面及时跟随旋转。<br> 设置是否自动跟随旋转配置后,在旋转通知后,无需再手动调用[OH_AVScreenCapture_ResizeCanvas](#oh_avscreencapture_resizecanvas)接口。 |
63| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForKeepCaptureDuringCall(OH_AVScreenCapture_CaptureStrategy *strategy, bool value)](#oh_avscreencapture_strategyforkeepcaptureduringcall) | 向CaptureStrategy实例设置蜂窝通话时是否保持录屏。<br> value设置为true时并且录屏时接听蜂窝通话的过程中,出于隐私要求,双方通话的声音(本地麦克风和对方说话声音)不会被录制,其他系统音录制正常。电话挂断之后,录屏框架恢复麦克风录制。注意,如果挂断电话时录屏应用在后台运行,麦克风录制会启动失败,原因是音频模块不允许后台应用启动麦克风录制。 |
64| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCaptureContentChangedCallback(struct OH_AVScreenCapture *capture, OH_AVScreenCapture_OnCaptureContentChanged callback, void *userData)](#oh_avscreencapture_setcapturecontentchangedcallback) | 设置录屏内容变更回调事件,需在录屏启动前被调用。 |
65| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCaptureArea(struct OH_AVScreenCapture *capture, uint64_t displayId, OH_Rect* area)](#oh_avscreencapture_setcapturearea) | 设置或更新捕获区域。<br> 接口在开始录屏前后都可以设置,设置的坐标和宽高不能为负数,捕获区域不能跨屏幕,区域位置设置失败后仍按照上一次的区域进行捕获。 |
66| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForPrivacyMaskMode(OH_AVScreenCapture_CaptureStrategy *strategy, int32_t value)](#oh_avscreencapture_strategyforprivacymaskmode) | 设置隐私窗口屏蔽模式。 |
67| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetSelectionCallback(struct OH_AVScreenCapture *capture, OH_AVScreenCapture_OnUserSelected callback, void *userData)](#oh_avscreencapture_setselectioncallback) | 注册手工确认界面用户选择结果的回调,需在录屏启动前被调用。 |
68| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_GetCaptureTypeSelected(OH_AVScreenCapture_UserSelectionInfo \*selection, int32_t\* type)](#oh_avscreencapture_getcapturetypeselected) | 获取用户在确认界面选择的屏幕捕获对象类型。在[OH_AVScreenCapture_OnUserSelected](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onuserselected)回调中使用,selection指针在回调结束后销毁。 |
69| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_GetDisplayIdSelected(OH_AVScreenCapture_UserSelectionInfo \*selection, uint64_t\* displayId)](#oh_avscreencapture_getdisplayidselected) | 获取确认页面,用户选择录制的屏幕ID。在[OH_AVScreenCapture_OnUserSelected](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onuserselected)回调中使用,selection指针在回调结束后销毁。 |
70| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForBFramesEncoding(OH_AVScreenCapture_CaptureStrategy *strategy, bool value)](#oh_avscreencapture_strategyforbframesencoding) | 向CaptureStrategy实例设置是否使能B帧编码,用于减小录制文件的大小。<br> B帧视频编码相关的约束和限制可以参考文档[B帧视频编码约束和限制](../../media/avcodec/video-encoding-b-frame.md#约束和限制)。如果当前不符合B帧视频编码的约束和限制,则正常录制不含B帧的视频,不会返回错误。 |
71| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForPickerPopUp(OH_AVScreenCapture_CaptureStrategy *strategy, bool value)](#oh_avscreencapture_strategyforpickerpopup) | 设置是否弹出屏幕捕获Picker。 |
72| [OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForFillMode(OH_AVScreenCapture_CaptureStrategy *strategy, OH_AVScreenCapture_FillMode mode)](#oh_avscreencapture_strategyforfillmode) | 设置捕获图像在目标区域的填充模式。 |
73
74## 函数说明
75
76### OH_AVScreenCapture_Create()
77
78```
79struct OH_AVScreenCapture *OH_AVScreenCapture_Create(void)
80```
81
82**描述**
83
84实例化对象,创建OH_AVScreenCapture。<br> 可以通过调用[OH_AVScreenCapture_Release](#oh_avscreencapture_release)释放实例。
85
86**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
87
88**起始版本:** 10
89
90**返回:**
91
92| 类型 | 说明 |
93| -- | -- |
94| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) * | 返回一个指向OH_AVScreenCapture实例的指针。 |
95
96### OH_AVScreenCapture_Init()
97
98```
99OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Init(struct OH_AVScreenCapture *capture,OH_AVScreenCaptureConfig config)
100```
101
102**描述**
103
104初始化[OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md)相关参数,包括下发的音频麦克风采样相关参数(可选)、音频内录采样相关参数、视频分辨率相关参数。<br> 录屏存文件场景,应用需要保证视频编码参数、视频采样参数、音频编码参数、音频内录采样参数均合法,音频麦克风采样参数合法(可选)。<br> 录屏出码流场景,应用需要保证音频内录采样参数、视频采样参数至少一个合法,音频麦克风采样参数合法(可选)。<br> 由于结构体变量在初始化时不会对成员进行初始化,应用必须根据使用场景正确设置各项参数。建议应用先将OH_AVScreenCaptureConfig结构体变量的所有内存字节均设置为0,然后再根据录屏场景设置合法参数。<br> 音频采样参数结构体[OH_AudioCaptureInfo](capi-avscreencapture-oh-audiocaptureinfo.md),若audioSampleRate和audioChannels同时为0,则录屏实例OH_AVScreenCapture将忽略该类型的音频参数,且不采集该类型的音频数据。<br> 视频采样参数结构体[OH_VideoCaptureInfo](capi-avscreencapture-oh-videocaptureinfo.md),若videoFrameWidth和videoFrameHeight同时为0,则录屏实例OH_AVScreenCapture将忽略对应视频参数,且不采集屏幕数据。
105
106**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
107
108**起始版本:** 10
109
110
111**参数:**
112
113| 参数项 | 描述 |
114| -- | -- |
115| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
116| [OH_AVScreenCaptureConfig](capi-avscreencapture-oh-avscreencaptureconfig.md) config | 录屏初始化相关参数。 |
117
118**返回:**
119
120| 类型 | 说明 |
121| -- | -- |
122| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,初始化配置失败。 |
123
124### OH_AVScreenCapture_StartScreenCapture()
125
126```
127OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenCapture(struct OH_AVScreenCapture *capture)
128```
129
130**描述**
131
132开始录屏,采集原始码流。<br> 调用后可以通过回调的监听([OH_AVScreenCapture_OnBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onbufferavailable))来监听当前是否有码流的产生,通过回调的监听([OH_AVScreenCapture_OnStateChange](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onstatechange))来监听启动状态。<br> 通过调用获取音频buffer([OH_AVScreenCapture_AcquireAudioBuffer](#oh_avscreencapture_acquireaudiobuffer))和视频buffer([OH_AVScreenCapture_AcquireVideoBuffer](#oh_avscreencapture_acquirevideobuffer))的接口来获取录屏的原始码流。
133
134**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
135
136**起始版本:** 10
137
138
139**参数:**
140
141| 参数项 | 描述 |
142| -- | -- |
143| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
144
145**返回:**
146
147| 类型 | 说明 |
148| -- | -- |
149| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_UNSUPPORT(API 20新增):设备不支持该操作。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置隐私权限启用失败或启动录屏失败。 |
150
151### OH_AVScreenCapture_StopScreenCapture()
152
153```
154OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenCapture(struct OH_AVScreenCapture *capture)
155```
156
157**描述**
158
159结束录屏,与[OH_AVScreenCapture_StartScreenCapture](#oh_avscreencapture_startscreencapture)配合使用。调用后针对调用该接口的应用会停止录屏或屏幕共享,释放麦克风。
160
161**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
162
163**起始版本:** 10
164
165
166**参数:**
167
168| 参数项 | 描述 |
169| -- | -- |
170| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
171
172**返回:**
173
174| 类型 | 说明 |
175| -- | -- |
176| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,结束录屏失败。 |
177
178### OH_AVScreenCapture_StartScreenRecording()
179
180```
181OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenRecording(struct OH_AVScreenCapture *capture)
182```
183
184**描述**
185
186启动录屏,调用此接口,可保存录屏文件。
187
188**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
189
190**起始版本:** 10
191
192
193**参数:**
194
195| 参数项 | 描述 |
196| -- | -- |
197| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
198
199**返回:**
200
201| 类型 | 说明 |
202| -- | -- |
203| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_UNSUPPORT(API 20新增):设备不支持该操作。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置隐私权限启用失败或启用屏幕录制失败。 |
204
205### OH_AVScreenCapture_StopScreenRecording()
206
207```
208OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenRecording(struct OH_AVScreenCapture *capture)
209```
210
211**描述**
212
213停止录屏,与[OH_AVScreenCapture_StartScreenRecording](#oh_avscreencapture_startscreenrecording)配合使用。
214
215**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
216
217**起始版本:** 10
218
219
220**参数:**
221
222| 参数项 | 描述 |
223| -- | -- |
224| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
225
226**返回:**
227
228| 类型 | 说明 |
229| -- | -- |
230| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,停止屏幕录制失败。 |
231
232### OH_AVScreenCapture_AcquireAudioBuffer()
233
234```
235OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_AcquireAudioBuffer(struct OH_AVScreenCapture *capture,OH_AudioBuffer **audiobuffer, OH_AudioCaptureSourceType type)
236```
237
238**描述**
239
240获取音频buffer。应用调用时需分配audiobuffer对应结构体大小的内存,否则影响音频buffer的获取。<br> 从API 12开始,推荐使用接口[OH_AVScreenCapture_OnBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onbufferavailable)替代。
241
242**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
243
244**起始版本:** 10
245
246
247**参数:**
248
249| 参数项 | 描述 |
250| -- | -- |
251| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
252| [OH_AudioBuffer](capi-avscreencapture-oh-audiobuffer.md) **audiobuffer | 保存音频buffer的结构体,通过该结构体获取到音频buffer以及buffer的时间戳等信息。 |
253| [OH_AudioCaptureSourceType](capi-native-avscreen-capture-base-h.md#oh_audiocapturesourcetype) type | 音频buffer的类型,区分是麦克风录制的外部流还是系统内部播放音频的内录流。 |
254
255**返回:**
256
257| 类型 | 说明 |
258| -- | -- |
259| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数audiobuffer为空指针。<br>         AV_SCREEN_CAPTURE_ERR_NO_MEMORY:内存不足,audiobuffer分配失败。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置隐私权限启用失败或获取音频buffer失败。 |
260
261### OH_AVScreenCapture_AcquireVideoBuffer()
262
263```
264OH_NativeBuffer* OH_AVScreenCapture_AcquireVideoBuffer(struct OH_AVScreenCapture *capture,int32_t *fence, int64_t *timestamp, struct OH_Rect *region)
265```
266
267**描述**
268
269获取视频buffer。应用通过此接口获取视频缓存区及时间戳等信息。<br> buffer使用完成后,调用OH_AVScreenCapture_ReleaseVideoBuffer接口进行视频buffer的释放。<br> 从API 12开始,推荐使用接口[OH_AVScreenCapture_OnBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onbufferavailable)替代。
270
271**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
272
273**起始版本:** 10
274
275
276**参数:**
277
278| 参数项 | 描述 |
279| -- | -- |
280| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
281| int32_t *fence | 用于同步的显示相关参数信息。 |
282| int64_t *timestamp | 视频帧的时间戳。 |
283| [struct OH_Rect](capi-avscreencapture-oh-rect.md) *region | 视频显示相关的坐标信息。 |
284
285**返回:**
286
287| 类型 | 说明 |
288| -- | -- |
289| [OH_NativeBuffer](capi-avscreencapture-avscreencapture-oh-nativebuffer.md)* | 执行成功返回OH_NativeBuffer对象,通过OH_NativeBuffer对象相关接口可以获取到视频buffer和分辨率等信息参数。 |
290
291### OH_AVScreenCapture_ReleaseAudioBuffer()
292
293```
294OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseAudioBuffer(struct OH_AVScreenCapture *capture,OH_AudioCaptureSourceType type)
295```
296
297**描述**
298
299根据音频类型释放buffer。当某一帧音频buffer使用完成后,调用此接口进行释放对应的音频buffer。<br> 从API 12开始,推荐使用接口[OH_AVScreenCapture_OnBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onbufferavailable)替代。
300
301**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
302
303**起始版本:** 10
304
305
306**参数:**
307
308| 参数项 | 描述 |
309| -- | -- |
310| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
311| [OH_AudioCaptureSourceType](capi-native-avscreen-capture-base-h.md#oh_audiocapturesourcetype) type | 音频buffer的类型,区分麦克风录制的外部流还是系统内部播放音频的内录流。 |
312
313**返回:**
314
315| 类型 | 说明 |
316| -- | -- |
317| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,不允许用于已设置过DataCallback或释放音频buffer失败。 |
318
319### OH_AVScreenCapture_ReleaseVideoBuffer()
320
321```
322OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseVideoBuffer(struct OH_AVScreenCapture *capture)
323```
324
325**描述**
326
327根据视频类型释放buffer。当某一帧视频buffer使用完成后,调用此接口释放对应的视频buffer。<br> 从API 12开始,推荐使用接口[OH_AVScreenCapture_OnBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onbufferavailable)替代。
328
329**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
330
331**起始版本:** 10
332
333
334**参数:**
335
336| 参数项 | 描述 |
337| -- | -- |
338| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
339
340**返回:**
341
342| 类型 | 说明 |
343| -- | -- |
344| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,不允许用于已设置过DataCallback或释放视频buffer失败。 |
345
346### OH_AVScreenCapture_SetCallback()
347
348```
349OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCallback(struct OH_AVScreenCapture *capture,struct OH_AVScreenCaptureCallback callback)
350```
351
352**描述**
353
354设置监听接口,通过设置监听,可以监听到调用过程中的错误信息,以及是否有可用的视频buffer和音频buffer。<br> 从API 12开始,推荐使用接口[OH_AVScreenCapture_SetErrorCallback](#oh_avscreencapture_seterrorcallback)、[OH_AVScreenCapture_SetDataCallback](#oh_avscreencapture_setdatacallback)替代。
355
356**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
357
358**起始版本:** 10
359
360
361**参数:**
362
363| 参数项 | 描述 |
364| -- | -- |
365| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
366| [struct OH_AVScreenCaptureCallback](capi-avscreencapture-oh-avscreencapturecallback.md) callback | OH_AVScreenCaptureCallback的结构体,保存相关回调函数指针。 |
367
368**返回:**
369
370| 类型 | 说明 |
371| -- | -- |
372| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数callback为空指针。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置监听接口失败。 |
373
374### OH_AVScreenCapture_Release()
375
376```
377OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Release(struct OH_AVScreenCapture *capture)
378```
379
380**描述**
381
382释放创建的OH_AVScreenCapture实例,对应[OH_AVScreenCapture_Create](#oh_avscreencapture_create)。
383
384**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
385
386**起始版本:** 10
387
388
389**参数:**
390
391| 参数项 | 描述 |
392| -- | -- |
393| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
394
395**返回:**
396
397| 类型 | 说明 |
398| -- | -- |
399| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,OH_AVScreenCapture实例释放失败。 |
400
401### OH_AVScreenCapture_SetMicrophoneEnabled()
402
403```
404OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMicrophoneEnabled(struct OH_AVScreenCapture *capture,bool isMicrophone)
405```
406
407**描述**
408
409设置麦克风开关。<br> 当isMicrophone为true时,则打开麦克风,通过调用[OH_AVScreenCapture_StartScreenCapture](#oh_avscreencapture_startscreencapture)和[OH_AVScreenCapture_AcquireAudioBuffer](#oh_avscreencapture_acquireaudiobuffer)可以正常获取到音频的麦克风原始PCM数据;isMicrophone为false时,获取到的音频数据为无声数据。<br> 默认麦克风开关为开启。
410
411**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
412
413**起始版本:** 10
414
415
416**参数:**
417
418| 参数项 | 描述 |
419| -- | -- |
420| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
421| bool isMicrophone | 麦克风开关参数。 |
422
423**返回:**
424
425| 类型 | 说明 |
426| -- | -- |
427| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置麦克风开关失败。 |
428
429### OH_AVScreenCapture_SetStateCallback()
430
431```
432OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetStateCallback(struct OH_AVScreenCapture *capture,OH_AVScreenCapture_OnStateChange callback, void *userData)
433```
434
435**描述**
436
437设置状态变更处理回调方法,在开始录制前调用。<br> 调用该方法设置状态变更处理回调方法,当OH_AVScreenCapture实例发生状态变更时,该状态变更处理回调方法将会被调用。<br> 调用该设置方法成功后,在启动录屏时将通过隐私弹窗方式征求用户同意:<br> 1. 如果用户同意则开始启动录屏流程,在启动录屏成功后,通过该状态处理回调方法上报[OH_AVScreenCaptureStateCode](capi-native-avscreen-capture-base-h.md#oh_avscreencapturestatecode).OH_SCREEN_CAPTURE_STATE_STARTED状态,告知应用启动录屏成功,并在屏幕显示录屏通知。如果启动录屏失败,则通过该状态处理回调方法上报失败状态信息(如,若麦克风不可用则上报[OH_AVScreenCaptureStateCode](capi-native-avscreen-capture-base-h.md#oh_avscreencapturestatecode).OH_SCREEN_CAPTURE_STATE_MIC_UNAVAILABLE状态),或通过错误处理回调方法[OH_AVScreenCapture_OnError](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onerror)上报错误信息。<br> 2. 如果用户拒绝,则终止启动录屏,通过该状态处理回调方法上报[OH_AVScreenCaptureStateCode](capi-native-avscreen-capture-base-h.md#oh_avscreencapturestatecode).OH_SCREEN_CAPTURE_STATE_CANCELED状态,告知应用用户拒绝启动录屏,启动录屏失败。
438
439**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
440
441**起始版本:** 12
442
443
444**参数:**
445
446| 参数项 | 描述 |
447| -- | -- |
448| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
449| [OH_AVScreenCapture_OnStateChange](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onstatechange) callback | 指向状态处理回调方法实例的指针。 |
450| void *userData | 指向应用提供的自定义数据的指针,在状态处理回调方法被调用时作为入参回传。 |
451
452**返回:**
453
454| 类型 | 说明 |
455| -- | -- |
456| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数callback为空指针。<br>         AV_SCREEN_CAPTURE_ERR_NO_MEMORY:内存不足,内存分配失败。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置StateCallback失败。 |
457
458### OH_AVScreenCapture_SetDataCallback()
459
460```
461OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetDataCallback(struct OH_AVScreenCapture *capture,OH_AVScreenCapture_OnBufferAvailable callback, void *userData)
462```
463
464**描述**
465
466设置数据处理回调方法,在开始录制前调用。<br> 调用该方法设置数据处理回调方法,当OH_AVScreenCapture操作期间有音频或视频数据缓存区可用时,将调用该数据处理回调方法。<br> 应用需要在该数据处理回调方法中根据数据类型完成处理麦克风音频、内录音频、视频数据,当该数据处理回调方法返回后数据缓存区将不再有效。<br> 调用该方法成功后:<br> 1. 当OH_AVScreenCapture操作期间有音视频缓存区可用时,将不再调用通过[OH_AVScreenCapture_SetCallback](#oh_avscreencapture_setcallback)设置的数据回调方法[OH_AVScreenCaptureOnAudioBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencaptureonaudiobufferavailable)和[OH_AVScreenCaptureOnVideoBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencaptureonvideobufferavailable)。<br> 2. 不允许应用调用如下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),直接返回失败。
467
468**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
469
470**起始版本:** 12
471
472
473**参数:**
474
475| 参数项 | 描述 |
476| -- | -- |
477| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
478| [OH_AVScreenCapture_OnBufferAvailable](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onbufferavailable) callback | 指向数据处理回调方法实例的指针。 |
479| void *userData | 指向应用提供的自定义数据的指针,在数据处理回调方法被调用时作为入参回传。 |
480
481**返回:**
482
483| 类型 | 说明 |
484| -- | -- |
485| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数callback为空指针。<br>         AV_SCREEN_CAPTURE_ERR_NO_MEMORY:内存不足,内存分配失败。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置DataCallback失败。 |
486
487### OH_AVScreenCapture_SetErrorCallback()
488
489```
490OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetErrorCallback(struct OH_AVScreenCapture *capture,OH_AVScreenCapture_OnError callback, void *userData)
491```
492
493**描述**
494
495设置错误处理回调方法,在开始录制前调用。<br> 调用该方法设置错误处理回调方法,当OH_AVScreenCapture实例发生错误时,该错误处理回调方法将会被调用。<br> 调用该设置方法成功后,当OH_AVScreenCapture实例发生错误时,将不再调用通过[OH_AVScreenCapture_SetCallback](#oh_avscreencapture_setcallback)设置的错误处理回调方法[OH_AVScreenCaptureOnError](capi-native-avscreen-capture-base-h.md#oh_avscreencaptureonerror)。
496
497**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
498
499**起始版本:** 12
500
501
502**参数:**
503
504| 参数项 | 描述 |
505| -- | -- |
506| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
507| [OH_AVScreenCapture_OnError](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onerror) callback | 指向错误处理回调方法实例的指针。 |
508| void *userData | 指向应用提供的自定义数据的指针,在错误处理回调方法被调用时作为入参回传。 |
509
510**返回:**
511
512| 类型 | 说明 |
513| -- | -- |
514| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数callback为空指针。<br>         AV_SCREEN_CAPTURE_ERR_NO_MEMORY:内存不足,内存分配失败。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置ErrorCallback失败。 |
515
516### OH_AVScreenCapture_StartScreenCaptureWithSurface()
517
518```
519OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenCaptureWithSurface(struct OH_AVScreenCapture *capture,OHNativeWindow *window)
520```
521
522**描述**
523
524使用Surface模式录屏。
525
526**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
527
528**起始版本:** 12
529
530
531**参数:**
532
533| 参数项 | 描述 |
534| -- | -- |
535| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
536| [OHNativeWindow](../apis-arkgraphics2d/capi-nativewindow-nativewindow.md) *window | 指向OHNativeWindow实例的指针。 |
537
538**返回:**
539
540| 类型 | 说明 |
541| -- | -- |
542| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数window为空指针或window指向的windowSurface为空指针。<br>         AV_SCREEN_CAPTURE_ERR_UNSUPPORT(API 20新增):设备不支持该操作。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置隐私权限启用失败或启动ScreenCaptureWithSurface失败。 |
543
544### OH_AVScreenCapture_SetCanvasRotation()
545
546```
547OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCanvasRotation(struct OH_AVScreenCapture *capture,bool canvasRotation)
548```
549
550**描述**
551
552设置录屏屏幕数据旋转。<br> 调用该方法可以设置录屏屏幕数据是否旋转,当canvasRotation为true时,打开录屏屏幕数据旋转功能,录制的屏幕数据保持正向。<br> 默认为false。
553
554**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
555
556**起始版本:** 12
557
558
559**参数:**
560
561| 参数项 | 描述 |
562| -- | -- |
563| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
564| bool canvasRotation | 指示屏幕数据旋转参数。 |
565
566**返回:**
567
568| 类型 | 说明 |
569| -- | -- |
570| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_UNSUPPORT(API 20新增):设备不支持该操作。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置录屏屏幕数据旋转失败。 |
571
572### OH_AVScreenCapture_CreateContentFilter()
573
574```
575struct OH_AVScreenCapture_ContentFilter *OH_AVScreenCapture_CreateContentFilter(void)
576```
577
578**描述**
579
580创建ContentFilter。
581
582**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
583
584**起始版本:** 12
585
586**返回:**
587
588| 类型 | 说明 |
589| -- | -- |
590| struct [OH_AVScreenCapture_ContentFilter](capi-avscreencapture-oh-avscreencapture-contentfilter.md) * | 执行成功返回OH_AVScreenCapture_ContentFilter实例,否则返回空指针。 |
591
592### OH_AVScreenCapture_ReleaseContentFilter()
593
594```
595OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseContentFilter(struct OH_AVScreenCapture_ContentFilter *filter)
596```
597
598**描述**
599
600释放ContentFilter。
601
602**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
603
604**起始版本:** 12
605
606
607**参数:**
608
609| 参数项 | 描述 |
610| -- | -- |
611| [struct OH_AVScreenCapture_ContentFilter](capi-avscreencapture-oh-avscreencapture-contentfilter.md) *filter | 指向OH_AVScreenCapture_ContentFilter实例的指针。 |
612
613**返回:**
614
615| 类型 | 说明 |
616| -- | -- |
617| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数filter为空指针。 |
618
619### OH_AVScreenCapture_ContentFilter_AddAudioContent()
620
621```
622OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ContentFilter_AddAudioContent(struct OH_AVScreenCapture_ContentFilter *filter, OH_AVScreenCaptureFilterableAudioContent content)
623```
624
625**描述**
626
627向ContentFilter实例添加可过滤的声音类型。
628
629**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
630
631**起始版本:** 12
632
633
634**参数:**
635
636| 参数项 | 描述 |
637| -- | -- |
638| [struct OH_AVScreenCapture_ContentFilter](capi-avscreencapture-oh-avscreencapture-contentfilter.md) *filter | 指向OH_AVScreenCapture_ContentFilter实例的指针。 |
639| [OH_AVScreenCaptureFilterableAudioContent](capi-native-avscreen-capture-base-h.md#oh_avscreencapturefilterableaudiocontent) content | OH_AVScreenCaptureFilterableAudioContent实例。 |
640
641**返回:**
642
643| 类型 | 说明 |
644| -- | -- |
645| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数filter为空指针或输入参数content无效。 |
646
647### OH_AVScreenCapture_ExcludeContent()
648
649```
650OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ExcludeContent(struct OH_AVScreenCapture *capture,struct OH_AVScreenCapture_ContentFilter *filter)
651```
652
653**描述**
654
655设置OH_AVScreenCapture实例的内容过滤器ContentFilter。
656
657**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
658
659**起始版本:** 12
660
661
662**参数:**
663
664| 参数项 | 描述 |
665| -- | -- |
666| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
667| [struct OH_AVScreenCapture_ContentFilter](capi-avscreencapture-oh-avscreencapture-contentfilter.md) *filter | 指向OH_AVScreenCapture_ContentFilter实例的指针。 |
668
669**返回:**
670
671| 类型 | 说明 |
672| -- | -- |
673| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数filter为空指针。<br>         AV_SCREEN_CAPTURE_ERR_UNSUPPORT:操作不支持。对于流,启动时应该调用AudioCapturer接口。<br>         对于capture文件,启动时调用Recorder接口。 |
674
675### OH_AVScreenCapture_ContentFilter_AddWindowContent()
676
677```
678OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ContentFilter_AddWindowContent(struct OH_AVScreenCapture_ContentFilter *filter, int32_t *windowIDs, int32_t windowCount)
679```
680
681**描述**
682
683向ContentFilter实例添加可被过滤的窗口ID列表。
684
685**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
686
687**起始版本:** 12
688
689
690**参数:**
691
692| 参数项 | 描述 |
693| -- | -- |
694| [struct OH_AVScreenCapture_ContentFilter](capi-avscreencapture-oh-avscreencapture-contentfilter.md) *filter | 指向OH_AVScreenCapture_ContentFilter实例的指针。 |
695| int32_t *windowIDs | 指向窗口ID的指针。 |
696| int32_t windowCount | 窗口ID列表的长度。 |
697
698**返回:**
699
700| 类型 | 说明 |
701| -- | -- |
702| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | 执行成功返回AV_SCREEN_CAPTURE_ERR_OK,否则返回具体错误码。 |
703
704### OH_AVScreenCapture_ResizeCanvas()
705
706```
707OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ResizeCanvas(struct OH_AVScreenCapture *capture,int32_t width, int32_t height)
708```
709
710**描述**
711
712调整屏幕的分辨率。<br> 调用该方法可以设置录屏屏幕数据的分辨率,width为屏幕的宽度,height为屏幕的高度。<br> 该接口目前仅支持录屏取码流的场景,不支持录屏存文件的场景。并且调用该接口的调用者以及视频数据的消费者需要确保自身能够支持收到的视频数据分辨率发生变化。
713
714**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
715
716**起始版本:** 12
717
718
719**参数:**
720
721| 参数项 | 描述 |
722| -- | -- |
723| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
724| int32_t width | 录屏屏幕的宽度。 |
725| int32_t height | 录屏屏幕的高度。 |
726
727**返回:**
728
729| 类型 | 说明 |
730| -- | -- |
731| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_UNSUPPORT(API 20新增):设备不支持该操作。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作。 |
732
733### OH_AVScreenCapture_SkipPrivacyMode()
734
735```
736OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SkipPrivacyMode(struct OH_AVScreenCapture *capture,int32_t *windowIDs, int32_t windowCount)
737```
738
739**描述**
740
741录屏时豁免隐私窗口。<br> 调用该方法可以豁免隐私窗口,windowIDs为需要豁免的隐私窗口ID指针,windowCount 为隐私窗口ID列表的长度,目前豁免需要传入所有隐私子窗口和主窗口ID。
742
743**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
744
745**起始版本:** 12
746
747
748**参数:**
749
750| 参数项 | 描述 |
751| -- | -- |
752| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
753| int32_t *windowIDs | 向隐私窗口ID的指针。 |
754| int32_t windowCount | 隐私窗口ID列表的长度。 |
755
756**返回:**
757
758| 类型 | 说明 |
759| -- | -- |
760| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_UNSUPPORT(API 20新增):设备不支持该操作。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作。 |
761
762### OH_AVScreenCapture_SetMaxVideoFrameRate()
763
764```
765OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMaxVideoFrameRate(struct OH_AVScreenCapture *capture,int32_t frameRate)
766```
767
768**描述**
769
770设置录屏时的最大帧率。<br> 该接口应在录屏启动之后被调用。<br> 调用该方法可以设置录屏时的最大帧率,frameRate为想要设置的最大帧率。<br> 该接口设置最大帧率时,实际设置的帧率受限设备的能力,由底层的系统能力决定。<br> 调用该接口设置录屏最大帧率时,实际帧率将受限于设备能力。目前接口入参的最大值不设限制,但当前支持的最高帧率为60FPS,当入参设置超过60FPS,将以60FPS处理。不超过上限时,则按照实际入参值处理。
771
772**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
773
774**起始版本:** 14
775
776
777**参数:**
778
779| 参数项 | 描述 |
780| -- | -- |
781| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
782| int32_t frameRate | 录屏的最大帧率。 |
783
784**返回:**
785
786| 类型 | 说明 |
787| -- | -- |
788| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或者输入参数frameRate不支持。<br>         AV_SCREEN_CAPTURE_ERR_UNSUPPORT(API 20新增):设备不支持该操作。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作。 |
789
790### OH_AVScreenCapture_ShowCursor()
791
792```
793OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ShowCursor(struct OH_AVScreenCapture *capture,bool showCursor)
794```
795
796**描述**
797
798设置光标显示开关。
799
800**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
801
802**起始版本:** 15
803
804
805**参数:**
806
807| 参数项 | 描述 |
808| -- | -- |
809| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
810| bool showCursor | 光标显示参数。 |
811
812**返回:**
813
814| 类型 | 说明 |
815| -- | -- |
816| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。<br>         AV_SCREEN_CAPTURE_ERR_UNSUPPORT(API 20新增):设备不支持该操作。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置光标失败。 |
817
818### OH_AVScreenCapture_SetDisplayCallback()
819
820```
821OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetDisplayCallback(struct OH_AVScreenCapture *capture,OH_AVScreenCapture_OnDisplaySelected callback, void *userData)
822```
823
824**描述**
825
826设置获取录屏屏幕Id的回调。
827
828**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
829
830**起始版本:** 15
831
832
833**参数:**
834
835| 参数项 | 描述 |
836| -- | -- |
837| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
838| [OH_AVScreenCapture_OnDisplaySelected](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_ondisplayselected) callback | 指向录屏屏幕Id回调方法实例的指针。 |
839| void *userData | 指向应用提供的自定义数据的指针,在状态处理回调方法被调用时作为入参回传。 |
840
841**返回:**
842
843| 类型 | 说明 |
844| -- | -- |
845| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针或输入参数callback为空指针。<br>         AV_SCREEN_CAPTURE_ERR_NO_MEMORY:内存不足,内存分配失败。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_STATE:回调必须在start方法前调用。 |
846
847### OH_AVScreenCapture_CreateCaptureStrategy()
848
849```
850OH_AVScreenCapture_CaptureStrategy* OH_AVScreenCapture_CreateCaptureStrategy(void)
851```
852
853**描述**
854
855创建录屏策略对象。
856
857**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
858
859**起始版本:** 20
860
861**返回:**
862
863| 类型 | 说明 |
864| -- | -- |
865| [OH_AVScreenCapture_CaptureStrategy](capi-avscreencapture-oh-avscreencapture-capturestrategy.md)* | 执行成功返回OH_AVScreenCapture_CaptureStrategy实例,否则返回空指针。 |
866
867### OH_AVScreenCapture_ReleaseCaptureStrategy()
868
869```
870OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseCaptureStrategy(OH_AVScreenCapture_CaptureStrategy* strategy)
871```
872
873**描述**
874
875释放录屏策略对象。
876
877**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
878
879**起始版本:** 20
880
881
882**参数:**
883
884| 参数项 | 描述 |
885| -- | -- |
886| [OH_AVScreenCapture_CaptureStrategy](capi-avscreencapture-oh-avscreencapture-capturestrategy.md)* strategy | 指向录屏策略对象的指针。 |
887
888**返回:**
889
890| 类型 | 说明 |
891| -- | -- |
892| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数strategy为空指针。 |
893
894### OH_AVScreenCapture_SetCaptureStrategy()
895
896```
897OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCaptureStrategy(struct OH_AVScreenCapture *capture, OH_AVScreenCapture_CaptureStrategy *strategy)
898```
899
900**描述**
901
902给指定的OH_AVScreenCapture实例设置捕获策略。<br> 该接口应在录屏启动之前被调用。
903
904**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
905
906**起始版本:** 20
907
908
909**参数:**
910
911| 参数项 | 描述 |
912| -- | -- |
913| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
914| [OH_AVScreenCapture_CaptureStrategy](capi-avscreencapture-oh-avscreencapture-capturestrategy.md) *strategy | 指向捕获策略对象的指针。 |
915
916**返回:**
917
918| 类型 | 说明 |
919| -- | -- |
920| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture或strategy为空指针。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_STATE:在录屏启动之后调用该接口。 |
921
922### OH_AVScreenCapture_StrategyForCanvasFollowRotation()
923
924```
925OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForCanvasFollowRotation(OH_AVScreenCapture_CaptureStrategy *strategy, bool value)
926```
927
928**描述**
929
930设置屏幕录屏自动跟随旋转配置。设为ture,表示跟随屏幕旋转,并在横竖屏旋转后,自动调换虚拟屏尺寸,确保输出画面及时跟随旋转。<br> 设置是否自动跟随旋转配置后,在旋转通知后,无需再手动调用[OH_AVScreenCapture_ResizeCanvas](#oh_avscreencapture_resizecanvas)接口。
931
932**起始版本:** 20
933
934
935**参数:**
936
937| 参数项 | 描述 |
938| -- | -- |
939| [OH_AVScreenCapture_CaptureStrategy](capi-avscreencapture-oh-avscreencapture-capturestrategy.md) *strategy | 指向OH_AVScreenCapture_CaptureStrategy实例的指针。 |
940| bool value | 虚拟屏的宽和高是否跟随屏幕旋转而旋转。<br> true表示虚拟屏的宽和高随着屏幕的旋转而旋转,false表示虚拟屏的宽和高保持初始设定。<br> 默认是false。 |
941
942**返回:**
943
944| 类型 | 说明 |
945| -- | -- |
946| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数strategy为空指针。 |
947
948### OH_AVScreenCapture_StrategyForKeepCaptureDuringCall()
949
950```
951OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForKeepCaptureDuringCall(OH_AVScreenCapture_CaptureStrategy *strategy, bool value)
952```
953
954**描述**
955
956向CaptureStrategy实例设置蜂窝通话时是否保持录屏。<br> value设置为true时并且录屏时接听蜂窝通话的过程中,出于隐私要求,双方通话的声音(本地麦克风和对方说话声音)不会被录制,其他系统音录制正常。电话挂断之后,录屏框架恢复麦克风录制。注意,如果挂断电话时录屏应用在后台运行,麦克风录制会启动失败,原因是音频模块不允许后台应用启动麦克风录制。
957
958**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
959
960**起始版本:** 20
961
962
963**参数:**
964
965| 参数项 | 描述 |
966| -- | -- |
967| [OH_AVScreenCapture_CaptureStrategy](capi-avscreencapture-oh-avscreencapture-capturestrategy.md) *strategy | 指向OH_AVScreenCapture_CaptureStrategy对象的指针。 |
968| bool value | 蜂窝通话时是否可以进行屏幕录制。<br> true表示蜂窝通话时可以录屏,false表示蜂窝通话时不允许录屏。<br> 默认是false。 |
969
970**返回:**
971
972| 类型 | 说明 |
973| -- | -- |
974| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数strategy为空指针。 |
975
976### OH_AVScreenCapture_SetCaptureContentChangedCallback()
977
978```
979OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCaptureContentChangedCallback(struct OH_AVScreenCapture *capture,OH_AVScreenCapture_OnCaptureContentChanged callback, void *userData)
980```
981
982**描述**
983
984设置录屏内容变更回调事件,需在录屏启动前被调用。
985
986**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
987
988**起始版本:** 20
989
990
991**参数:**
992
993| 参数项 | 描述 |
994| -- | -- |
995| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture实例的指针。 |
996| [OH_AVScreenCapture_OnCaptureContentChanged](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_oncapturecontentchanged) callback | 指向录屏内容变更回调方法实例的指针。 |
997| void *userData | 指向应用提供的自定义数据的指针,在错误处理回调方法被调用时作为入参回传。 |
998
999**返回:**
1000
1001| 类型 | 说明 |
1002| -- | -- |
1003| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:操作成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:参数无效,输入参数capture或callback为空指针。<br>         AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT:不允许操作,设置录屏内容回调失败。 |
1004
1005### OH_AVScreenCapture_SetCaptureArea()
1006
1007```
1008OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCaptureArea(struct OH_AVScreenCapture *capture,uint64_t displayId, OH_Rect* area)
1009```
1010
1011**描述**
1012
1013设置或更新捕获区域。<br> 接口在开始录屏前后都可以设置,设置的坐标和宽高不能为负数,捕获区域不能跨屏幕,区域位置设置失败后仍按照上一次的区域进行捕获。
1014
1015**起始版本:** 20
1016
1017
1018**参数:**
1019
1020| 参数项 | 描述 |
1021| -- | -- |
1022| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 指向OH_AVScreenCapture的指针。 |
1023| uint64_t displayId | 需要执行屏幕捕获的屏幕ID。 |
1024| [OH_Rect](capi-avscreencapture-oh-rect.md)* area | 指定捕获的区域。 |
1025
1026**返回:**
1027
1028| 类型 | 说明 |
1029| -- | -- |
1030| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针、输入displayId不存在或输入的捕获区域异常。 |
1031
1032### OH_AVScreenCapture_StrategyForPrivacyMaskMode()
1033
1034```
1035OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForPrivacyMaskMode(OH_AVScreenCapture_CaptureStrategy *strategy, int32_t value)
1036```
1037
1038**描述**
1039
1040设置隐私窗口屏蔽模式。
1041
1042**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1043
1044**起始版本:** 20
1045
1046
1047**参数:**
1048
1049| 参数项 | 描述 |
1050| -- | -- |
1051| [OH_AVScreenCapture_CaptureStrategy](capi-avscreencapture-oh-avscreencapture-capturestrategy.md) *strategy | 指向OH_AVScreenCapture_CaptureStrategy实例的指针。 |
1052| int32_t value | 设置为0,表示存在隐私窗口时,采用全屏屏蔽模式。<br> 设置为1,表示存在隐私窗口时,采用隐私窗口屏蔽模式,设置为其他值时返回错误。 |
1053
1054**返回:**
1055
1056| 类型 | 说明 |
1057| -- | -- |
1058| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数strategy为空指针或输入value为无效值。 |
1059
1060### OH_AVScreenCapture_SetSelectionCallback()
1061
1062```
1063OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetSelectionCallback(struct OH_AVScreenCapture *capture,OH_AVScreenCapture_OnUserSelected callback, void *userData)
1064```
1065
1066**描述**
1067
1068注册手工确认界面用户选择结果的回调,需在录屏启动前被调用。
1069
1070**起始版本:** 20
1071
1072
1073**参数:**
1074
1075| 参数项 | 描述 |
1076| -- | -- |
1077| [struct OH_AVScreenCapture](capi-avscreencapture-oh-avscreencapture.md) *capture | 需要注册该回调的屏幕捕获对象。 |
1078| [OH_AVScreenCapture_OnUserSelected](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onuserselected) callback | 用户在界面确认后,通过该函数通知应用进行逻辑处理。 |
1079| void *userData | 应用传入的控制块指针,在返回时携带给应用。 |
1080
1081**返回:**
1082
1083| 类型 | 说明 |
1084| -- | -- |
1085| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数capture为空指针。 |
1086
1087### OH_AVScreenCapture_GetCaptureTypeSelected()
1088
1089```
1090OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_GetCaptureTypeSelected(OH_AVScreenCapture_UserSelectionInfo *selection,int32_t* type)
1091```
1092
1093**描述**
1094
1095获取用户在确认界面选择的屏幕捕获对象类型。在[OH_AVScreenCapture_OnUserSelected](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onuserselected)回调中使用,selection指针在回调结束后销毁。
1096
1097**起始版本:** 20
1098
1099
1100**参数:**
1101
1102| 参数项 | 描述 |
1103| -- | -- |
1104| [OH_AVScreenCapture_UserSelectionInfo](capi-avscreencapture-oh-avscreencapture-userselectioninfo.md) *selection | 指向OH_AVScreenCapture_UserSelectionInfo实例的指针。 |
1105| int32_t* type | 用户选择的捕获对象类型,0:代表屏幕,1:代表窗口。 |
1106
1107**返回:**
1108
1109| 类型 | 说明 |
1110| -- | -- |
1111| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数selection为空指针。 |
1112
1113### OH_AVScreenCapture_GetDisplayIdSelected()
1114
1115```
1116OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_GetDisplayIdSelected(OH_AVScreenCapture_UserSelectionInfo *selection,uint64_t* displayId)
1117```
1118
1119**描述**
1120
1121获取确认页面,用户选择录制的屏幕ID。在[OH_AVScreenCapture_OnUserSelected](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_onuserselected)回调中使用,selection指针在回调结束后销毁。
1122
1123**起始版本:** 20
1124
1125
1126**参数:**
1127
1128| 参数项 | 描述 |
1129| -- | -- |
1130| [OH_AVScreenCapture_UserSelectionInfo](capi-avscreencapture-oh-avscreencapture-userselectioninfo.md) *selection | 指向OH_AVScreenCapture_UserSelectionInfo实例的指针。 |
1131| uint64_t* displayId | 返回用户选择的屏幕ID。 |
1132
1133**返回:**
1134
1135| 类型 | 说明 |
1136| -- | -- |
1137| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数selection为空指针。 |
1138
1139### OH_AVScreenCapture_StrategyForBFramesEncoding()
1140
1141```
1142OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForBFramesEncoding(OH_AVScreenCapture_CaptureStrategy *strategy, bool value)
1143```
1144
1145**描述**
1146
1147向CaptureStrategy实例设置是否使能B帧编码,用于减小录制文件的大小。<br> B帧视频编码相关的约束和限制可以参考文档[B帧视频编码约束和限制](../../media/avcodec/video-encoding-b-frame.md#约束和限制)。如果当前不符合B帧视频编码的约束和限制,则正常录制不含B帧的视频,不会返回错误。
1148
1149**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
1150
1151**起始版本:** 20
1152
1153
1154**参数:**
1155
1156| 参数项 | 描述 |
1157| -- | -- |
1158| [OH_AVScreenCapture_CaptureStrategy](capi-avscreencapture-oh-avscreencapture-capturestrategy.md) *strategy | 指向OH_AVScreenCapture_CaptureStrategy对象的指针。 |
1159| bool value | 录屏文件是否使能B帧编码。<br> true表示录屏文件使能B帧编码,false表示录屏文件禁用B帧编码。<br> 默认是false。 |
1160
1161**返回:**
1162
1163| 类型 | 说明 |
1164| -- | -- |
1165| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数strategy为空指针。 |
1166
1167### OH_AVScreenCapture_StrategyForPickerPopUp()
1168
1169```
1170OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForPickerPopUp(OH_AVScreenCapture_CaptureStrategy *strategy, bool value)
1171```
1172
1173**描述**
1174
1175设置是否弹出屏幕捕获Picker。
1176
1177**起始版本:** 20
1178
1179
1180**参数:**
1181
1182| 参数项 | 描述 |
1183| -- | -- |
1184| [OH_AVScreenCapture_CaptureStrategy](capi-avscreencapture-oh-avscreencapture-capturestrategy.md) *strategy | 指向OH_AVScreenCapture_CaptureStrategy对象的指针。 |
1185| bool value | 设置为false,代表APP已经指定了录屏内容,录屏启动后无需弹出Picker;设置为true代表录屏启动后统一弹出Picker;不设置,代表使用系统推荐行为。 |
1186
1187**返回:**
1188
1189| 类型 | 说明 |
1190| -- | -- |
1191| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数strategy为空指针或输入value为无效值。 |
1192
1193### OH_AVScreenCapture_StrategyForFillMode()
1194
1195```
1196OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StrategyForFillMode(OH_AVScreenCapture_CaptureStrategy *strategy, OH_AVScreenCapture_FillMode mode)
1197```
1198
1199**描述**
1200
1201设置捕获图像在目标区域的填充模式。
1202
1203**起始版本:** 20
1204
1205
1206**参数:**
1207
1208| 参数项 | 描述 |
1209| -- | -- |
1210| [OH_AVScreenCapture_CaptureStrategy](capi-avscreencapture-oh-avscreencapture-capturestrategy.md) *strategy | 指向OH_AVScreenCapture_CaptureStrategy对象的指针。 |
1211| [OH_AVScreenCapture_FillMode](capi-native-avscreen-capture-base-h.md#oh_avscreencapture_fillmode) mode | 捕获图像在输出图像上的填充模式。 |
1212
1213**返回:**
1214
1215| 类型 | 说明 |
1216| -- | -- |
1217| [OH_AVSCREEN_CAPTURE_ErrCode](capi-native-avscreen-capture-errors-h.md#oh_avscreen_capture_errcode) | AV_SCREEN_CAPTURE_ERR_OK:执行成功。<br>         AV_SCREEN_CAPTURE_ERR_INVALID_VAL:输入参数strategy为空指针。 |
1218
1219
1220