首页 VFW (video for windows)视频编程

VFW (video for windows)视频编程

举报
开通vip

VFW (video for windows)视频编程VFW (video for windows)视频编程 2008-04-26 14:00 A VICap提供视频流的捕捉,并且可以是实时的单帧捕捉。另外,A VICap提供视频资源——媒体控制接口(Media Control Interface)设备的控制,因此我们可以控制(当然是通过我们的应用程序了)视频资源(张坤注:应该是MCI ,Media Control Interface)的起、停位置,并且可以增加捕捉操作来加入帧捕捉的步骤! 你用A VICap window class创建的窗口,可以完成一下操...

VFW (video for windows)视频编程
VFW (video for windows)视频编程 2008-04-26 14:00 A VICap提供视频流的捕捉,并且可以是实时的单帧捕捉。另外,A VICap提供视频资源——媒体控制接口(Media Control Interface)设备的控制,因此我们可以控制(当然是通过我们的应用程序了)视频资源(张坤注:应该是MCI ,Media Control Interface)的起、停位置,并且可以增加捕捉操作来加入帧捕捉的步骤! 你用A VICap window class创建的窗口,可以完成一下操作(张坤注:或者说是“有一下功能”): 1.捕捉声音、视频流到一个A VI文件。 2.动态地连接视频、声音输入设备。 3.可以用覆盖,或者直接用preview方法去显示一个实时变化的视频信号。 4.当开始捕捉的时候,指定一个文件(张坤注:用来存储捕捉到的视频的文件),并且把扑捉到的内容copy到另外一个文件。 5.设置捕捉的频率; 6.显示对话框来控制视频资源(张坤注:应该是MCI吧)和格式。 7.创建、保存、加载调色板。 8.Copy图片,调色板到剪贴板上。 9.捕捉、保存一个单独的图片为一个设备无关的bitmap 如何使用视频捕捉 相信你看完上面的翻译已经快要呕吐了——这么菜的水平还要上来丢人现眼…… 没办法,谁然我这人脸皮厚呢——再说了,这年头脸皮厚吃香啊^_^——比如说那个叫做什么姐姐的啦,我的脸皮厚还是跟她学的呢。算了算了不多说了,只要你敢往下看,我就敢往下写——与其叫“写”还不如叫翻译吧。 这部分包含了一些如何使用A VICap window class进行视、音频捕捉的步骤和例子 1.创建一个视频捕捉窗口。 下面的例子用capCreateCaptureWindow函数创建了一个捕捉窗口; HWND hWndc=capCreateCaptureWindow( (LPSTR)”My Capture Window”,//窗口名称 WS_CHILD | WS_VISIBLE,//设置窗口的类型 0,//窗口左上角横坐标 0,//窗口左上角纵坐标 100,//窗口宽度 100,//窗口高度 (HWND)hwndParent, //父窗口句柄 (int)nID /*该窗口的id*/) 2.连接视频捕捉设备驱动 下面的例子连接捕捉窗口和MSVIDEO设备驱动,然后用capDriverDisconnect宏断开。fOK=SendMessage(hWndc, //接收消息的窗口句柄 WM_CAP_DRIVER_CONNECT, //发送的消息 0, //消息附加参数 0L/*消息附加参数*/); 或者也可以用一个宏去连接MSVEDEO驱动 fOK=capDriverConnect(hWndC,0);//其中的参数hWndC是我们刚才创建的视频捕捉 //窗口的句柄 然后再调用capDriverDisconnect宏断开视频捕捉驱动(这个步骤一般在捕捉完毕后) capDriverDisconnect(hWndC); 3.下面的例子用capGetDriverDescription函数去获取机器上安装的捕捉驱动的名字和版 本 char szDeviceName[80];//用来存放设备名称 char szDeviceVersion[80];//用来存放驱动版本 for(wIndex=0;wIndex<10;wIndex++) { if(capGetDriverDescription(wIndex,szDeviceName,sizeof(szDeviceName), szDeviceVersVersion,sizeof(szDeviceVersion)) { //把驱动的名字添加到一个list里面,来供使用者选取; } } 3.获取视频捕捉驱动的能力(张坤注:或者说是功能吧) WM_CAP_DRIVER_GET_CAPS消息返回捕捉驱动的能力和并把这些结果放入一个CAPDRIVERCAPS结构体变量中,应用程序每一次连接一个新的捕捉驱动到捕捉窗口,并且回更新CAPDRIVERCAPS结构体变量。下面的例子用capDriverGetCap宏去获取捕捉驱动的功能。 CAPDRIVERCAPS CapDrvCaps; SendMessage(hWndc,WM_CAP_DRIVER_GET_CAPS, Sizeof(CAPDRIVERCAPS),(LONG)(LPVOID)&CapDrvCaps); 上面用的是消息发送的形式,下面是用capDriverGetCaps宏的方式来获取: capDriverGetCaps(hWndC,&CapDrvCaps,sizeof(CAPDRIVERCAPS)); 4.获取视频扑捉窗口的状态 下面用capGetStatus宏获取视频流的最大尺寸,然后用这个尺寸做为SetWindowPos函数的参数去设置捕捉窗口的尺寸) CAPSTATUS CapStatus; capGetStatus(hWndC,&CapStatus,sizof(CAPSTATUS)); SetWindowPos(hWndC,NULL,0,0,CapStatus.uiImageWidth,CapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE); 5.显示视频属性设置对话框 每种视频捕捉驱动都能提供三个不同的对话框用来控制视频数字化表面和捕捉进程,下面的例子向你展示如何显示这些对话框,在显示每个对话框之前,调用capDriverGetCaps宏并且核对返回的CAPDRIVERCAPS结构体变量,看该视频捕捉驱动是否能显示这些对话框。CAPDRIVERCAPS CapDrvCaps; capDriverGetCaps(hWndC,&CapDrvCaps,sizeof(CAPDRIVERCAPS)); //显示视频资源对话框 If(CapDrvCaps.fHasDlgVideoSource) capDlgViceoSource(hWndC); //显示视频格式对话框 If(CapDrvCaps.fHasDlgVideoFormat) { capDlgVideoFormat(hWndC); } if(CapDrvCaps.fHasDlgVideoDisplay) capDlgVideoDisplay(hWndC); 6.获取、设置视频格式 BITMAPINFO结构体的长度是可变的,因此适应标准或压缩的数据格式。 由于这个结构体的长度是可变的,因此应用程序在获取当前视频格式之前必须经常检查结构体的长度,分配内存块。下面的例子用capGetVideoFormatSize宏来获取缓冲区的长度,然后调用capGetVideoFormat宏来获取当前的视频格式。 LPBITMAPINFO lpbi; DWORD dwSize; dwSize=capGetVideoFormatSize(hWndC); lpbi=GlobalAllocPtr(GHND,dwSize); capGetVideoFormat(hWndC,lpbi,dwSize); 切记:在访问完视频格式之后要释放刚才分配的内存;另外,GlobalAllocPtr这个宏是在windowsx.h中定义的,如果用这个宏的话一定要记得包含这个头文件。 7.预览视频 下面的例子用capPreviewRate宏来设置帧输出率66MS(66毫秒)然后用capPreview宏来设置捕捉窗口的预览模式。 capPreviewRate(hWndC,66); capPreview(hWndC,TRUE); capPreview(hWndC,FALSE); 8.允许视频覆盖 下面的例子用capDriverGetCaps宏来检测一个视频捕捉驱动是否支持覆盖,如果是则用capOverlay宏去允许覆盖; CAPDRIVERCAPS CapDrvCaps; capDriverGetCaps(hWndC,&CapDrvCaps,sizeof(CAPDRIVERCAPS)); if(CapDrvCaps.fHasOverlay) capOverlay(hWndC,TRUE); 9.命名视频捕捉文件 下面的例子用capFileSetCaptureFile宏来为视频捕捉文件准备一个文件名(MYCAP.AVI)并且用capFileAlloc宏来预分配一个5M的空间; Char szCaptureFile[]=”MYCAP.AVI”; capFileSetCaptureFile(hWndC,szCaptureFile); capFileAlloc(hWndC,(1024*1024*5)); 10.格式化声音捕捉(张坤注:也就是设置声音捕捉格式, 设置声音采样格式) 下面用capSetAudioFormat设置声音采样格式为11kHz PCM 8bit 立体声 WA VEFORMA TEX wfex; wfex.wFormatTag = W A VE_FORMAT_PCM; wfex.nChannels = 2; // 双声道,立体声 wfex.nSamplesPerSec = 11025; wfex.nAvgBytesPerSec = 22050; wfex.nBlockAlign = 2; wfex.wBitsPerSample = 8; wfex.cbSize = 0; capSetAudioFormat(hWndC, &wfex, sizeof(W A VEFORMATEX)); 11.改变声音采样格式 CAPTUREPARMS CaptureParms; Float FramesPerSec=10.0; capCaptureGetSetup(hWndC,&CaptureParams,sizeof(CAPTUREPARAMS)); CaptureParms.dwRequestMicroSecperFrame=(DOWRD)(1.0e6/FramesPerSec); capCaptureSetSetup(hWndC,&CapTureParms,sizeof(CAPTUREPARMS); 12.捕获数据 下面的例子用capCaptureSequence宏来开始捕捉视频,并且用capFileSaveAs把捕捉到的数据从捕捉文件中拷贝到NEWFILE.AVI这个文件中; char szNewName[] = "NEWFILE.AVI"; capCaptureSequence(hWndC); //开始捕捉. capFileSaveAs(hWndC, szNewName);
本文档为【VFW (video for windows)视频编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_531654
暂无简介~
格式:doc
大小:24KB
软件:Word
页数:9
分类:互联网
上传时间:2019-05-28
浏览量:45