提交 f7d7a153 编写于 作者: W wangzx0705

根据review信息进行内容修正。

Signed-off-by: Nwangzx0705 <wangzx0705@thundersoft.com>
上级 14f51e5c
# 开发屏幕录制功能
屏幕录制功能主要有主屏幕录屏、指定物理屏录屏和应用内录屏三个子功能
屏幕录制功能主要有主屏幕录屏、指定物理屏录屏和应用内录屏。
录屏(AVScreenCapture)以单独的原子能力构建,北向给开发者提供能力接口,视频采集南向对接窗口子系统和图形子系统,语音采集和编码后码流横向在媒体子系统内部对接AudioService和AVCodecService。AVScreenCapture采用client-server设计结构,用openharmony IPC进行通信,图中绿色为新增模块。proxy和stub,负责IPC接口通信,npi提供kit层级的接口,client负责权限校验以及接口能力。server负责音视频的采集,以及buffer管理等。
录屏(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发生错误,建议开发者在调用状态转换的方法前进行状态检查,避免程序运行产生预期以外的结果。
使用AVScreenCapture时要明确其状态的变化,在创建实例后,调用对应的方法可以进入指定的状态实现对应的行为。
在确定的状态下执行不合适的方法会导致AVScreenCapture发生错误,开发者需要在调用状态转换的方法前进行状态检查,避免程序运行异常。
### 开发步骤及注意事项
......@@ -27,7 +24,7 @@
```
2. 配置屏幕录制参数。
创建AVScreenCapture实例capture后,可以设置屏幕录制所需要的参数,可以参考下面的案例
创建AVScreenCapture实例capture后,可以设置屏幕录制所需要的参数。
```c++
OH_AudioCaptureInfo miccapinfo = {
......@@ -99,7 +96,7 @@
OH_AVScreenCapture_AcquireAudioBuffer(capture, &audiobuffer, type);
```
8. 调用AcquireVideoBuffer()方法停止录制
8. 调用AcquireVideoBuffer()获取音频原始码流数据
```c++
OH_NativeBuffer* buffer = OH_ScreenCapture_AcquireVideoBuffer(capture, &fence, &timestamp, &damage);
......@@ -111,7 +108,7 @@
OH_ScreenCapture_ReleaseAudioBuffer(capture, type);
```
10. 调用ReleaseVideoBuffer()方法停止录制
10. 调用ReleaseVideoBuffer()释放视频数据
```c++
OH_ScreenCapture_ReleaseVideoBuffer(capture);
......
......@@ -2,8 +2,8 @@
## 如何选择屏幕录制开发方式
录屏取码流场景,主要用于直播类app,app需要获取录屏相关的音视频码流,然后通过流流转方式或者对接CDN服务器方式,达到直播时桌面共享的场景。app配置完音视频相关参数后 ,可启动录制,在录制过程中可以控制麦克风的开关,达到mic音频是否在直播时播放,结束 直播时刻停止录制。
另外,有些app有自己的编码器,因此需要获取的是原始码流,用于对接它内部自己的编码器 (比如:welink,内部采用webRTC,有自己的编码器)。有些app需要把流发布到CDN服务 器,那么他就需要编码后的码流。
录屏取码流场景,主要用于直播类应用,应用需要获取录屏相关的音视频码流,然后通过流流转方式或者对接CDN服务器方式,达到直播时桌面共享的场景。应用配置完音视频相关参数后 ,可启动录制,在录制过程中可以控制麦克风的开关,达到mic音频是否在直播时播放,结束 直播时刻停止录制。
另外,有些应用有自己的编码器,因此需要获取的是原始码流,用于对接它内部自己的编码器 (比如:welink,内部采用webRTC,有自己的编码器)。有些应用需要把流发布到CDN服务 器,那么他就需要编码后的码流。
- [开发屏幕录制功能](avscreen-capture-development.md):用于音频输入的Native API,仅支持PCM格式,视频输入的Native API,仅支持YUV格式,需要应用持续读取音频数据和视频数据进行工作。应用可以在音频输出和视频输出后添加数据处理,要求开发者具备音频处理和视频处理的基础知识,适用于更专业、更多样化的媒体录制应用开发。
......
......@@ -18,25 +18,25 @@ AVScreenCapture模块提供用于屏幕录制的函数。
| 名称 | 描述 |
| -------- | -------- |
| [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> |
| [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_avscreencapture_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_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。 |
| [OH_AVScreenCapture_ReleaseVideoBuffer](#oh_avscreencapture_releasevideobuffer) (OH_AVScreenCapture \*capture) | 释放视频的buffer |
| [OH_AVScreenCapture_SetCallback](#oh_avscreencapture_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) | 释放录屏示例对象。 |
## 函数说明
......@@ -57,7 +57,7 @@ struct OH_AVScreenCapture *OH_AVScreenCapture_Create(void);
| 名称 | 描述 |
| -------- | -------- |
| void | 无需入参函数 |
| void | 无需入参函数 |
**返回:**
......@@ -72,14 +72,14 @@ struct OH_AVScreenCapture *OH_AVScreenCapture_Create(void);
```
OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Init(struct OH_AVScreenCapture *capture, OH_AVScreenCaptureConfig config);
OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Init(struct OH_AVScreenCapture *capture OH_AVScreenCaptureConfig config);
```
**描述:**
初始化OH_AVScreenCapture相关参数,包括下发的音频麦克风采样信息参数,音频内录相关参数(可选),视频分辨率相关参数
初始化OH_AVScreenCapture各参数,包括下发的音频麦克风采样信息参数,音频内录参数(可选),视频分辨率参数。
调用此函数,需要向申请麦克风权限(ohos.permission.MICROPHONE)和截屏权限(ohos.permission.CAPTURE_SCREEN),否则会初始化失败导致无法正常录屏
调用此函数,需要向申请麦克风权限(ohos.permission.MICROPHONE)和截屏权限(ohos.permission.CAPTURE_SCREEN),否则会初始化失败导致无法正常录屏。
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
......@@ -88,11 +88,11 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Init(struct OH_AVScreenCapture *c
| 名称 | 描述 |
| -------- | -------- |
| capture | 指向OH_AVScreenCapture实例的指针。 |
| config | 录屏初始化相关参数。 |
| config | 录屏初始化相关参数,详情请参阅[OH_AVScreenCaptureConfig](_a_v_screen_capture_base.md#oh_avscreencaptureconfig)。 |
**返回:**
执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
执行成功返回AV_SCREEN_CAPTURE_ERR_OK 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
**起始版本:**
......@@ -107,9 +107,9 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenCapture(struct OH_AVSc
**描述:**
开始录屏接口,调用该接口后,可以通过回调的监听(OH_AVScreenCaptureOnAudioBufferAvailable,OH_AVScreenCaptureOnVideoBufferAvailable)来监听当前是否有码流的产生。
开始录屏接口,调用该接口后,可以通过回调的监听(OH_AVScreenCaptureOnAudioBufferAvailable,OH_AVScreenCaptureOnVideoBufferAvailable)来监听当前是否有码流的产生。
通过调用获取音频buffer(OH_AVScreenCapture_AcquireAudioBuffer)和视频buffer(OH_AVScreenCapture_ReleaseVideoBuffer)的接口来获取录屏的原始码流
通过调用获取音频buffer(OH_AVScreenCapture_AcquireAudioBuffer)和视频buffer(OH_AVScreenCapture_ReleaseVideoBuffer)的接口来获取录屏的原始码流
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
......@@ -121,7 +121,7 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StartScreenCapture(struct OH_AVSc
**返回:**
执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
执行成功返回AV_SCREEN_CAPTURE_ERR_OK 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
**起始版本:**
......@@ -137,7 +137,7 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenCapture(struct OH_AVScr
**描述:**
停止录屏接口, 主要用于停止录屏数据的继续生产
停止录屏接口,用于停止录屏数据的继续生产。
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
......@@ -149,7 +149,7 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenCapture(struct OH_AVScr
**返回:**
执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
执行成功返回AV_SCREEN_CAPTURE_ERR_OK 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
**起始版本:**
......@@ -160,14 +160,14 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_StopScreenCapture(struct OH_AVScr
```
OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_AcquireAudioBuffer(struct OH_AVScreenCapture *capture, OH_AudioBuffer **audiobuffer, OH_AudioCaptureSourceType type);
OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_AcquireAudioBuffer(struct OH_AVScreenCapture *capture, OH_AudioBuffer **audiobuffer, OH_AudioCaptureSourceType type);
```
**描述:**
获取音频buffer,应用在调用时,需要对audiobuffer分配对应结构体大小的内存,否则会影响拿到音频buffer的获取
获取音频buffer,应用在调用时,需要对audiobuffer分配对应结构体大小的内存,否则会影响拿到音频buffer的获取
buffer使用完成后,调用OH_AVScreenCapture_ReleaseAudioBuffer接口进行音频buffer的释放
buffer使用完成后,调用OH_AVScreenCapture_ReleaseAudioBuffer接口进行音频buffer的释放
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
......@@ -177,11 +177,11 @@ buffer使用完成后,调用OH_AVScreenCapture_ReleaseAudioBuffer接口进行
| -------- | -------- |
| capture | 指向OH_AVScreenCapture实例的指针。 |
| audiobuffer | 保存音频buffer的结构体,通过该结构体获取到音频buffer以及buffer的时间戳等信息。 |
| type | 音频buffer的类型,区分mic流还是内录流。 |
| type | 音频buffer的类型,区分是麦克风录制的外部流还是系统内部播放音频的内录流,详情请参阅[OH_AudioCaptureSourceType](_a_v_screen_capture_base.md#oh_audiocapturesourcetype)。 |
**返回:**
执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
执行成功返回AV_SCREEN_CAPTURE_ERR_OK 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
**起始版本:**
......@@ -192,14 +192,13 @@ buffer使用完成后,调用OH_AVScreenCapture_ReleaseAudioBuffer接口进行
```
OH_NativeBuffer* OH_AVScreenCapture_AcquireVideoBuffer(struct OH_AVScreenCapture *capture, int32_t *fence, int64_t *timestamp, struct OH_Rect *region);
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的释放
获取视频buffer,应用在调用时,通过此接口来获取到视频的buffer以及时间戳等信息。
buffer使用完成后,调用OH_AVScreenCapture_ReleaseVideoBuffer接口进行视频buffer的释放。
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
......@@ -209,12 +208,12 @@ buffer使用完成后,调用OH_AVScreenCapture_ReleaseVideoBuffer接口进行
| -------- | -------- |
| capture | 指向OH_AVScreenCapture实例的指针。 |
| fence | 用于同步的显示相关参数信息。|
| timestamp | 视频帧的时间戳 |
| region | 视频显示相关的坐标信息 |
| timestamp | 视频帧的时间戳 |
| region | 视频显示相关的坐标信息 |
**返回:**
执行成功返回OH_NativeBuffer对象, 通过OH_NativeBuffer对象相关接口可以获取到视频buffer和粉分辨率等信息参数。
执行成功返回OH_NativeBuffer对象 通过OH_NativeBuffer对象相关接口可以获取到视频buffer和粉分辨率等信息参数。
**起始版本:**
......@@ -225,12 +224,12 @@ buffer使用完成后,调用OH_AVScreenCapture_ReleaseVideoBuffer接口进行
```
OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseAudioBuffer(struct OH_AVScreenCapture *capture, OH_AudioCaptureSourceType type);
OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseAudioBuffer(struct OH_AVScreenCapture *capture OH_AudioCaptureSourceType type);
```
**描述:**
释放音频buffer, 与OH_AVScreenCapture_AcquireAudioBuffer相对应,当某一帧音频buffer使用完成后,调用此接口进行释放对应的音频buffer
释放音频buffer 与OH_AVScreenCapture_AcquireAudioBuffer相对应,当某一帧音频buffer使用完成后,调用此接口进行释放对应的音频buffer
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
......@@ -243,7 +242,7 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseAudioBuffer(struct OH_AVSc
**返回:**
执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
执行成功返回AV_SCREEN_CAPTURE_ERR_OK 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
**起始版本:**
......@@ -259,7 +258,7 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseVideoBuffer(struct OH_AVSc
**描述:**
释放视频buffer, 与OH_AVScreenCapture_AcquireVideoBuffer相对应,当某一帧视频buffer使用完成后,调用此接口进行释放对应的视频buffer
释放视频buffer, 与OH_AVScreenCapture_AcquireVideoBuffer相对应,当某一帧视频buffer使用完成后,调用此接口进行释放对应的视频buffer。
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
......@@ -271,7 +270,7 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseVideoBuffer(struct OH_AVSc
**返回:**
执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
执行成功返回AV_SCREEN_CAPTURE_ERR_OK 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
**起始版本:**
......@@ -282,12 +281,12 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_ReleaseVideoBuffer(struct OH_AVSc
```
OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCallback(struct OH_AVScreenCapture *capture, struct OH_AVScreenCaptureCallback callback);
OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCallback(struct OH_AVScreenCapture *capture struct OH_AVScreenCaptureCallback callback);
```
**描述:**
设置监听接口,通过设置监听,可以监听到调用过程中的错误信息,以及是否有可用的视频buffer和音频buffer
设置监听接口,通过设置监听,可以监听到调用过程中的错误信息,以及是否有可用的视频buffer和音频buffer
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
......@@ -300,7 +299,7 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCallback(struct OH_AVScreenCap
**返回:**
执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
执行成功返回AV_SCREEN_CAPTURE_ERR_OK 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
**起始版本:**
......@@ -311,12 +310,12 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetCallback(struct OH_AVScreenCap
```
OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMicrophoneEnabled(struct OH_AVScreenCapture *capture, bool isMicrophone);
OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMicrophoneEnabled(struct OH_AVScreenCapture *capture bool isMicrophone);
```
**描述:**
设置mic开关,isMicrophone为true时,则打开麦克风,通过调用OH_AVScreenCapture_StartScreenRecording和OH_AVScreenCapture_AcquireAudioBuffer可以正常获取到音频的麦克风原始pcm数据,为false时,获取到的音频数据为无声数据
设置mic开关,isMicrophone为true时,则打开麦克风,通过调用OH_AVScreenCapture_StartScreenRecording和OH_AVScreenCapture_AcquireAudioBuffer可以正常获取到音频的麦克风原始pcm数据,为false时,获取到的音频数据为无声数据
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
......@@ -325,11 +324,11 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_SetMicrophoneEnabled(struct OH_AV
| 名称 | 描述 |
| -------- | -------- |
| capture | 指向OH_AVScreenCapture实例的指针。 |
| isMicrophone | 麦克风开关参数 |
| isMicrophone | 麦克风开关参数 |
**返回:**
执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
执行成功返回AV_SCREEN_CAPTURE_ERR_OK 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
**起始版本:**
......@@ -345,7 +344,7 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Release(struct OH_AVScreenCapture
**描述:**
将创建的OH_AVScreenCapture实例进行释放,对应OH_AVScreenCapture_Create
将创建的OH_AVScreenCapture实例进行释放,对应OH_AVScreenCapture_Create
\@syscap SystemCapability.Multimedia.Media.AVScreenCapture
......@@ -357,7 +356,7 @@ OH_AVSCREEN_CAPTURE_ErrCode OH_AVScreenCapture_Release(struct OH_AVScreenCapture
**返回:**
执行成功返回AV_SCREEN_CAPTURE_ERR_OK, 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
执行成功返回AV_SCREEN_CAPTURE_ERR_OK 否则返回具体错误码,请参阅[OH_AVSCREEN_CAPTURE_ErrCode](native__avscreen_capture_errors_8h.md#oh_avscreen_capture_errcode)
**起始版本:**
......
......@@ -32,21 +32,21 @@ AVScreenCaptureBase模块提供运行录屏通用的结构体、字符常量、
### 类型定义
| 名称 | 描述 |
| -------- | -------- |
| (\*[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_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_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/>} | 屏幕录制音频的不同的编码格式,包括AAC_LC音频编码格式。 |
| [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/>} | 屏幕录制视频的不同编码格式,包括h264,h265,mpeg4,vp8,vp9视频编码格式。 |
| [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类型,包括YUV,ES,RGBA资源类型。 |
| [OH_ContainerFormatType](#oh_containerformattype) {<br/>**CFT_MPEG_4A** = 0**CFT_MPEG_4** = 1<br/>} | 屏幕录制生成物的不同音视频格式类型,包括MPEG_4A,MPEG_4格式类型。 |
### 变量
......@@ -466,7 +466,7 @@ int32_t videoFrameRate
```
**描述:**
录屏视频数据的帧率信息。
录屏视频数据的帧率信息,需要根据设备刷新率和编码帧率性能约束进行设置
**起始版本:**
......@@ -853,7 +853,7 @@ OH_AudioCaptureSourceType type
```
typedef void (*OH_AVScreenCaptureOnError)(OH_AVScreenCapture *capture, int32_t errorCode)
typedef void (*OH_AVScreenCaptureOnError)(OH_AVScreenCapture *capture int32_t errorCode)
```
**描述:**
......@@ -873,7 +873,7 @@ typedef void (*OH_AVScreenCaptureOnError)(OH_AVScreenCapture *capture, int32_t e
```
typedef void (*OH_AVScreenCaptureOnAudioBufferAvailable)(OH_AVScreenCapture *capture, bool isReady, OH_AudioCaptureSourceType type)
typedef void (*OH_AVScreenCaptureOnAudioBufferAvailable)(OH_AVScreenCapture *capture, bool isReady, OH_AudioCaptureSourceType type)
```
**描述:**
......@@ -894,7 +894,7 @@ typedef void (*OH_AVScreenCaptureOnAudioBufferAvailable)(OH_AVScreenCapture *cap
```
typedef void (*OH_AVScreenCaptureOnVideoBufferAvailable)(OH_AVScreenCapture *capture, bool isReady)
typedef void (*OH_AVScreenCaptureOnVideoBufferAvailable)(OH_AVScreenCapture *capture bool isReady)
```
**描述:**
......
......@@ -23,9 +23,9 @@ OH_AVScreenCapture中所有异步回调函数指针的集合。将该结构体
| 名称 | 描述 |
| -------- | -------- |
| [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](#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) |
## 结构体成员变量说明
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册