关于屏幕捕捉问题? ( 积分: 100 )

  • 主题发起人 主题发起人 casser
  • 开始时间 开始时间
C

casser

Unregistered / Unconfirmed
GUEST, unregistred user!
捕捉并录制桌面信息,并保存视频信息。

具体用到那种技术?
 
捕捉并录制桌面信息,并保存视频信息。

具体用到那种技术?
 
这个问题好寂寞啊,其实我也想知道这个问题,所以一定要顶上去!
 
使用DirectShow技术,视频压缩技术。
 
GetDesktopWindow先
然后GetDC
然后CreateCompatableDC
然后CreateBitmap
然后bitblt
然后桌面位图就到手了,随你怎么折腾吧
然后循环呗
最后要deleteDC,ReleaseDC
 
试试mouse_event事件,模拟发生一个print_screen健
 
dxmylove@yahoo.com.cn,qq:171833017,http://www.websamba.com/dxmylove
屏幕录象机,如果不能正常下载,可直接联系我
 
survival:桌面抓取谁不会啊?我再出200分,把视频压缩代码弄出来可以吗?
 
不要不劳而获哦,呵呵,:-)
我把框架给你,代码自己去写。这里我们用VFW,暂不讨论用DirectShow的。
1.首先,用到的数据结构:
bitmapinfo(TBitMapInfo in windows.pas):这个不用我说吧
CompVars(TCompVars in VFW.pas)
2.接下来,用到的函数:
function ICOpen(fccType:cardinal;fccHandler:cardinal;wMode:cardinal):Cardinal;--VFW.PAS
打开压缩或者解压缩编码器
function ICSeqCompressFrameStart(pc: PCOMPVARS;
lpbiIn: PBITMAPINFO): BOOL;--VFW.PAS
开始编码
function ICSeqCompressFrame(pc:PCOMPVARS;uiFlags:UINT;lpBits:PVOID;pfKey:PBOOL;plSize:PDWORD):PVOID;--VFW.PAS
压缩一贞数据
function ICCompressGetFormat(hic:HIC;lpbiInput, lpbiOutput:PBITMAPINFOHEADER):DWORD;--VFW.PAS
取得压缩后的图像格式
procedure ICSeqCompressFrameEnd(pc:PCOMPVARS);--VFW.PAS
结束压缩
function ICClose(hic:HIC):DWORD;--VFW.PAS
关闭编码解码器
3.初始化
首先要建立一个输入图像的bitmapinfo,需要设置这几个参数:bisize,biwidth,biheight,biplanes,bibitcount,bicompression,bisizeimage,其它的置零。
建立压缩参数(Compvars),设置如下参数:
cbsize:结构大小
dwFlages:ICMF_COMPVARS_VALID
fccType:ICTYPE_VIDEO
fccHandler:压缩的fcc编码,如"H263"、"M263",取决于你安装了哪些编码器,以及需要压缩什么格式的视频
lKey:多少贞有一个key贞
lDataRate:期望的数据码率,kbyte per sec.
lQ:质量,0到10000
lpbiIn:输入图像的bitmapinfo的指针
hic:通过ICOPEN函数的到的编码器句柄
lpbiOut:ICCompressGetFormat函数返回的bitmapinfo的指针
4.好了,现在可以开始了
先调用ICSeqCompressFrameStart,参数我们已经准备好了
连续调用ICSeqCompressFrame,把你捕获到的数据直接传进去(是直接的位图数据,不是位图结构信息哦)
保存或网络发送,就随便你了,保存成AVI文件的代码都臭遍街了,不用我罗嗦了吧?实在不知道就查一下MSDN,有现成的Demo,学习一下嘛,提高提高。
完成了需要清场:
ICSeqCompressFrameEnd
ICClose
 
上面用到的数据结构以及函数,在windows SDK里面都有说明
麻烦各位可以学习一下
实在不明白我再解释
 
后退
顶部