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