# AVScreenCapture ## 概述 AVScreenCapture模块提供用于屏幕录制的函数。 \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **起始版本:** 10 ## 汇总 ### 文件 | 名称 | 描述 | | -------- | -------- | | [native_avscreen_capture.h](native__avscreen_capture_8h.md) | 声明用于构造屏幕录制对象的Native API。
引用文件: | | [native_avscreen_capture_base.h](native__avscreen_capture_base_8h.md) | 声明用于运行屏幕录制通用的结构体、字符常量、枚举。
引用文件: | | [native_avscreen_capture_errors.h](native__avscreen_capture_errors_8h.md) | 声明用于运行屏幕录制过程中接口调用的错误码说明。
引用文件: | ### 函数 | 名称 | 描述 | | -------- | -------- | | \*[OH_AVScreenCapture_Create](#oh_avscreencapture_create) (void) | 实例化对象,创建OH_AVScreenCapture。 | | [OH_AVScreenCapture_Init](#oh_avscreencapture_init) (OH_AVScreenCapture \*capture, OH_AVScreenCaptureConfig config) | 初始化录屏实例相关参数,实现对图形子系统和音频子系统相关初始化工作。 | | [OH_AVScreenCapture_StartScreenCapture](#oh_avscreencapture_startscreencapture) (OH_AVScreenCapture \*capture) | 开始录屏,调用后可以通过相关接口拿到视频和音频的原始码流 | | [OH_AVScreenCapture_StopScreenCapture](#oh_avscreencapture_stopscreencapture) (OH_AVScreenCapture \*capture) | 结束录屏 | | [OH_AVScreenCapture_AcquireAudioBuffer](#oh_avscreencapture_acquireaudiobuffer) (OH_AVScreenCapture \*capture, OH_AudioBuffer \*\*audiobuffer, OH_AudioCaptureSourceType type) | 获取音频原始码流接口,包括音频流的类型和长度相关信息 | | \*[OH_AVScreenCapture_AcquireVideoBuffer](#oh_avscreencapture_acquirevideobuffer) (OH_AVScreenCapture \*capture, int32_t \*fence, int64_t \*timestamp, struct OH_Rect \*region) | 获取视频原始码流接口,通过此接口可以获取视频码流以及每帧视频的信息 | | [OH_AVScreenCapture_ReleaseAudioBuffer](#oh_avscreencapture_releaseaudiobuffer) (OH_AVScreenCapture \*capture, OH_AudioCaptureSourceType type) | 释放根据音频类型释放音频buffer,用于用完的音频的buffer的释放 | | [OH_AVScreenCapture_ReleaseVideoBuffer](#oh_avscreencapture_releasevideobuffer) (OH_AVScreenCapture \*capture) | 释放视频的buffer,用于用完的视频的buffer的释放 | | [OH_AVScreenCapture_SetCallback](#oh_acscreencapture_setcallback) (OH_AVScreenCapture \*capture, OH_AVScreenCaptureCallback callback) | 设置回调的接口,用于回调相关事件的监听 | | [OH_AVScreenCapture_SetMicrophoneEnabled](#oh_avscreencapture_setmicrophoneenabled) (OH_AVScreenCapture \*capture, bool isMicrophone) | 设置麦克风开关,关闭时,将获得无声的音频数据 | | [OH_AVScreenCapture_Release](#oh_avscreencapture_release) (OH_AVScreenCapture \*capture) | 用于录屏实例对象的释放 | ## 函数说明 ### OH_AVScreenCapture_Create() ``` struct OH_AVScreenCapture *OH_AVScreenCapture_Create(void); ``` **描述:** 实例化对象,创建OH_AVScreenCapture。可以通过调用 OH_AVScreenCapture_Release 释放实例。 \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | void | 无需入参函数 | **返回:** 返回一个指向OH_AVScreenCapture实例的指针。 **起始版本:** 10 ### OH_AVScreenCapture_Init() ``` OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Init(struct OH_AVScreenCapture *capture, OH_AVScreenCaptureConfig config); ``` **描述:** 初始化OH_AVScreenCapture相关参数,包括下发的音频麦克风采样信息参数,音频内录相关参数(可选),视频分辨率相关参数 调用此函数,需要向申请麦克风权限(ohos.permission.MICROPHONE)和截屏权限(ohos.permission.CAPTURE_SCREEN),否则会初始化失败导致无法正常录屏 \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | capture | 指向OH_AVScreenCapture实例的指针。 | | config | 录屏初始化相关参数。 | **返回:** 执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](_core.md#native__avscreen_capture_errors_8h.md)。 **起始版本:** 10 ### OH_AVScreenCapture_StartScreenCapture() ``` OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenCapture(struct OH_AVScreenCapture *capture); ``` **描述:** 开始录屏接口,调用该接口后,可以通过回调的监听(OH_AVScreenCaptureOnAudioBufferAvailable,OH_AVScreenCaptureOnVideoBufferAvailable)来监听当前是否有码流的产生。 通过调用获取音频buffer(OH_AVScreenCapture_AcquireAudioBuffer)和视频buffer(OH_AVScreenCapture_ReleaseVideoBuffer)的接口来获取录屏的原始码流 \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | capture | 指向OH_AVScreenCapture实例的指针。 | **返回:** 执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](_core.md#native__avscreen_capture_errors_8h.md)。 **起始版本:** 10 ### OH_AVScreenCapture_StopScreenRecording() ``` OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenRecording(struct OH_AVScreenCapture *capture); ``` **描述:** 停止录屏接口, 主要用于停止录屏数据的继续生产 \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | capture | 指向OH_AVScreenCapture实例的指针。 | **返回:** 执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](_core.md#native__avscreen_capture_errors_8h.md)。 **起始版本:** 10 ### OH_AVScreenCapture_AcquireAudioBuffer() ``` OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_AcquireAudioBuffer(struct OH_AVScreenCapture *capture, OH_AudioBuffer **audiobuffer, OH_AudioCaptureSourceType type); ``` **描述:** 获取音频buffer,应用在调用时,需要对audiobuffer分配对应结构体大小的内存,否则会影响拿到音频buffer的获取 buffer使用完成后,调用OH_AVScreenCapture_ReleaseAudioBuffer接口进行音频buffer的释放 \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | capture | 指向OH_AVScreenCapture实例的指针。 | | audiobuffer | 保存音频buffer的结构体,通过该结构体获取到音频buffer以及buffer的时间戳等信息。 | | type | 音频buffer的类型,区分mic流还是内录流。 | **返回:** 执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](_core.md#native__avscreen_capture_errors_8h.md)。 **起始版本:** 10 ### OH_AVScreenCapture_AcquireVideoBuffer() ``` OH_NativeBuffer* OH_AVScreenCapture_AcquireVideoBuffer(struct OH_AVScreenCapture *capture, int32_t *fence, int64_t *timestamp, struct OH_Rect *region); ``` **描述:** 获取视频buffer,应用在调用时,通过此接口来获取到视频的buffer以及时间戳等信息 buffer使用完成后,调用OH_AVScreenCapture_ReleaseVideoBuffer接口进行视频buffer的释放 \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | capture | 指向OH_AVScreenCapture实例的指针。 | | fence | 用于同步的显示相关参数信息。| | timestamp | 视频帧的时间戳 | | region | 视频显示相关的坐标信息 | **返回:** 执行成功返回OH_NativeBuffer对象, 通过OH_NativeBuffer对象相关接口可以获取到视频buffer和粉分辨率等信息参数。 **起始版本:** 10 ### OH_AVScreenCapture_ReleaseAudioBuffer() ``` OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseAudioBuffer(struct OH_AVScreenCapture *capture, OH_AudioCaptureSourceType type); ``` **描述:** 释放音频buffer, 与OH_AVScreenCapture_AcquireAudioBuffer相对应,当某一帧音频buffer使用完成后,调用此接口进行释放对应的音频buffer \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | capture | 指向OH_AVScreenCapture实例的指针。 | | type | 音频buffer的类型,区分mic流还是内录流。| **返回:** 执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](_core.md#native__avscreen_capture_errors_8h.md)。 **起始版本:** 10 ### OH_AVScreenCapture_ReleaseVideoBuffer() ``` OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseVideoBuffer(struct OH_AVScreenCapture *capture); ``` **描述:** 释放视频buffer, 与OH_AVScreenCapture_AcquireVideoBuffer相对应,当某一帧视频buffer使用完成后,调用此接口进行释放对应的视频buffer \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | capture | 指向OH_AVScreenCapture实例的指针。 | **返回:** 执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](_core.md#native__avscreen_capture_errors_8h.md)。 **起始版本:** 10 ### OH_AVScreenCapture_SetCallback() ``` OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCallback(struct OH_AVScreenCapture *capture, struct OH_AVScreenCaptureCallback callback); ``` **描述:** 设置监听接口,通过设置监听,可以监听到调用过程中的错误信息,以及是否有可用的视频buffer和音频buffer \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | capture | 指向OH_AVScreenCapture实例的指针。 | | callback | OH_AVScreenCaptureCallback的结构体,保存相关回调函数指针。 | **返回:** 执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](_core.md#native__avscreen_capture_errors_8h.md)。 **起始版本:** 10 ### OH_AVScreenCapture_SetMicrophoneEnabled() ``` OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMicrophoneEnabled(struct OH_AVScreenCapture *capture, bool isMicrophone); ``` **描述:** 设置mic开关,isMicrophone为true时,则打开麦克风,通过调用OH_AVScreenCapture_StartScreenRecording和OH_AVScreenCapture_AcquireAudioBuffer可以正常获取到音频的麦克风原始pcm数据,为false时,获取到的音频数据为无声数据 \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | capture | 指向OH_AVScreenCapture实例的指针。 | | isMicrophone | 麦克风开关参数 | **返回:** 执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](_core.md#native__avscreen_capture_errors_8h.md)。 **起始版本:** 10 ### OH_AVScreenCapture_Release() ``` OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Release(struct OH_AVScreenCapture *capture); ``` **描述:** 将创建的OH_AVScreenCapture实例进行释放,对应OH_AVScreenCapture_Create \@syscap SystemCapability.Multimedia.Media.AVScreenCapture **参数:** | 名称 | 描述 | | -------- | -------- | | capture | 指向OH_AVScreenCapture实例的指针。 | **返回:** 执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](_core.md#native__avscreen_capture_errors_8h.md)。 **起始版本:** 10