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