基于VFW的视频预览

来源:互联网 发布:热血霸业(神奇网络) 编辑:程序博客网 时间:2024/04/30 01:09

刚完成视频采集(预览)方案,现在有空就先总结一下这方面的技术,我用的是VFW视频采集方案有很多,我之前下载了网上一些;例子看,有DirectShow的,VFW的,OPENCV的,DirectShow是较VFW新,但用起来觉得不好用,所以转去用VFW,VFW感觉用起来比较方便!

以下结合收集资料和我自己的实际应用总结一下:

1.VFW视频采集方案介绍
VFW是Microsoft于1992年推出的数字视频软件包,它不依赖于专用的硬件设备,提供了通用的数字视频开发方案。VFW主要由AVICap.dll、MSVideo.dll、MCIAvi.drv、AVIFile.dll、vfw32.lib等库文件组成,这些库提供了相关视频、音频、AVI文件的函数,本节将介绍如何利用这些函数进行视频采集。
2.使用前的准备
(1)引用vfw.h头文件。
#include "vfw.h"
(2)导入vfw32.lib库文件。
#pragma comment (lib,"vfw32")
步骤2也可以在通过工程选项窗口的连接选项卡进行设置
3.视频窗口的创建
第一步需要创建一个视频预览窗口。在程序中可以使用capCreateCaptureWindow函数来创建视频预览窗口,该函数语法如下:

HWND VFWAPI capCreateCaptureWindow(LPCSTR lpszWindowName, DWORD dwStyle, int x,                 
int y, int nWidth, int nHeight, HWND hWnd, int nID);

参数说明:
lpszWindowName:表示视频捕捉窗口的名称。
dwStyle:表示视频捕获窗口的风格,一般包含有WS_CHILD 和 WS_VISIBLE风格。
x、y:表示视频捕捉窗口的左上角坐标。
nWidth、nHeight:表示视频捕捉窗口的宽度和高度。
hWnd:表示视频捕捉窗口父窗口的句柄。
nID:表示视频捕捉窗口标识。

4.连接视频设备
使一个捕获窗与一个设备驱动程序相关联。单独定义的一个捕获窗是不能工作的,它必需与一个设备相关联,这样才能取得视频信号
BOOL capDriverConnect(
  hwnd, 
  iIndex
);Parameters

hwnd
Handle to a capture window.
iIndex
Index of the capture driver. The index can range from 0 through 9.
Return Values
Returns TRUE if successful or FALSE if the specified capture driver cannot be connected to the capture window.
Remarks
Connecting a capture driver to a capture window automatically disconnects any previously connected capture driver.
5.设置摄像头参数
capDlgVideoSource(HWND hwnd)
hwnd
Handle to a capture window.
6.设置视频格式
capDlgVideoFormat(HWND hwnd); 
7.设置监视频率 
capPreviewRate(HWND hwnd,int itimes);
8.开始监视

这里只讲使用
capPreview(hwnd,TRUE);  //开始监视
9.结束监视
capCaptureStop(hwnd);
capPreview(hwnd, FALSE);
CWnd* pWnd=CWnd::FromHandle(hwnd);
pWnd->SendMessage(WM_CAP_DRIVER_DISCONNECT,0, 0L);

 

好,以上是使用得方法,接下来按步骤做就可以做一个视频预览程序:

1.新建一个对话框程序,叫CVideoTestDlg

2.在CVideoTestDlg类中添加成员:

HWND   m_hWndVideo; //视频显示窗口

3.画一个Picture控件,属性改为框架,并建立相对应的控件变量 CStatic m_Panel;

4.画一个Button控件(开启),并建立BN_CLICKED消息,在消息处理函数写入

5.同样方法处理“停止监控”Button

6.接着编译、运行,OK!

鉴于实际需要,我并没有做录像功能

如有问题,请回复写下邮箱索取源代码

原创粉丝点击