提交 d2f613bd 编写于 作者: W wangzx0705

add screencapture develop docs

Signed-off-by: Nwangzx0705 <wangzx0705@thundersoft.com>
上级 db6cbce8
......@@ -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)
......
# 开发屏幕录制功能
屏幕录制功能主要有主屏幕录屏、指定物理屏录屏和应用内录屏三个子功能。
录屏(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, &timestamp, &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, &timestamp, &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;
}
```
# 屏幕录制开发概述
## 如何选择屏幕录制开发方式
录屏取码流场景,主要用于直播类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)
# AVScreenCapture
## 概述
AVScreenCapture模块提供用于屏幕录制的函数。
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
**起始版本:**
10
## 汇总
### 文件
| 名称 | 描述 |
| -------- | -------- |
| [native_avscreen_capture.h](native__avscreen_capture_8h.md) | 声明用于构造屏幕录制对象的Native API。<br>引用文件:<multimedia/player_framework/native_avscreen_capture.h> |
| [native_avscreen_capture_base.h](native__avscreen_capture_base_8h.md) | 声明用于运行屏幕录制通用的结构体、字符常量、枚举。<br>引用文件:<multimedia/player_framework/native_avscreen_capture_base.h> |
| [native_avscreen_capture_errors.h](native__avscreen_capture_errors_8h.md) | 声明用于运行屏幕录制过程中接口调用的错误码说明。<br>引用文件:<multimedia/player_framework/native_avscreen_capture_errors.h> |
### 函数
| 名称 | 描述 |
| -------- | -------- |
| \*[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
# 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) {<br/>**OH_CAPTURE_HOME_SCREEN** = 0,**OH_CAPTURE_SPECIFIED_SCREEN** = 1, **OH_CAPTURE_SPECIFIED_WINDOW** = 2, **OH_CAPTURE_INVAILD** = -1<br/>} | 屏幕录制的不同模式。 |
| [OH_AudioCaptureSourceType](#oh_audiocapturesourcetype) {<br/>**OH_SOURCE_INVALID** = -1, **OH_SOURCE_DEFAULT** = 0, **OH_MIC** = 1, **OH_ALL_PLAYBACK** = 2, **OH_APP_PLAYBACK** = 3<br/>} | 屏幕录制音频的不同source类型。 |
| [OH_AudioCodecFormat](#oh_audiocodecformat) {<br/>**OH_AUDIO_DEFAULT** = 0, **OH_AAC_LC** = 3, **OH_AUDIO_CODEC_FORMAT_BUTT**,<br/>} | 屏幕录制音频的不同的编码格式。 |
| [OH_VideoCodecFormat](#oh_videocodecformat) {<br/>**OH_VIDEO_DEFAULT** = 0, **OH_H264** = 2, **OH_H265** = 4, **OH_MPEG4** = 6, **OH_VP8** = 8, **OH_VP9** = 10, **OH_VIDEO_CODEC_FORMAT_BUTT**<br/>} | 屏幕录制视频的不同编码格式。 |
| [OH_DataType](#oh_datatype) {<br/>**OH_ORIGINAL_STREAM** = 0, **OH_ENCODED_STREAM** = 1, **OH_CAPTURE_FILE** = 2, **OH_INVAILD** = -1<br/>} | 屏幕录制流的数据格式,编码格式,以及保存文件格式等参数。 |
| [OH_VideoSourceType](#oh_videosourcetype) {<br/>**OH_VIDEO_SOURCE_SURFACE_YUV** = 0, **OH_VIDEO_SOURCE_SURFACE_ES**, **OH_VIDEO_SOURCE_SURFACE_RGBA**, **OH_VIDEO_SOURCE_BUTT**<br/>} | 屏幕录制视频的不同source类型。 |
| [OH_ContainerFormatType](#oh_containerformattype) {<br/>**CFT_MPEG_4A** = 0, **CFT_MPEG_4** = 1<br/>} | 屏幕录制生成物的不同音视频格式类型。 |
### 变量
| 名称 | 描述 |
| -------- | -------- |
| [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
# 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
# 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
# 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) {<br/>**OH_CAPTURE_HOME_SCREEN** = 0,**OH_CAPTURE_SPECIFIED_SCREEN** = 1, **OH_CAPTURE_SPECIFIED_WINDOW** = 2, **OH_CAPTURE_INVAILD** = -1<br/>} | 屏幕录制的不同模式。 |
| [OH_AudioCaptureSourceType](_a_v_screen_capture_base.md#oh_audiocapturesourcetype) {<br/>**OH_SOURCE_INVALID** = -1, **OH_SOURCE_DEFAULT** = 0, **OH_MIC** = 1, **OH_ALL_PLAYBACK** = 2, **OH_APP_PLAYBACK** = 3<br/>} | 屏幕录制音频的不同source类型。 |
| [OH_AudioCodecFormat](_a_v_screen_capture_base.md#oh_audiocodecformat) {<br/>**OH_AUDIO_DEFAULT** = 0, **OH_AAC_LC** = 3, **OH_AUDIO_CODEC_FORMAT_BUTT**,<br/>} | 屏幕录制音频的不同的编码格式。 |
| [OH_VideoCodecFormat](_a_v_screen_capture_base.md#oh_videocodecformat) {<br/>**OH_VIDEO_DEFAULT** = 0, **OH_H264** = 2, **OH_H265** = 4, **OH_MPEG4** = 6, **OH_VP8** = 8, **OH_VP9** = 10, **OH_VIDEO_CODEC_FORMAT_BUTT**<br/>} | 屏幕录制视频的不同编码格式。 |
| [OH_DataType](_a_v_screen_capture_base.md#oh_datatype) {<br/>**OH_ORIGINAL_STREAM** = 0, **OH_ENCODED_STREAM** = 1, **OH_CAPTURE_FILE** = 2, **OH_INVAILD** = -1<br/>} | 屏幕录制流的数据格式,编码格式,以及保存文件格式等参数。 |
| [OH_VideoSourceType](_a_v_screen_capture_base.md#oh_videosourcetype) {<br/>**OH_VIDEO_SOURCE_SURFACE_YUV** = 0, **OH_VIDEO_SOURCE_SURFACE_ES**, **OH_VIDEO_SOURCE_SURFACE_RGBA**, **OH_VIDEO_SOURCE_BUTT**<br/>} | 屏幕录制视频的不同source类型。 |
| [OH_ContainerFormatType](_a_v_screen_capture_base.md#oh_containerformattype) {<br/>**CFT_MPEG_4A** = 0, **CFT_MPEG_4** = 1<br/>} | 屏幕录制生成物的不同音视频格式类型。 |
# 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) {<br/>**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<br/>} | 屏幕录制进行过程中产生的不同错误码类型。 |
## 类型定义说明
### 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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册