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