本库完成Windows平台下屏幕或窗口采集功能,其支持特性如下:
- 1、当系统连接多屏幕时,可以选择指定屏幕进行采集。
- 2、当屏幕或窗口分辨率不等于用户指定输出分辨率时,自动进行保宽高比,左右或上下添加黑边,保证输出画面不变形。
- 3、支持对外输出恒定帧率,因系统性能不足时自动补帧处理,系统性能过高时自动丢帧处理。
- 4、被采集窗口关闭而无法继续采集时,持续输出最后一帧有效画面。
- 5、支持对外输出用户指定的分辨率和色度空间,可直通编码器。
- 6、内部采用高性能libYUV缩放和色度空间转换,支持设置缩放算法。
- 7、仅六个接口,调用简洁,性能强劲。
- 8、C++开发动态库,支持C、C++、C#跨语言调用
- 环境初始化,系统只需调用一次
@param: outputPath:日志文件输出的目录,若目录不存在将自动创建
@param: outputLevel:日志输出的级别,只有等于或者高于该级别的日志输出到文件
@return:
voidSDDesktopCap_Enviroment_Init
(const char * outputPath, int outputLevel);
- 环境反初始化,系统只需调用一次
@return:
voidSDDesktopCap_Enviroment_Free
();
- 创建SDDesktopCap对象
@return: 返回模块指针,为NULL则失败
void*SDDesktopCap_New
();
- 销毁SDDesktopCap,注意:【涉及到资源销毁,使用者应该做好本接口与其他接口的互斥保护】
@param ppDesktopCap: 模块指针的指针,内部销毁完后将设置为NULL
@return:
voidSDDesktopCap_Delete
(void** ppDesktopCap);
- 开始启动采集
@param pDesktopCap: 模块指针
@param eCapSource: 采集源,屏幕或窗口
@param unSourceId: 采集源ID,通过SDGetScreenDeviceList 或 SDGetWindowList获得。屏幕采集时,默认主屏幕ID为0
@param bCapCursor: 是否采集鼠标
@param unCapFrameRate: 采集帧率
@param unCapWidth: 采集输出宽度,当源宽高与之不一致时,内部将缩放到输出宽高
@param unCapHeight: 采集输出高度
@param eCapFormat: 采集输出格式
@param pfCapCallback: 采集输出回调接口,可以在回调中进行编码耗时操作
@param pObject: 采集输出回调接口透传参数
@return: TRUE成功,FALSE失败
BOOLSDDesktopCap_Start
(void* pDesktopCap, DESKTOP_CAP_SOURCE eCapSource, unsigned int unSourceId, BOOL bCapCursor, unsigned int unCapFrameRate, unsigned int unCapWidth, unsigned int unCapHeight, DESKTOP_CAP_OUT_FORMAT eCapFormat, CaptureDeskTopVideoCallback pfCapCallback, void* pObject);
- 停止采集
@param pDesktopCap: 模块指针
@return:
voidSDDesktopCap_Stop
(void* pDesktopCap);
- 枚举当前系统可用的屏幕设备(获取设备ID和设备名称)。主屏幕ID固定为0,名称为空。若只采集主屏幕或系统为单屏幕时可不调用本API,直接指定ID为0
@param: punScreenDeviceIds 设备ID存放列表,默认设备其ID为0
@param: pScreenDeviceNames 设备名称存放列表,默认设备其名称为空
@param: unMaxDeviceNum 最大枚举的设备数量
@param: unMaxDeviceNameLen 最大设备名长度
@return: 返回设备数量
unsigned intSDDesktopCap_GetScreenDeviceList
(unsigned int* punScreenDeviceIds, char (*pScreenDeviceNames)[SD_MAX_SUPPORT_NAME_LEN], unsigned int unMaxDeviceNum, unsigned int unMaxDeviceNameLen);
- 枚举当前系统窗口信息,仅枚举当前时刻未最小化的窗口
@param: punWindowIds 窗口ID
@param: pWindowNames 窗口名称存放列表
@param: unMaxWindowNum 最大枚举的窗口数量
@param: unMaxWindowNameLen 最大窗口名长度
@return: 返回窗口数量
unsigned intSDDesktopCap_GetWindowList
(unsigned int* punWindowIds, char(*pWindowNames)[SD_MAX_SUPPORT_NAME_LEN], unsigned int unMaxWindowNum, unsigned int unMaxWindowNameLen);
- 设置采集过程中需要缩放时,采用的缩放质量\速度档次,未调用本API时默认采用DESKTOP_SACLE_MEDIUM。Start之前或之后调用均可
@param pDesktopCap: 模块指针
@param: eScalePreset 质量\速度档次
voidSDDesktopCap_SetScalePreset
(void* pDesktopCap, DESKTOP_SCALE_PRESET eScalePreset);