关键词:采集屏幕、采集窗口、录制屏幕、录制窗口、采集被覆盖的窗口
最近实现了一个可以采集每个窗口成各种格式的图片或视频的程序。在这里给大家分享一下。今天很晚了,明天有时间继续慢慢写出来。总之,以后会慢慢在这弄一些工作学习心得出来。不期望掌声,也不希望有骂声。
采集被覆盖的窗口技术
作者:李敏正(原创)
主要功能:
1、采集屏幕
2、采集窗口
3、采集被其它窗口覆盖的窗口
4、采集移出屏幕外的窗口
5、实现两个窗口数据的mix混合
格式支持:
1、图像格式:bmp、jpg、gif、tiff、png、psd、tga
2、视频格式:wmv、AVI、flv、mp4
本软件提供两种接口方式,一种是命令行的使用方式,一种是直接提供dll和.h.
Dll提供的接口定义:
开始采集成视频启动接口,此函数是异步函数
参数说明:
hDes:窗口句柄
hSrc:窗口句柄,如果要两个窗口mix,那么这个窗口是覆盖在上面的窗口,需要指定色键key
Key:指定hSrc窗口的色键
desFileName:目标文件名
X:视频图像x大小(单位是像素)
Y:视频图像y大小(单位是像素)
Fps:视频帧率
pFunc:采集状态通知接口,可以根据需要实现(typedef BOOL (*Notefy)(bool );)
extern "C" SCREEN2WMV_API int StartRecord(long hDes, long hSrc, int key,TCHAR* desFileName, int x, int y, int fps, void* pFunc);
开始采集图像启动接口:
hDes:窗口句柄
hSrc:窗口句柄,如果要两个窗口mix,那么这个窗口是覆盖在上面的窗口,需要指定色键key
Key:指定hSrc窗口的色键
desFileName:目标文件名(文件类型指示了要采集成的类型)
X:图像x大小(单位是像素)
Y:图像y大小(单位是像素)
Fps:每秒钟采集多少张图片
pFunc:采集状态通知接口,可以根据需要实现(typedef BOOL (*Notefy)(bool );)
extern "C" SCREEN2WMV_API int StartRecord(long hDes, long hSrc, int key,TCHAR* desFileName, int x, int y, int fps, void* pFunc);
停止采集接口:
此函数没有参数,是异步函数。
extern "C" SCREEN2WMV_API int StopRecord();
命令行使用方式:
提供命令行的方式是为了方便使用,在使用的时候只要把两个窗口的句柄找到(可以用微软的spy++那个工具),然后在命令行中传进相关的参数就可以工作了。
命令行参数:
采集视频:
hDes:窗口句柄
hSrc:窗口句柄,如果要两个窗口mix,那么这个窗口是覆盖在上面的窗口,需要指定色键key
Key:指定hSrc窗口的色键
desFileName:目标文件名
X:视频图像x大小(单位是像素)
Y:视频图像y大小(单位是像素)
Fps:视频帧率
Example:screensnap.exe " hDes hSrc Key desFileName x y fps"
采集图片:
hDes:窗口句柄
hSrc:窗口句柄,如果要两个窗口mix,那么这个窗口是覆盖在上面的窗口,需要指定色键key
Key:指定hSrc窗口的色键
desFileName:目标文件名(文件类型指示了要采集成的类型)
X:图像x大小(单位是像素)
Y:图像y大小(单位是像素)
Fps:每秒钟采集多少张图片
Example:screensnap.exe " hDes hSrc Key desFileName x y fps"
停止采集:
Example:screensnap.exe stop
技术实现原理分析:(待续)
我想把代码和dll、exe放上来,我该如何做呢?