CapPreview(ghCapWnd,1);
End;
在Name为“Closevideo”的Tbutton的Click事件中写入以下代码:
procedure TForm1.ClosevideoClick(Sender:Tobject);
begin
capCaptureAbort(ghCapWnd); //停止捕获
capDriveDisconnect(ghCapWnd); //将捕获窗同驱动器断开
end;
定义捕获帧回调函数:
function FrameCallBack(hWnd:HWND;lpVHdr:LongInt):LongInt;stdcall;
var
DataPoint:^byte;
DibLen,RectWidth,RectHeight:integer;
begin
VideoStr:=LPVIDEOHDR(lpVHdr);
DibLen:=VideoStr^.dwBufferLength;
GetMem(DataPoint,64000);
//将帧数据COPY到一个内存中,注意:DATAPOINT要先分配空间
CopyMemory(DataPoint,VideoStr^.lpData,Diblen);
……
end;
4 结束语
灵活地使用AVICap窗口类的回调函数可以满足各种需求,但要注意从视频卡中捕获的视频数据的格式和图像的长宽要参考视频卡的参数。另外,有些视频卡通过设置可支持多种格式和图像长宽,所以,在还原图像时,要注意参考所用的视频卡的参数。