diff --git a/zh-cn/application-dev/media/Readme-CN.md b/zh-cn/application-dev/media/Readme-CN.md index 2fac2281c20827d058b7bc483bd7e038da33cfab..a798bf1dd8d9cebb0892ff29f9d92c834f363ce0 100755 --- a/zh-cn/application-dev/media/Readme-CN.md +++ b/zh-cn/application-dev/media/Readme-CN.md @@ -31,6 +31,9 @@ - [开发音频通话功能](audio-call-development.md) - [视频播放](video-playback.md) - [视频录制](video-recording.md) + - 屏幕录制 + - [屏幕录制开发概述](avscreen-capture-overview.md) + - [开发屏幕录制功能](avscreen-capture-development.md) - 音视频编解码 - [获取支持的编解码能力](obtain-supported-codecs.md) - [音频编码](audio-encoding.md) diff --git a/zh-cn/application-dev/media/avscreen-capture-development.md b/zh-cn/application-dev/media/avscreen-capture-development.md new file mode 100644 index 0000000000000000000000000000000000000000..d7c868bf9e3d8546289b1e22ca733a48966521b5 --- /dev/null +++ b/zh-cn/application-dev/media/avscreen-capture-development.md @@ -0,0 +1,231 @@ +# 开发屏幕录制功能 + +屏幕录制功能主要有主屏幕录屏、指定物理屏录屏和应用内录屏三个子功能。 + +录屏(AVScreenCapture)以单独的原子能力构建,北向给开发者提供能力接口,视频采集南向对接窗口子系统和图形子系统,语音采集和编码后码流横向在媒体子系统内部对接AudioService和AVCodecService。AVScreenCapture采用client-server设计结构,用openharmony IPC进行通信,图中绿色为新增模块。proxy和stub,负责IPC接口通信,npi提供kit层级的接口,client负责权限校验以及接口能力。server负责音视频的采集,以及buffer管理等。 + +主屏幕录屏:录屏框架在makeMirror时默认使用主屏;图形默认根据主屏produce surface到BufferQueue;录屏框架从BufferQueue consumer数据进行相应处理。 + +指定物理屏录屏:app从窗口子系统获取所有displayId;app根据用户选择,在调用录屏框架接口init时,带入用户选择 共享的屏幕;录屏框架在makeMirror时,传入displayId给窗口子系统; 窗口子系统向图形那边设置图层白名单;图形根据设置的白名单图层produce surface到BufferQueue; 录屏框架从BufferQueue consumer数据进行相应处理。(api 10对此功能暂仅作参数预留,未做实际实现) + +应用内录屏:app从missionManger获取全局的mission;app根据用户选择,在调用录屏框架接口init时,带入用户选择 的missionId(可以是多个);录屏框架在createVirtualScreen时,传入missionId给窗口子系统;窗口子系统向图形那边设置图层白名单;图形根据设置的白名单图层produce surface到BufferQueue;录屏框架从BufferQueue consumer数据进行相应处理。(api 10对此功能暂仅作参数预留,未做实际实现) + +## 开发指导 + +使用AVScreenCapture录制屏幕涉及到AVScreenCapture实例的创建、音视频采集参数的配置、采集的开始与停止、资源的释放等。本开发指导将以一次录制屏幕数据的过程为例,向开发者讲解如何使用AVScreenCapturer进行屏幕录制,详细的API声明请参考[AVScreenCapture API参考](../reference/native-apis/_a_v_screen_capture.md)。 + +使用AVScreenCapture时要注意状态的变化,在创建实例后,调用对应的方法可以进入指定的状态实现对应的行为。需要注意的是在确定的状态执行不合适的方法可能导致AVScreenCapture发生错误,建议开发者在调用状态转换的方法前进行状态检查,避免程序运行产生预期以外的结果。 + +### 开发步骤及注意事项 + +开发者可以通过以下几个步骤来实现一个简单的屏幕录制功能。 + +1. 创建AVScreenCapture实例capture。 + + ```c++ + + OH_AVScreenCapture* capture = AVScreenCapture_Create(); + ``` + +2. 配置屏幕录制参数。 + 创建AVScreenCapture实例capture后,可以设置屏幕录制所需要的参数,可以参考下面的案例。 + ```c++ + + OH_AudioCaptureInfo miccapinfo = { + .audioSampleRate = 16000, + .audioChannels = 2, + .audioSource = OH_MIC + }; + OH_VideoCaptureInfo videocapinfo = { + .videoFrameWidth = display->GetWidth(), + .videoFrameHeight = display->Height(), + .videoSource = OH_VIDEO_SOURCE_SURFACE_RGBA + }; + OH_AudioInfo audioinfo = { + .micCapInfo = miccapinfo, + }; + OH_VideoInfo videoinfo = { + .videoCapInfo = videocapinfo + }; + OH_RecorderInfo recorderinfo = { + .url = name + }; + OH_AVScreenCaptureConfig config = { + .captureMode = OH_CAPTURE_HOME_SCREEN, + .dataType = OH_ORIGINAL_STREAM, + .audioInfo = audioinfo, + .videoInfo = videoinfo, + .recorderInfo = recorderinfo + }; + OH_AVScreenCapture_Init(capture, config); + ``` + +3. 设置麦克风开关。 + + ```c++ + + bool isMic = true; + OH_AVScreenCapture_SetMicrophoneEnabled(capture, isMic); + ``` + +4. 回调函数的设置,主要监听录屏过程中的错误事件的发生,音频流和视频流数据的产生事件。 + + ```c++ + + OH_AVScreenCaptureCallback callback; + callback.onAudioBufferAvailable = OnAudioBufferAvailable; + callback.onVideoBufferAvailable = OnVideoBufferAvailable; + OH_AVScreenCapture_SetCallback(capture, callback); + ``` + +5. 调用StartScreenCapture方法开始进行屏幕录制。 + + ```c++ + + OH_AVScreenCapture_StartScreenCapture(capture); + ``` + +6. 调用StopScreenCapture()方法停止录制。 + + ```c++ + + OH_AVScreenCapture_StopScreenCapture(capture_); + ``` + +7. 调用AcquireAudioBuffer()获取音频原始码流数据 + + ```c++ + + OH_AVScreenCapture_AcquireAudioBuffer(capture, &audiobuffer, type); + ``` + +8. 调用AcquireVideoBuffer()方法停止录制。 + + ```c++ + + OH_NativeBuffer* buffer = OH_ScreenCapture_AcquireVideoBuffer(capture, &fence, ×tamp, &damage); + ``` + +9. 调用ReleaseAudioBuffer方法释放音频buffer。 + + ```c++ + + OH_ScreenCapture_ReleaseAudioBuffer(capture, type); + ``` + +10. 调用ReleaseVideoBuffer()方法停止录制。 + + ```c++ + + OH_ScreenCapture_ReleaseVideoBuffer(capture); + ``` + +11. 调用release()方法销毁实例,释放资源。 + + ```c++ + + OH_AVScreenCapture_Release(capture); + ``` + +### 完整示例 + +下面展示了使用AVScreenCapture屏幕录制的完整示例代码。 + +```c++ + +#include "multimedia/player_framework/native_avscreen_capture.h" +#include "multimedia/player_framework/native_avscreen_capture_base.h" +#include "multimedia/player_framework/native_avscreen_capture_errors.h" + +void OnError(struct OH_AVScreenCapture *capture, int32_t errorCode) +{ + (void) capture; + (void) errorCode; +} + +void OnAudioBufferAvailable(struct OH_AVScreenCapture *capture, bool isReady, OH_AudioCapSourceType type) +{ + if (isReady) { + OH_AudioBuffer *audiobuffer = (struct OH_AudioBuffer*) malloc (sizeof(OH_AudioBuffer)); + //获取音频流 + int32_t ret = OH_AVScreenCapture_AcquireAudioBuffer(capture, &audiobuffer, type); + /* get buffer */ + (void)audiobuffer->buf; + /* getbuffer size */ + (void)audiobuffer->size; + /* get audiobuffer timestampe */ + (void)audiobuffer->timestamp; + free(audiobuffer); + audiobuffer = nullptr; + //释放音频流 + int32_t ret = OH_ScreenCapture_ReleaseAudioBuffer(capture, type); + } +} + +void OnVideoBufferAvailable(struct OH_ScreenCapture *capture, bool isReady) +{ + if (isReady) { + int32_t fence = 0; + int64_t timestamp = 0; + struct OH_Rect damage; + //获取视频流 + OH_NativeBuffer* buffer = OH_ScreenCapture_AcquireVideoBuffer(capture, &fence, ×tamp, &damage); + void *virAddr = nullptr; + OH_NativeBuffer_Map(buffer, &virAddr); //获取buffer + OH_NativeBuffer_Config config; + OH_NativeBuffer_GetNativeBufferConfig(buffer, config); //获取config信息 宽,高,format + // fence, timestampe, damage 获取fence,时间戳,坐标信息 + OH_NativeBuffer_UnMap(buffer); //释放buffer + //释放视频流 + int32_t ret = OH_ScreenCapture_ReleaseVideoBuffer(capture); + } +} + +int main() +{ + //实例化ScreenCapture + struct OH_AVScreenCapture* capture = OH_AVScreenCapture_Create(void); + //设置回调 + struct OH_AVScreenCaptureCallback callback; + callback.onError = OnError; + callack.onAudioBufferAvailable = OnAudioBufferAvailable ; + callack.onVideoBufferAvailable = OnVideoBufferAvailable; + int32_t ret = OH_AVScreenCapture_SetCallback(capture, callback); + //初始化录屏,传入配置信息OH_AVScreenRecorderConfig + OH_AudioCaptureInfo miccapinfo = { + .audioSampleRate = 16000, + .audioChannels = 2, + .audioSource = OH_MIC + }; + OH_VideoCaptureInfo videocapinfo = { + .videoFrameWidth = 720, + .videoFrameHeight = 1280, + .videoSource = OH_VIDEO_SOURCE_SURFACE_RGBA + }; + OH_AudioInfo audioinfo = { + .micCapInfo = miccapinfo, + }; + OH_VideoInfo videoinfo = { + .videoCapInfo = videocapinfo + }; + OH_AVScreenCaptureConfig config = { + .captureMode = OH_CAPTURE_HOME_SCREEN, + .dataType = OH_ORIGINAL_STREAM, + .audioInfo = audioinfo, + .videoInfo = videoinfo, + .recorderInfo = recorderinfo + }; + OH_AVScreenCapture_Init(capture, config); + int32_t ret = OH_AVScreenCapture_Init(capture, &config); + //开始录屏 + int32_t ret = OH_AVScreenCapture_StartScreenCapture(capture); + //mic开关设置 + int32_t ret = OH_ScreenCapture_SetMicrophoneEnable(capture, true); + sleep(10); //录制10s + //结束录屏 + int32_t ret = OH_ScreenCapture_StopScreenCapture(capture); + //释放ScreenCapture + int32_t ret = OH_ScreenCapture_Realease(capture); + return 0; +} +``` diff --git a/zh-cn/application-dev/media/avscreen-capture-overview.md b/zh-cn/application-dev/media/avscreen-capture-overview.md new file mode 100644 index 0000000000000000000000000000000000000000..f19f4a8b742246b07988499374c031eaf48791cc --- /dev/null +++ b/zh-cn/application-dev/media/avscreen-capture-overview.md @@ -0,0 +1,15 @@ +# 屏幕录制开发概述 + +## 如何选择屏幕录制开发方式 + +录屏取码流场景,主要用于直播类app,app需要获取录屏相关的音视频码流,然后通过流流转方式或者对接CDN服务器方式,达到直播时桌面共享的场景。app配置完音视频相关参数后 ,可启动录制,在录制过程中可以控制麦克风的开关,达到mic音频是否在直播时播放,结束 直播时刻停止录制。 +另外,有些app有自己的编码器,因此需要获取的是原始码流,用于对接它内部自己的编码器 (比如:welink,内部采用webRTC,有自己的编码器)。有些app需要把流发布到CDN服务 器,那么他就需要编码后的码流。 + +- [开发屏幕录制功能](avscreen-capture-development.md):用于音频输入的Native API,仅支持PCM格式,视频输入的Native API,仅支持YUV格式,需要应用持续读取音频数据和视频数据进行工作。应用可以在音频输出和视频输出后添加数据处理,要求开发者具备音频处理和视频处理的基础知识,适用于更专业、更多样化的媒体录制应用开发。 + +## 开发录制应用须知 + +应用可以调用麦克风录制音频,但该行为属于隐私敏感行为,在调用麦克风前,需要先向用户申请权限“ohos.permission.MICROPHONE”。 +应用可以调用屏幕录制视频,但该行为属于隐私敏感行为,在调用屏幕录制前,需要先向用户申请权限“ohos.permission.CAPTURE_SCREEN”。 + +权限申请的流程请参考[访问控制授权申请指导](../security/accesstoken-guidelines.md)。 diff --git a/zh-cn/application-dev/reference/native-apis/_a_v_screen_capture.md b/zh-cn/application-dev/reference/native-apis/_a_v_screen_capture.md new file mode 100644 index 0000000000000000000000000000000000000000..f9483b7dfcf4206113d7f1260d74f357f2e82b86 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_a_v_screen_capture.md @@ -0,0 +1,364 @@ +# 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 \ No newline at end of file diff --git a/zh-cn/application-dev/reference/native-apis/_a_v_screen_capture_base.md b/zh-cn/application-dev/reference/native-apis/_a_v_screen_capture_base.md new file mode 100644 index 0000000000000000000000000000000000000000..1719bd3e22a0871c072480ef670b7d72335f04e7 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_a_v_screen_capture_base.md @@ -0,0 +1,1258 @@ +# AVScreenCaptureBase + + +## 概述 + +AVScreenCaptureBase模块提供运行录屏通用的结构体、字符常量、枚举。该模块部分参数暂时不支持,在以下说明中会详细解答。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +## 汇总 + + +### 结构体 + +| 名称 | 描述 | +| -------- | -------- | +| [OH_AudioCaptureInfo](#oh_audiocaptureinfo) | 定义音频录制audiocapture实例的描述信息。 | +| [OH_AudioEncInfo](#oh_audioencinfo) | 定义音频的编码数据的描述信息。 | +| [OH_AudioInfo](#oh_audioinfo) | 定义屏幕录制时音频的描述信息。 | +| [OH_VideoCaptureInfo](#oh_videocaptureinfo) | 定义屏幕录制中视频录制采集的描述信息。 | +| [OH_VideoEncInfo](#oh_videoencinfo) | 定义屏幕录制中视频的编码数据描述信息。 | +| [OH_VideoInfo](#oh_videoinfo) | 定义屏幕录制时视频的描述信息。 | +| [OH_RecorderInfo](#oh_recorderinfo) | 定义屏幕录制保存音视频文件的参数描述信息。 | +| [OH_AVScreenCaptureConfig](#oh_avscreencaptureconfig) | 定义整体avscreencapture的配置信息。 | +| [OH_AVScreenCaptureCallback](_a_v_screen_capture_callback.md) | 定义avscreencapture的回调信息,包含不同的回调函数类型。 | +| [OH_Rect](#oh_rect) | 定义录屏的宽高以及画面信息。 | +| [OH_AudioBuffer](#oh_audiobuffer) | 定义了音频数据的大小,类型,时间戳等配置信息。 | + +### 类型定义 +| 名称 | 描述 | +| -------- | -------- | +| (\*[OH_AVScreenCaptureOnError](#oh_avscreencaptureonerror)) (OH_AVScreenCapture \*capture, int32_t errorCode)| 当screencapture在运行过程中执行某一流程出现错误,则调用该函数指针并上报错误码。 | +| (\*[OH_AVScreenCaptureOnAudioBufferAvailable](#oh_avscreencaptureonaudiobufferavailable)) (OH_AVScreenCapture \*capture, bool isReady, OH_AudioCaptureSourceType type)| 当screencapture在运行,音频缓冲可用时,调用该函数指针并更新状态信息。 | +| (\*[OH_AVScreenCaptureOnVideoBufferAvailable](#oh_avscreencaptureonvideobufferavailable)) (OH_AVScreenCapture \*capture, bool isReady)| 当screencapture在运行,视频缓冲可用时,调用该函数指针并更新状态信息。 | + +### 枚举 + +| 名称 | 描述 | +| -------- | -------- | +| [OH_CaptureMode](#oh_capturemode) {
**OH_CAPTURE_HOME_SCREEN** = 0,**OH_CAPTURE_SPECIFIED_SCREEN** = 1, **OH_CAPTURE_SPECIFIED_WINDOW** = 2, **OH_CAPTURE_INVAILD** = -1
} | 屏幕录制的不同模式。 | +| [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) {
**OH_SOURCE_INVALID** = -1, **OH_SOURCE_DEFAULT** = 0, **OH_MIC** = 1, **OH_ALL_PLAYBACK** = 2, **OH_APP_PLAYBACK** = 3
} | 屏幕录制音频的不同source类型。 | +| [OH_AudioCodecFormat](#oh_audiocodecformat) {
**OH_AUDIO_DEFAULT** = 0, **OH_AAC_LC** = 3, **OH_AUDIO_CODEC_FORMAT_BUTT**,
} | 屏幕录制音频的不同的编码格式。 | +| [OH_VideoCodecFormat](#oh_videocodecformat) {
**OH_VIDEO_DEFAULT** = 0, **OH_H264** = 2, **OH_H265** = 4, **OH_MPEG4** = 6, **OH_VP8** = 8, **OH_VP9** = 10, **OH_VIDEO_CODEC_FORMAT_BUTT**
} | 屏幕录制视频的不同编码格式。 | +| [OH_DataType](#oh_datatype) {
**OH_ORIGINAL_STREAM** = 0, **OH_ENCODED_STREAM** = 1, **OH_CAPTURE_FILE** = 2, **OH_INVAILD** = -1
} | 屏幕录制流的数据格式,编码格式,以及保存文件格式等参数。 | +| [OH_VideoSourceType](#oh_videosourcetype) {
**OH_VIDEO_SOURCE_SURFACE_YUV** = 0, **OH_VIDEO_SOURCE_SURFACE_ES**, **OH_VIDEO_SOURCE_SURFACE_RGBA**, **OH_VIDEO_SOURCE_BUTT**
} | 屏幕录制视频的不同source类型。 | +| [OH_ContainerFormatType](#oh_containerformattype) {
**CFT_MPEG_4A** = 0, **CFT_MPEG_4** = 1
} | 屏幕录制生成物的不同音视频格式类型。 | + +### 变量 + +| 名称 | 描述 | +| -------- | -------- | +| [OH_AudioCaptureInfo::audioSampleRate](#audiosamplerate) | 录屏音频采样率, 支持列表见[OH_AudioCapturer_GetSamplingRate](#_o_h_audio.md#oh_audiocapturer_getsamplingrate)。 | +| [OH_AudioCaptureInfo::audioChannels](#audiochannels) | 录屏音频声道数。 | +| [OH_AudioCaptureInfo::audioSource](#audiosource) | 录屏音频的source源,如麦克风或者内录。 | +| [OH_AudioEncInfo::audioBitrate](#audioBitrate) | 录制音频的比特率,用于编码相关参数的设置。 | +| [OH_AudioEncInfo::audioCodecformat](#audiocodecformat) | 录制音频的编码格式。 | +| [OH_AudioInfo::micCapInfo](#miccapinfo) | 录制的mic的音频参数设置,设置类型为OH_AudioCaptureInfo。 | +| [OH_AudioInfo::innerCapInfo](#innercapinfo) | 录制的内录的音频参数设置,设置类型为OH_AudioCaptureInfo。 | +| [OH_AudioInfo::audioEncInfo](#audioencinfo) | 录制音频编码的相关参数,设置类型为OH_AudioEncInfo。 | +| [OH_VideoCaptureInfo::displayId](#displayId) | 录制物理屏id,使用该参数需要在capturemode为CAPTURE_SPECIFIED_SCREEN模式下使用。 | +| [OH_VideoCaptureInfo::missionIDs](#missionids) | 指定窗口id列表,使用该参数需要在capturemode为CAPTURE_SPECIFIED_WINDOW模式下使用。 | +| [OH_VideoCaptureInfo::missionIDsLen](#missionidslen) | 指定窗口的,使用该参数需要在capturemode为CAPTURE_SPECIFIED_WINDOW模式下使用。 | +| [OH_VideoCaptureInfo::videoFrameWidth](#videoframewidth) | 采集视频的宽度设置。 | +| [OH_VideoCaptureInfo::videoFrameHeight](#videoframeheight) | 采集视频的高度设置。 | +| [OH_VideoCaptureInfo::videoSource](#videosource) | 视频采集格式设置,目前仅支持RGBA格式。 | +| [OH_VideoEncInfo::videoCodec](#videocodec) | 视频采集编码格式,类型为OH_VideoCodecFormat。 | +| [OH_VideoEncInfo::videoBitrate](#videobitrate) | 视频采集比特率。 | +| [OH_VideoEncInfo::videoFrameRate](#videoframerate) | 视频采集帧率。 | +| [OH_VideoInfo::videoCapInfo](#videocapinfo) | 视频采集信息的设置,设置类型为OH_VideoCaptureInfo。 | +| [OH_VideoInfo::videoEncInfo](#videoencinfo) | 视频编码参数的设置,设置类型为OH_VideoEncInfo。 | +| [OH_RecorderInfo::\*url](#*\url) | 录屏生成文件路径设置。 | +| [OH_RecorderInfo::urlLen](#urllen) | 录屏生成文件路径字符的长度。 | +| [OH_RecorderInfo::fileFormat](#fileformat) | 录屏生成文件格式设置,如mp4格式。 | +| [OH_AVScreenCaptureConfig::captureMode](#capturemode) | 屏幕录制方式,如全屏录制,指定物理屏录制或者指定窗口录制。 | +| [OH_AVScreenCaptureConfig::dataType](#datatype) | 屏幕录制的形式,比如录制原始码流,编码后码流还是文件。 | +| [OH_AVScreenCaptureConfig::audioInfo](#audioinfo) | 录制音频相关参数设置,类型为OH_AudioInfo。 | +| [OH_AVScreenCaptureConfig::videoInfo](#videoinfo) | 录制视频相关参数设置,类型为OH_VideoInfo。 | +| [OH_AVScreenCaptureConfig::recorderInfo](#recorderinfo) | 录屏生成文件相关参数设置,类型为OH_RecorderInfo。 | +| [OH_AVScreenCaptureCallback::onError](_a_v_screen_capture_callback.md#onerror) | 录屏过程中错误事件的监听函数。 | +| [OH_AVScreenCaptureCallback::onAudioBufferAvailable](_a_v_screen_capture_callback.md#onaudiobufferavailable) | 录屏过程中音频流产生的监听。 | +| [OH_AVScreenCaptureCallback::onVideoBufferAvailable](_a_v_screen_capture_callback.md#onvideobufferavailable) | 录屏过程中视频流产生的监听。 | +| [OH_Rect::x](#x) | 视频数据的x坐标。 | +| [OH_Rect::y](#y) | 视频数据的y坐标。 | +| [OH_Rect::width](#width) | 视频宽度。 | +| [OH_Rect::height](#height) | 视频高度。 | +| [OH_AudioBuffer::\*buf](#buf) | 存放音频数据。 | +| [OH_AudioBuffer::size](#size) | 存放音频每一帧数据的长度。 | +| [OH_AudioBuffer::timestamp](#timestamp) | 音频的时间戳。 | +| [OH_AudioBuffer::type](#type) | 音频数据源类型,比如内录源还是mic。 | + + +## 类型定义说明 + +# OH_AudioCaptureInfo + +``` +typedef struct OH_AudioCaptureInfo OH_AudioCaptureInfo +``` + +## 概述 + +定义音频录制audiocapture实例的描述信息。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [audioSampleRate](#audiosampleratets) | 录屏音频采样率。 | +| [audioSampleRate;](#audichannels) | 录制音频的声道数。 | +| [audioSource](#audiosource) | 录屏音频的source源,如麦克风或者内录。 | + +## 结构体成员变量说明 + + +### audiosamplerate + + +``` +int32_t audioSampleRate +``` + +**描述:** + +音频采样率,支持列表见[OH_AudioCapturer_GetSamplingRate](#_o_h_audio.md#oh_audiocapturer_getsamplingrate)。 + +**起始版本:** + +10 + + +### audioChannels + + +``` +int32_t audioChannels +``` + +**描述:** + +采样声道数。 + +**起始版本:** + +10 + + +### audioSource + + +``` +OH_AudioCaptureSourceType audioSource; +``` + +**描述:** + +录屏音频的source源,如麦克风或者内录。 + +**起始版本:** + +10 + +# OH_AudioEncInfo + +``` +typedef struct OH_AudioCaptureInfo OH_AudioCaptureInfo +``` + +## 概述 + +定义音频的编码数据的描述信息。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [audioBitrate](#audioBitrate) | 录屏音频比特率。 | +| [audioCodecformat](#audioCodecformat) | 录屏音频编码格式。 | + +## 结构体成员变量说明 + + +### audioBitrate + + +``` +int32_t audioBitrate +``` + +**描述:** + +录屏音频比特率。 + +**起始版本:** + +10 + +### audioCodecformat + + +``` +OH_AudioCodecFormat audioCodecformat +``` + +**描述:** + +录屏音频编码格式。 + +**起始版本:** + +10 + +# OH_AudioInfo + +``` +typedef struct OH_AudioInfo +``` + +## 概述 + +定义屏幕录制音频的描述信息。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [micCapInfo](#micCapInfo) | 麦克风录制信息。 | +| [innerCapInfo](#innerCapInfo) | 内录录制信息。 | +| [audioEncInfo](#audioEncInfo) | 音频编码信息。 | + +## 结构体成员变量说明 + + +### micCapInfo + + +``` +OH_AudioCaptureInfo micCapInfo +``` + +**描述:** +麦克风录制信息。 + +**起始版本:** + +10 + +### innerCapInfo + + +``` +OH_AudioCaptureInfo innerCapInfo +``` + +**描述:** +声音内录录制信息。 + +**起始版本:** + +10 + +### audioEncInfo + + +``` +OH_AudioCaptureInfo audioEncInfo +``` + +**描述:** +音频编码信息。 + +**起始版本:** + +10 + +# OH_VideoCaptureInfo + +``` +typedef struct OH_VideoCaptureInfo OH_VideoCaptureInfo +``` + +## 概述 + +定义屏幕录制中视频录制的描述信息。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [displayId](#displayId) | 录屏显示id。 | +| [\*missionIDs](#\*missionIDs) | 录屏任务id。 | +| [missionIDsLen](#missionIDsLen) | 录屏任务id长度。 | +| [videoFrameWidth](#videoFrameWidth) | 录屏视频帧宽。 | +| [videoFrameHeight](#videoFrameHeight) | 录屏视频帧高。 | +| [videoSource](#videoSource) | 录屏视频数据源。 | + +## 结构体成员变量说明 + + +### displayId + + +``` +uint64_t displayId +``` + +**描述:** +录屏的显示id,用于选择绑定指定屏幕录屏。 + +**起始版本:** + +10 + +### \*missionIDs + + +``` +int32_t *missionIDs +``` + +**描述:** +指定特定屏幕录屏时,对应的录屏任务id信息。 + +**起始版本:** + +10 + +### missionIDsLen + + +``` +int32_t missionIDsLen +``` + +**描述:** +指定特定屏幕录屏时,录屏任务id信息长度。 + +**起始版本:** + +10 + +### videoFrameWidth + + +``` +int32_t videoFrameWidth +``` + +**描述:** +视频分辨率中的帧宽参数。 + +**起始版本:** + +10 + +### videoFrameHeight + + +``` +int32_t videoFrameHeight +``` + +**描述:** +视频分辨率中的帧高参数。 + +**起始版本:** + +10 + +### videoSource + + +``` +OH_VideoSourceType videoSource +``` + +**描述:** +录屏视频源类型参数。 + +**起始版本:** + +10 + +# OH_VideoEncInfo + +``` +typedef struct OH_VideoEncInfo OH_VideoEncInfo +``` + +## 概述 + +定义屏幕录制中视频数据的编码信息。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [videoCodec](#videoCodec) | 视频数据编码信息。 | +| [videoBitrate](#videoBitrate) | 视频数据比特率信息。 | +| [videoFrameRate](#videoFrameRate) | 视频数据帧率参数。 | + +## 结构体成员变量说明 + + +### videoCodec + + +``` +OH_VideoCodecFormat videoCodec +``` + +**描述:** +录屏视频数据的编码信息。 + +**起始版本:** + +10 + +### videoBitrate + + +``` +int32_t videoBitrate +``` + +**描述:** +录屏视频数据的比特率信息。 + +**起始版本:** + +10 + +### videoFrameRate + + +``` +int32_t videoFrameRate +``` + +**描述:** +录屏视频数据的帧率信息。 + +**起始版本:** + +10 + + +# OH_VideoInfo + +``` +typedef struct OH_VideoInfo OH_VideoInfo +``` + +## 概述 + +定义屏幕录制时视频的描述信息。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [videoCapInfo](#videoCapInfo) | 视频数据编码信息。 | +| [videoEncInfo](#videoEncInfo) | 视频数据比特率信息。 | + +## 结构体成员变量说明 + + +### videoCapInfo + + +``` +OH_VideoCaptureInfo videoCapInfo +``` + +**描述:** +视频采集信息的设置,设置类型为OH_VideoCaptureInfo。 + +**起始版本:** + +10 + +### videoEncInfo + + +``` +OH_VideoEncInfo videoEncInfo +``` + +**描述:** +视频编码参数的设置,设置类型为OH_VideoEncInfo。 + +**起始版本:** + +10 + +# OH_RecorderInfo + +``` +typedef struct OH_RecorderInfo OH_RecorderInfo +``` + +## 概述 + +定义屏幕录制保存音视频文件的参数描述信息。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [\*url](#\*url) | 视频数据编码信息。 | +| [urlLen](#urlLen) | 视频数据比特率信息。 | + +## 结构体成员变量说明 + + +### \*url + + +``` +char *url +``` + +**描述:** +录屏生成文件路径设置。 + +**起始版本:** + +10 + +### urlLen + + +``` +uint32_t urlLen; +``` + +**描述:** +录屏生成文件路径字符的长度。 + +**起始版本:** + +10 + +# OH_AVScreenCaptureConfig + +``` +typedef struct OH_AVScreenCaptureConfig OH_AVScreenCaptureConfig +``` + +## 概述 + +定义整体avscreencapture的配置信息。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [captureMode](#captureMode) | 屏幕录制方式,如全屏录制,指定物理屏录制或者指定窗口录制。 | +| [dataType](#dataType) | 屏幕录制的形式,比如录制原始码流,编码后码流还是文件。 | +| [audioInfo](#audioInfo) | 录制音频相关参数设置,类型为OH_AudioInfo。 | +| [videoInfo](#videoInfo) | 录制视频相关参数设置,类型为OH_VideoInfo。 | +| [recorderInfo](#recorderInfo) | 录屏生成文件相关参数设置,类型为OH_RecorderInfo。 | + + +## 结构体成员变量说明 + + +### captureMode + + +``` +OH_CaptureMode captureMode +``` + +**描述:** +屏幕录制方式,如全屏录制,指定物理屏录制或者指定窗口录制。 + +**起始版本:** + +10 + +### dataType + + +``` +OH_DataType dataType +``` + +**描述:** +屏幕录制的形式,比如录制原始码流,编码后码流还是文件。 + +**起始版本:** + +10 + +### audioInfo + + +``` +OH_AudioInfo audioInfo +``` + +**描述:** +录制音频相关参数设置,类型为OH_AudioInfo。 + +**起始版本:** + +10 + +### videoInfo + + +``` +OH_VideoInfo videoInfo +``` + +**描述:** +录制视频相关参数设置,类型为OH_VideoInfo。 + +**起始版本:** + +10 + +### recorderInfo + + +``` +OH_RecorderInfo recorderInfo +``` + +**描述:** +录屏生成文件相关参数设置,类型为OH_RecorderInfo。 + +**起始版本:** + +10 + +# OH_AVScreenCaptureCallback + +``` +typedef struct OH_AVScreenCaptureCallback OH_AVScreenCaptureCallback +``` + +## 概述 + +定义avscreencapture的回调信息,包含不同的回调函数类型。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [onError](#onError) | 录屏过程中错误事件的监听函数。 | +| [onAudioBufferAvailable](#onAudioBufferAvailable) | 录屏过程中音频流产生的监听。 | +| [onVideoBufferAvailable](#onVideoBufferAvailable) | 录屏过程中视频流产生的监听。 | + +## 结构体成员变量说明 + + +### onError + + +``` +OH_AVScreenCaptureOnError onError +``` + +**描述:** +录屏过程中错误事件的监听函数,具体错误码可参照[错误码说明文档](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)。 + +**起始版本:** + +10 + +### onAudioBufferAvailable + + +``` +OH_AVScreenCaptureOnAudioBufferAvailable onAudioBufferAvailable +``` + +**描述:** +录屏过程中音频流产生的监听。 + +**起始版本:** + +10 + +### onVideoBufferAvailable + + +``` +OH_AVScreenCaptureOnVideoBufferAvailable onVideoBufferAvailable +``` + +**描述:** +录屏过程中视频流产生的监听。 + +**起始版本:** + +10 + +# OH_Rect + +``` +typedef struct OH_Rect OH_Rect +``` + +## 概述 + +定义录屏的宽高以及画面信息。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [x](#x) | 视频数据的x坐标。 | +| [y](#y) | 视频数据的y坐标。 | +| [width](#width) | 视频宽度。 | +| [height](#height) | 视频高度。 | + +## 结构体成员变量说明 + + +### x + + +``` +int32_t x +``` + +**描述:** +视频数据的x坐标。 + +**起始版本:** + +10 + +### y + + +``` +int32_t y +``` + +**描述:** +视频数据的y坐标。 + +**起始版本:** + +10 + +### width + + +``` +int32_t width +``` + +**描述:** +视频宽度。 + +**起始版本:** + +10 + +### height + + +``` +int32_t height +``` + +**描述:** +视频高度。 + +**起始版本:** + +10 + +# OH_AudioBuffer + +``` +typedef struct OH_AudioBuffer OH_AudioBuffer +``` + +## 概述 + +定义了音频数据的大小,类型,时间戳等配置信息。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [\*buf](#\*buf) | 存放音频数据。 | +| [size](#size) | 存放音频每一帧数据的长度。 | +| [timestamp](#timestamp) | 音频的时间戳。 | +| [type](#type) | 音频数据源类型,比如内录源还是mic。 | + +## 结构体成员变量说明 + + +### \*buf + + +``` +uint8_t *buf +``` + +**描述:** +存放音频数据。 + +**起始版本:** + +10 + +### size + + +``` +int32_t size +``` + +**描述:** +存放音频每一帧数据的长度。 + +**起始版本:** + +10 + +### timestamp + + +``` +int64_t timestamp +``` + +**描述:** +音频的时间戳。 + +**起始版本:** + +10 + +### type + + +``` +OH_AudioCaptureSourceType type +``` + +**描述:** +音频数据源类型,比如内录源还是mic。 + +**起始版本:** + +10 + +### OH_AVScreenCaptureOnError + + +``` +typedef void (*OH_AVScreenCaptureOnError)(OH_AVScreenCapture *capture, int32_t errorCode) +``` + +**描述:** + +当实例AVScreenCapture运行出错时,会调用来上报具体的错误信息的函数指针。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| capture | OH_AVScreenCapture实例 | +| errorCode | 特定错误码 | + +### OH_AVScreenCaptureOnAudioBufferAvailable + + +``` +typedef void (*OH_AVScreenCaptureOnAudioBufferAvailable)(OH_AVScreenCapture *capture, bool isReady, OH_AudioCaptureSourceType type) +``` + +**描述:** + +当实例AVScreenCapture申请到音频数据可用时,回调来产生音频流监听。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| capture | OH_AVScreenCapture实例 | +| isReady | 状态参数 | +| type | 音频数据源类型,比如内录源还是mic | + +### OH_AVScreenCaptureOnVideoBufferAvailable + + +``` +typedef void (*OH_AVScreenCaptureOnVideoBufferAvailable)(OH_AVScreenCapture *capture, bool isReady) +``` + +**描述:** + +当实例AVScreenCapture申请到视频数据可用时,回调来产生视频流监听。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**参数:** + +| 名称 | 描述 | +| -------- | -------- | +| capture | OH_AVScreenCapture实例 | +| isReady | 状态参数 | + + +### OH_CaptureMode + +``` +typedef enum OH_CaptureMode OH_CaptureMode +``` + +**描述:** + +屏幕录制模式。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### OH_AudioCaptureSourceType + +``` +typedef enum OH_AudioCaptureSourceType OH_AudioCaptureSourceType +``` + +**描述:** + +屏幕录制音频数据源类型,如内录或mic。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### OH_AudioCodecFormat + +``` +typedef enum OH_AudioCodecFormat OH_AudioCodecFormat +``` + +**描述:** + +屏幕录制音频数据编码格式。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### OH_VideoCodecFormat + +``` +typedef enum OH_VideoCodecFormat OH_VideoCodecFormat +``` + +**描述:** + +屏幕录制视频数据编码格式。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### OH_DataType + +``` +typedef enum OH_DataType OH_DataType +``` + +**描述:** +屏幕录制的形式,比如录制原始码流,编码后码流还是文件。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### OH_VideoSourceType + +``` +typedef enum OH_VideoSourceType OH_VideoSourceType +``` + +**描述:** +屏幕录制视频数据源类型,如手动设置或直接从显示中获取。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +### OH_ContainerFormatType + +``` +typedef enum OH_ContainerFormatType OH_ContainerFormatType +``` + +**描述:** +屏幕录制数据容器类型。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +## 枚举类型说明 + + +### OH_CaptureMode + +``` +enum OH_CaptureMode +``` + +**描述:** + +屏幕录制模式。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +| 枚举值 | 描述 | +| -------- | -------- | +| OH_CAPTURE_HOME_SCREEN | 录制主屏幕模式。 | +| OH_CAPTURE_SPECIFIED_SCREEN | 录制指定屏幕模式。 | +| OH_CAPTURE_SPECIFIED_WINDOW | 录制指定窗口模式。 | +| OH_CAPTURE_INVAILD | 录制错误模式。 | + +### OH_AudioCaptureSourceType + +``` +enum OH_AudioCaptureSourceType +``` + +**描述:** + +音频录制数据源类型。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +| 枚举值 | 描述 | +| -------- | -------- | +| OH_SOURCE_INVALID | 错误类型。 | +| OH_SOURCE_DEFAULT | 默认类型。 | +| OH_MIC | 麦克风类型。 | +| OH_ALL_PLAYBACK | 内录类型。 | +| OH_APP_PLAYBACK | 指定app内录类型。 | + +### OH_AudioCodecFormat + +``` +enum OH_AudioCodecFormat +``` + +**描述:** + +音频录制数据编码类型。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +| 枚举值 | 描述 | +| -------- | -------- | +| OH_AUDIO_DEFAULT | 默认格式类型。 | +| OH_AAC_LC | aac_lc格式类型。 | +| OH_AUDIO_CODEC_FORMAT_BUTT | 错误格式类型。 | + +### OH_VideoCodecFormat + +``` +enum OH_VideoCodecFormat +``` + +**描述:** + +视频录制数据编码类型。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +| 枚举值 | 描述 | +| -------- | -------- | +| OH_VIDEO_DEFAULT | 默认格式类型。 | +| OH_H264 | h264格式类型。 | +| OH_H265 | h265格式类型。 | +| OH_MPEG4 | mp4格式类型。 | +| OH_VP8 | vp8格式类型。 | +| OH_VP9 | vp9格式类型。 | +| OH_VIDEO_CODEC_FORMAT_BUTT | 错误格式类型。| + +### OH_DataType + +``` +enum OH_DataType +``` + +**描述:** + +录屏生成数据形式,码流或指定格式文件。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +| 枚举值 | 描述 | +| -------- | -------- | +| OH_VIDEO_SOURCE_SURFACE_YUV | yuv格式类型。 | +| OH_VIDEO_SOURCE_SURFACE_ES | es格式类型。 | +| OH_VIDEO_SOURCE_SURFACE_RGBA | rgba格式类型。 | +| OH_VIDEO_SOURCE_BUTT | 错误格式类型。 | + +### OH_ContainerFormatType + +``` +enum OH_ContainerFormatType +``` + +**描述:** + +录制生成数据容器格式类型。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +| 枚举值 | 描述 | +| -------- | -------- | +| CFT_MPEG_4A | 音频格式m4a格式。 | +| CFT_MPEG_4 | 视频格式mp4格式。 | + +### OH_ContainerFormatType + +``` +enum OH_ContainerFormatType +``` + +**描述:** + +录制生成数据容器格式类型。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +| 枚举值 | 描述 | +| -------- | -------- | +| CFT_MPEG_4A | 音频格式m4a格式。 | +| CFT_MPEG_4 | 视频格式mp4格式。 | \ No newline at end of file diff --git a/zh-cn/application-dev/reference/native-apis/_a_v_screen_capture_callback.md b/zh-cn/application-dev/reference/native-apis/_a_v_screen_capture_callback.md new file mode 100644 index 0000000000000000000000000000000000000000..7ac71485f864a73683ebb34852b407bde8da90fd --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/_a_v_screen_capture_callback.md @@ -0,0 +1,79 @@ +# OH_AVScreenCaptureCallback + + +## 概述 + +OH_AVScreenCapture中所有异步回调函数指针的集合。将该结构体的实例注册到OH_AVScreenCapture实例中, 并处理回调上报的信息,以保证OH_AVScreenCapture的正常运行。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +9 + +**相关模块:** + +[AVSCreenCaptureBase](_a_v_screen_capture_base.md) + + +## 汇总 + + +### 成员变量 + +| 名称 | 描述 | +| -------- | -------- | +| [onError](#onerror) | 监控录屏调用操作错误,请参见[OH_AVScreenCaptureOnError](_a_v_screen_capture_base.md#oh_avscreencaptureonerror) | +| [onAudioBufferAvailable](#onaudiobufferavailable) | 监控音频码流是否有数据产生[OH_AVScreenCaptureOnAudioBufferAvailable](_a_v_screen_capture_base.md#oh_avscreencaptureonaudiobufferavailable) | +| [onVideoBufferAvailable](#onvideobufferavailable) | 监控视频码流是否有数据产生[OH_AVScreenCaptureOnVideoBufferAvailable](_a_v_screen_capture_base.md#oh_avscreencaptureonvideobufferavailable) | + + +## 结构体成员变量说明 + + +### onError + + +``` +OH_AVScreenCaptureOnError onError +``` + +**描述:** + +监控录屏调用操作错误,请参见[OH_AVScreenCaptureOnError](_a_v_screen_capture_base.md#oh_avscreencaptureonerror) + +**起始版本:** + +10 + + +### onAudioBufferAvailable + + +``` +OH_AVScreenCaptureOnAudioBufferAvailable onAudioBufferAvailable +``` + +**描述:** + +监控音频码流是否有数据产生[OH_AVScreenCaptureOnAudioBufferAvailable](_a_v_screen_capture_base.md#oh_avscreencaptureonaudiobufferavailable) + +**起始版本:** + +10 + + +### onVideoBufferAvailable + + +``` +OH_AVScreenCaptureOnVideoBufferAvailable onVideoBufferAvailable +``` + +**描述:** + +监控视频码流是否有数据产生[OH_AVScreenCaptureOnVideoBufferAvailable](_a_v_screen_capture_base.md#oh_avscreencaptureonvideobufferavailable) + +**起始版本:** + +10 \ No newline at end of file diff --git a/zh-cn/application-dev/reference/native-apis/native__avscreen_capture_8h.md b/zh-cn/application-dev/reference/native-apis/native__avscreen_capture_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..49da6387291e8b69ba354f9e87ab532211854734 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/native__avscreen_capture_8h.md @@ -0,0 +1,38 @@ +# native_avscreen_capture.h + + +## 概述 + +声明屏幕录制相关接口, + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +**相关模块:** + +[AVScreenCapture](_a_v_screen_capture.md) + +## 汇总 + + +### 函数 + +| 名称 | 描述 | +| -------- | -------- | +| \*[OH_AVScreenCapture_Create](_a_v_screen_capture.md#oh_avscreencapture_create) (void) | 创建一个AVScreenCapture实例。 | +| [OH_AVScreenCapture_Init](_a_v_screen_capture.md#oh_avscreencapture_init) (struct OH_AVScreenCapture \*capture, OH_AVScreenCaptureConfig config) | 根据config配置初始化一个capture对象。 | +| [OH_AVScreenCapture_StartScreenCapture](_a_v_screen_capture.md#oh_avscreencapture_startscreencapture) (struct OH_AVScreenCapture \*capture) | 启动屏幕录制。 | +| [OH_AVScreenCapture_StopScreenCapture](_a_v_screen_capture.md#oh_avscreencapture_stopscreencapture) (struct OH_AVScreenCapture \*capture) | 停止屏幕录制。 | +| [OH_AVScreenCapture_StartScreenRecording](_a_v_screen_capture.md#oh_avscreencapture_startscreenrecording) (struct OH_AVScreenCapture \*capture) | 调用启动屏幕录制之后,调用该接口进行屏幕画面的录制。 | +| [OH_AVScreenCapture_StopScreenRecording](_a_v_screen_capture.md#oh_avscreencapture_stopscreenrecording) (struct OH_AVScreenCapture \*capture) | 调用停止屏幕录制之后,调用该接口停止屏幕画面的录制。 | +| [OH_AVScreenCapture_AcquireAudioBuffer](_a_v_screen_capture.md#oh_avscreencapture_acquireaudiobuffer) (struct OH_AVScreenCapture \*capture, OH_AudioBuffer \*\*audiobuffer, OH_AudioCaptureSourceType type) | 调用开始录制接口后,调用该接口进行音频buffer的申请,获取音频buffer信息。 | +| [OH_AVScreenCapture_AcquireVideoBuffer](_a_v_screen_capture.md#oh_avscreencapture_acquirevideobuffer) (struct OH_AVScreenCapture \*capture, int32_t \*fence, int64_t \*timestamp, OH_Rect \*region) | 调用开始录制接口后,调用该接口进行视频buffer的申请,获取视频buffer信息。 | +| [OH_AVScreenCapture_ReleaseAudioBuffer](_a_v_screen_capture.md#oh_avscreencapture_releaseaudiobuffer) (struct OH_AVScreenCapture \*capture, + OH_AudioCaptureSourceType type) | 停止录制后,调用接口释放指定screencapture实例中的音频数据。 | +| [OH_AVScreenCapture_ReleaseVideoBuffer](_a_v_screen_capture.md#oh_avscreencapture_releasevideobuffer) (struct OH_AVScreenCapture \*capture) | +| [OH_AVScreenCapture_SetCallback](_a_v_screen_capture.md#oh_avscreencapture_setcallback) (struct OH_AVScreenCapture \*capture, struct OH_AVScreenCaptureCallback callback) | 停止录制后,调用接口释放指定screencapture实例中的视频数据。 | +| [OH_AVScreenCapture_Release](_a_v_screen_capture.md#oh_avscreencapture_release) (struct OH_AVScreenCapture \*capture) | 停止录制流程结束后,调用接口进行指定avscreencapture实例的释放。 | +| [OH_AVScreenCapture_SetMicrophoneEnabled](_a_v_screen_capture.md#oh_avscreencapture_setmicrophoneenabled) (struct OH_AVScreenCapture \*capture, bool isMicrophone) | 设置麦克风在屏幕录制期间是否启用。 | \ No newline at end of file diff --git a/zh-cn/application-dev/reference/native-apis/native__avscreen_capture_base_8h.md b/zh-cn/application-dev/reference/native-apis/native__avscreen_capture_base_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..8ce1f938ff8377d582e946d3cb4efec85330f0fd --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/native__avscreen_capture_base_8h.md @@ -0,0 +1,53 @@ +# native_avscreen_capture_base.h + +## 概述 + +声明运行屏幕录制通用的结构体、字符常量、枚举 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +**相关模块:** + +[AVScreenCapture](_a_v_screen_capture.md) + +## 汇总 + + +### 结构体 + +| 名称 | 描述 | +| -------- | -------- | +| [OH_AudioCaptureInfo](_a_v_screen_capture_base.md#oh_audiocaptureinfo) | 定义音频录制audiocapture实例的描述信息。 | +| [OH_AudioEncInfo](_a_v_screen_capture_base.md#oh_audioencinfo) | 定义音频的编码数据的描述信息。 | +| [OH_AudioInfo](_a_v_screen_capture_base.md#oh_audioinfo) | 定义屏幕录制时音频的描述信息。 | +| [OH_VideoCaptureInfo](_a_v_screen_capture_base.md#oh_videocaptureinfo) | 定义屏幕录制中视频录制capture的描述信息。 | +| [OH_VideoEncInfo](_a_v_screen_capture_base.md#oh_videoencinfo) | 定义屏幕录制中视频的编码数据描述信息。 | +| [OH_VideoInfo](_a_v_screen_capture_base.md#oh_videoinfo) | 定义屏幕录制时视频的描述信息。 | +| [OH_RecorderInfo](_a_v_screen_capture_base.md#oh_recorderinfo) | 定义屏幕录制保存音视频文件的参数描述信息。 | +| [OH_AVScreenCaptureConfig](_a_v_screen_capture_base.md#oh_avscreencaptureconfig) | 定义整体avscreencapture的配置信息。 | +| [OH_AVScreenCaptureCallback](_a_v_screen_capture_callback.md) | 定义avscreencapture的回调信息,包含不同的回调函数类型。 | +| [OH_Rect](_a_v_screen_capture_base.md#oh_rect) | 定义录屏的宽高以及画面信息。 | +| [OH_AudioBuffer](_a_v_screen_capture_base.md#oh_audiobuffer) | 定义了音频数据的大小,类型,时间戳等配置信息。 | + +### 类型定义 +| 名称 | 描述 | +| -------- | -------- | +| (\*[OH_AVScreenCaptureOnError](_a_v_screen_capture_base.md#oh_avscreencaptureonerror)) (OH_AVScreenCapture \*capture, int32_t errorCode)| 当screencapture在运行过程中执行某一流程出现错误,则调用该函数指针并上报错误码。 | +| (\*[OH_AVScreenCaptureOnAudioBufferAvailable](_a_v_screen_capture_base.md#avscreencaptureonaudiobufferavailable)) (OH_AVScreenCapture \*capture, bool isReady, OH_AudioCaptureSourceType type)| 当screencapture在运行,音频缓冲可用时,调用该函数指针并更新状态信息。 | +| (\*[OH_AVScreenCaptureOnVideoBufferAvailable](_a_v_screen_capture_base.md#avscreencaptureonvideobufferavailable)) (OH_AVScreenCapture \*capture, bool isReady)| 当screencapture在运行,视频缓冲可用时,调用该函数指针并更新状态信息。 | + +### 枚举 + +| 名称 | 描述 | +| -------- | -------- | +| [OH_CaptureMode](_a_v_screen_capture_base.md#oh_capturemode) {
**OH_CAPTURE_HOME_SCREEN** = 0,**OH_CAPTURE_SPECIFIED_SCREEN** = 1, **OH_CAPTURE_SPECIFIED_WINDOW** = 2, **OH_CAPTURE_INVAILD** = -1
} | 屏幕录制的不同模式。 | +| [OH_AudioCaptureSourceType](_a_v_screen_capture_base.md#oh_audiocapturesourcetype) {
**OH_SOURCE_INVALID** = -1, **OH_SOURCE_DEFAULT** = 0, **OH_MIC** = 1, **OH_ALL_PLAYBACK** = 2, **OH_APP_PLAYBACK** = 3
} | 屏幕录制音频的不同source类型。 | +| [OH_AudioCodecFormat](_a_v_screen_capture_base.md#oh_audiocodecformat) {
**OH_AUDIO_DEFAULT** = 0, **OH_AAC_LC** = 3, **OH_AUDIO_CODEC_FORMAT_BUTT**,
} | 屏幕录制音频的不同的编码格式。 | +| [OH_VideoCodecFormat](_a_v_screen_capture_base.md#oh_videocodecformat) {
**OH_VIDEO_DEFAULT** = 0, **OH_H264** = 2, **OH_H265** = 4, **OH_MPEG4** = 6, **OH_VP8** = 8, **OH_VP9** = 10, **OH_VIDEO_CODEC_FORMAT_BUTT**
} | 屏幕录制视频的不同编码格式。 | +| [OH_DataType](_a_v_screen_capture_base.md#oh_datatype) {
**OH_ORIGINAL_STREAM** = 0, **OH_ENCODED_STREAM** = 1, **OH_CAPTURE_FILE** = 2, **OH_INVAILD** = -1
} | 屏幕录制流的数据格式,编码格式,以及保存文件格式等参数。 | +| [OH_VideoSourceType](_a_v_screen_capture_base.md#oh_videosourcetype) {
**OH_VIDEO_SOURCE_SURFACE_YUV** = 0, **OH_VIDEO_SOURCE_SURFACE_ES**, **OH_VIDEO_SOURCE_SURFACE_RGBA**, **OH_VIDEO_SOURCE_BUTT**
} | 屏幕录制视频的不同source类型。 | +| [OH_ContainerFormatType](_a_v_screen_capture_base.md#oh_containerformattype) {
**CFT_MPEG_4A** = 0, **CFT_MPEG_4** = 1
} | 屏幕录制生成物的不同音视频格式类型。 | diff --git a/zh-cn/application-dev/reference/native-apis/native__avscreen_capture_errors_8h.md b/zh-cn/application-dev/reference/native-apis/native__avscreen_capture_errors_8h.md new file mode 100644 index 0000000000000000000000000000000000000000..a892eb1c681b473930e00eca618e027ff38ef866 --- /dev/null +++ b/zh-cn/application-dev/reference/native-apis/native__avscreen_capture_errors_8h.md @@ -0,0 +1,84 @@ +# native_avscreen_capture_errors.h + +## 概述 + +声明运行屏幕录制过程中调用接口发生的错误码。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + +**相关模块:** + +[AVScreenCapture](_a_v_screen_capture.md) + +## 汇总 + +### 类型定义 + +| 名称 | 描述 | +| -------- | -------- | +| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) | 屏幕录制错误码。 | + +### 枚举 + +| 名称 | 描述 | +| -------- | -------- | +| [OH_AVSCREEN_CAPTURE_ErrCode](#oh_avscreen_capture_errcode) {
**AV_SCREEN_CAPTURE_ERR_BASE** = 0, **AV_SCREEN_CAPTURE_ERR_OK** = **AV_SCREEN_CAPTURE_ERR_BASE**, **AV_SCREEN_CAPTURE_ERR_NO_MEMORY** = **AV_SCREEN_CAPTURE_ERR_BASE** + 1, **AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT** = **AV_SCREEN_CAPTURE_ERR_BASE** + 2, **AV_SCREEN_CAPTURE_ERR_INVALID_VAL** = **AV_SCREEN_CAPTURE_ERR_BASE** + 3, **AV_SCREEN_CAPTURE_ERR_IO** = **AV_SCREEN_CAPTURE_ERR_BASE** + 4, **AV_SCREEN_CAPTURE_ERR_TIMEOUT** = **AV_SCREEN_CAPTURE_ERR_BASE** + 5, **AV_SCREEN_CAPTURE_ERR_UNKNOWN** = **AV_SCREEN_CAPTURE_ERR_BASE** + 6, **AV_SCREEN_CAPTURE_ERR_SERVICE_DIED** = **AV_SCREEN_CAPTURE_ERR_BASE** + 7, **AV_SCREEN_CAPTURE_ERR_INVALID_STATE** = **AV_SCREEN_CAPTURE_ERR_BASE** + 8, **AV_SCREEN_CAPTURE_ERR_UNSUPPORT** = **AV_SCREEN_CAPTURE_ERR_BASE** + 9, **AV_SCREEN_CAPTURE_ERR_EXTEND_START** = **AV_SCREEN_CAPTURE_ERR_BASE** + 100
} | 屏幕录制进行过程中产生的不同错误码类型。 | + + +## 类型定义说明 + + +### OH_AVSCREEN_CAPTURE_ErrCode + + +``` +typedef enum OH_AVSCREEN_CAPTURE_ErrCode OH_AVSCREEN_CAPTURE_ErrCode +``` + +**描述:** + +屏幕录制错误码。 + +\@syscap SystemCapability.Multimedia.Media.AVScreenCapture + +**起始版本:** + +10 + + +## 枚举类型说明 + +### OH_AVSCREEN_CAPTURE_ErrCode + +``` +enum OH_AVSCREEN_CAPTURE_ErrCode +``` + +**描述:** + +屏幕录制操作错误码 + +\@syscap SystemCapability.Multimedia.Media.Core + +**起始版本:** + +10 + +| 枚举值 | 描述 | +| -------- | -------- | +| AV_SCREEN_CAPTURE_ERR_BASE | basic error mask for screen recording. | +| AV_SCREEN_CAPTURE_ERR_OK | the operation completed successfully. | +| AV_SCREEN_CAPTURE_ERR_NO_MEMORY | no memory. | +| AV_SCREEN_CAPTURE_ERR_OPERATE_NOT_PERMIT | opertation not be permitted. | +| AV_SCREEN_CAPTURE_ERR_INVALID_VAL | invalid argument. | +| AV_SCREEN_CAPTURE_ERR_IO | IO error. | +| AV_SCREEN_CAPTURE_ERR_TIMEOUT | network timeout. | +| AV_SCREEN_CAPTURE_ERR_UNKNOWN | unknown error. | +| AV_SCREEN_CAPTURE_ERR_SERVICE_DIED | media service died. | +| AV_SCREEN_CAPTURE_ERR_INVALID_STATE | the state is not support this operation. | +| AV_SCREEN_CAPTURE_ERR_UNSUPPORT | unsupport interface. | +| AV_SCREEN_CAPTURE_ERR_EXTEND_START | extend err start. | \ No newline at end of file