如题。

解决方案 »

  1.   

    这个网上就太多了,用VFP一SOU到处都是
      

  2.   

    http://www.21ic.com/new_info/news/files/news/2003112822940.asphttp://www.ccw.com.cn/pub/ChFileSubmit.asp?tablename=TFileCcwNet&recordno=3796http://www.swissdelphicenter.ch/torry/showcode.php?id=1309下面以一个一帧一帧地从视频设备上捕获视频数据的Delphi程序为例,来说明每个函数的作用以及开发过程。 
    该程序的功能是可以在屏幕上显视捕获到的视频,并可以获得每一帧的图像数据。 
    新建一个工程,并将AVICAP32.PAS包含到USES中。 
    在Form1上放置一个TPanel控件,设Name为“gCapVideoArea”,该控件用于显示视频。再放置两个TButton控件,一个Name为“Openvideo”,另一个Name为“Closevideo”。 
    定义全局变量: 
    var 
    //定义捕获窗句柄 
    ghCapWnd: THandle;  
    //可以得到视频数据指针的结构变量,用于回调函数中 
    VideoStr: LPVIDEOHDR;  
    //用于设置设备属性的结构变量 
    CapParms: TCaptureParms;  
    在Name为“Openvideo”的TButton 的Click事件中写入以下代码: 
    procedure TForm1.OpenvideoClick(Sender: TObject); 
    begin 
    //使用Tpanel控件来创建捕获窗口 
    ghCapWnd := CapCreateCaptureWindow 
    ( PChar(‘KruwoSoft'), //捕获窗口的名字 
    WS_CHILD or WS_VISIBLE,//窗口样式 
    0, //X坐标 
    0, //Y坐标 
    gCapVideoArea.Width, //窗口宽 
    gCapVideoArea.Height, //窗口高 
    gCapVideoArea.Handle, //窗口句柄 
    0); //一般为0 
    {为了能够捕获视频帧,要启动一个捕获帧回调函数VideoStreamCallBack。捕获一个视频流或当前设备状态时分别使用以下函数: 
    //捕获一个视频流 
    CapSetCallbackOnVideoStream;  
    //得到一个设备错误 
    CapSetCallbackOnError;  
    //得到一个设备状态 
    CapSetCallbackOnStatus  

    //定义一个帧捕获回调函数
      

  3.   

    CapSetCallbackOnFrame (ghCapWnd,LongInt(@VideoStreamCallBack));  
    //将一个捕获窗口与一个设备驱程相关联,第二个参数是个序号,当系统中装有多个显视驱动程序时,其值分别依次为0到总个数 
    CapDriverConnect(ghCapWnd, 0);  
    //设置设备属性的结构变量 
    CapParms.dwRequestMicroSecPerFrame:=40000; 
    CapParms.fLimitEnabled := FALSE; 
    CapParms.fCaptureAudio := FALSE; // NO Audio 
    CapParms.fMCIControl := FALSE; 
    CapParms.fYield := TRUE; 
    CapParms.vKeyAbort := VK_ESCAPE; 
    CapParms.fAbortLeftMouse := FALSE; 
    CapParms.fAbortRightMouse := FALSE; 
    //使设置生效 
    CapCaptureSetSetup(ghCapWnd,LongInt(@CapParms),sizeof(TCAPTUREPARMS));  
    //设置预览时的比例 
    CapPreviewScale(ghCapWnd, 1); 
    //设置预览时的帧频率 
    CapPreviewRate(ghCapWnd,66); 
    //如果要捕获视频流,则要使用函数指定不生成文件。否则将会自动生成AVI文件 
    CapCaptureSequenceNoFile(ghCapWnd); 
    //指定是否使用叠加模式,使用为1,否则为0 
    CapOverlay(ghCapWnd, 1); 
    //打开预览 
    CapPreview(ghCapWnd, 1); 
    end; 
    在Name为“Closevideo”的TButton 的Click事件中写入以下代码: 
    procedure TForm1.ClosevideoClick(Sender: TObject); 
    begin  
    //停止捕获 
    capCaptureAbort(ghCapWnd);  
    //将捕获窗同驱动器断开 
    capDriverDisconnect(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.   

    请问AVICAP32.PAS文件从哪儿搞来的呀?