视频捕捉程序

VC学习笔记:

   首先在工程中加入vfw32.lib,然后新建一对话框avicap.dlg,在建一显示视频用的对话框avi.dlg在avicap.cpp中加入vfw.h,新建四个按钮video,stopvideo,capture,stopcapture.

 添加private:HWND ghCapWnd;CDialog* window;

void  AVICAP::OnVideo() 
{
    
// TODO: Add your control notification handler code here
    
//create a window for captureWindow 
    window=new CDialog;
    window
->Create(IDD_AVI);
    
    
//create capture window 
    ghCapWnd=capCreateCaptureWindow("My Own Capture Window",WS_CHILD|WS_VISIBLE,0,0,400,400,window- >GetSafeHwnd(),1235);
    
    
//connect device 
    capDriverConnect(ghCapWnd,0);
    
    
//get params  
    CAPTUREPARMS CapParms;
    
    capCaptureGetSetup(ghCapWnd,
&CapParms,sizeof(CAPTUREPARMS));
    
   
//设置桢速 
   CapParms.dwRequestMicroSecPerFrame=50000;
    
    
//有无时间限制 
   CapParms.fLimitEnabled=false;
    
    
//是否捕捉音频 
   CapParms.fCaptureAudio=false;
    
    
//MCI Device支持 
   CapParms.fMCIControl=false;
    
   
//设置窗口,如果为false,捕捉画面在桌面上 
   CapParms.fYield=true;

   
//停止捕捉键设置 
   CapParms.vKeyAbort=VK_ESCAPE;
   CapParms.fAbortLeftMouse
=false;
   CapParms.fAbortRightMouse
=false;
   capCaptureSetSetup(ghCapWnd,
&CapParms,sizeof(CAPTUREPARMS));
    
   
//设置预览时的比例 
   capPreviewScale(ghCapWnd,1);
    
   
//设置预览时的帧频率 
   capPreviewRate(ghCapWnd,66);
    
  
//是否支持比例变化     
  capPreviewScale(ghCapWnd,false);
    
   
//获得捕捉窗口状态
    CAPSTATUS  CapStatus;
    capGetStatus(ghCapWnd,
&CapStatus,sizeof(CapStatus));

    
//设置窗口大小
    CRect clientRect;
    ClientToScreen(clientRect);
     window
->SetWindowPos(window,0,0CapStatus.uiImageWidth,CapStatus.uiImageHeight+30,  //+30标题高
                                             SWP_NOZORDER|SWP_NOMOVE);
    
    
//打开窗口
    window->ShowWindow(SW_SHOW);

    
//打开预览     
    capPreview(ghCapWnd,1);
}


void  AVICAP::OnStopvideo() 
{
    
// TODO: Add your control notification handler code here
   capDriverDisconnect(ghCapWnd);
}

void  AVICAP::OnCapture() 
{
   
// TODO: Add your control notification handler code here
    char szCaptureFile[] = "D:/MYCAP.AVI"
    
    capFileSetCaptureFile(ghCapWnd,szCaptureFile);
//指定捕获文件名 
    
    capFileAlloc(ghCapWnd,(
1024L * 1024L * 5));   //为捕获文件分配存储空间
    
    capCaptureSequence(ghCapWnd);
}


void  AVICAP::OnStopcapture() 
{
   
// TODO: Add your control notification handler code here
    capCaptureAbort(ghCapWnd);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值