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