2

所属分类:视频捕捉采集剪辑
开发工具:Visual C++
文件大小:37KB
下载次数:57
上传日期:2008-06-02 16:22:11
上 传 者tiandi0403
说明:  视频采集源码(摄像头),是基于VFW的实时视频采集,带有回调函数
(Video capture source (camera), is based on the VFW)

文件列表:
视频采集源码(摄像头)\VideoEXE\Debug (0, 2008-05-30)
视频采集源码(摄像头)\VideoEXE\res\VideoEXE.ico (1078, 2004-04-29)
视频采集源码(摄像头)\VideoEXE\res\VideoEXE.rc2 (400, 2004-04-29)
视频采集源码(摄像头)\VideoEXE\res (0, 2008-05-30)
视频采集源码(摄像头)\VideoEXE\resource.h (731, 2004-04-29)
视频采集源码(摄像头)\VideoEXE\StdAfx.cpp (210, 2004-04-29)
视频采集源码(摄像头)\VideoEXE\StdAfx.h (1152, 2004-04-29)
视频采集源码(摄像头)\VideoEXE\VideoDLL.dll (110689, 2002-04-30)
视频采集源码(摄像头)\VideoEXE\VideoEXE.aps (20724, 2008-05-30)
视频采集源码(摄像头)\VideoEXE\VideoEXE.clw (1104, 2008-05-30)
视频采集源码(摄像头)\VideoEXE\VideoEXE.cpp (2185, 2004-04-29)
视频采集源码(摄像头)\VideoEXE\VideoEXE.dsp (4195, 2004-04-29)
视频采集源码(摄像头)\VideoEXE\VideoEXE.dsw (541, 2004-04-29)
视频采集源码(摄像头)\VideoEXE\VideoEXE.h (1346, 2004-04-29)
视频采集源码(摄像头)\VideoEXE\VideoEXE.ncb (41984, 2008-05-30)
视频采集源码(摄像头)\VideoEXE\VideoEXE.opt (48640, 2008-05-30)
视频采集源码(摄像头)\VideoEXE\VideoEXE.plg (910, 2008-05-30)
视频采集源码(摄像头)\VideoEXE\VideoEXE.rc (5249, 2004-04-29)
视频采集源码(摄像头)\VideoEXE\VideoEXEDlg.cpp (6629, 2008-05-30)
视频采集源码(摄像头)\VideoEXE\VideoEXEDlg.h (1534, 2004-04-29)
视频采集源码(摄像头)\VideoEXE (0, 2008-05-30)
视频采集源码(摄像头) (0, 2008-05-30)

视频采集 孔康 terrist007@163.com 前一段时间写的“实时语音通信”,朋友们给了我很大鼓励,甚感欣慰!但是就那个程序,现在让我困苦不堪。在这里恳请高手帮助解决这些问题: 1 回放问题,仍然没有实现的双缓冲播放。播放两个声音块的效果就像火车经过两节铁轨的接点,不连续,有杂音。这简直让人无法忍受!为了弱化这个问题,不得不增大INP_BUFFER_SIZE值,以减少“接点”个数。于是第二个问题就来了。 2 延时问题,那个程序的延时达到秒级,当时考虑了网络壅塞以及节省内存的情况多次使用了内存申请、释放、内存拷贝函数再加那个巨大的缓冲区,难怪有这么大的延时。在网络品质很好的局域网里,这更让人不可接受! 许多朋友希望我能介绍一下视频的编程,时下视频聊天几乎成了网吧老板们制胜的法宝,自己的软件嵌入视频通信方式又显得那么酷,而一个摄像头只需要百来块钱。本软件功能上可以实现视频采集、预览,选择压缩器(视频文件可是大得惊人!)进行压缩、解压,回放。抓取单帧图片保存等。 简单介绍一下程序吧,在OnInitDialog()里面: InitCaptureFormat()初始化BITMAP m_InInfo,设置视频采集数据的格式。 接着,触发OnDisplay().装载动态链接库VideoDll.dll,如果成功则初始化COMPVARS m_CV这个变量,设置压缩器,可以手动设置也可以调用系统对话框。 在VideoDll.dll中根据压缩器初始化解压器COMPVARS m_2CV,InitVideoCard()调用了系列cap...()函数,详情请参考MSDN或与我联系(terrist007@163.com或candy0624@163.com)索取更进一步代码。 void CVideoPlayBackDlg::InitVideoCard() { if(!capDriverConnect(m_hWndCapture,0))//连接设备驱动程序 AfxMessageBox("Driver Connect Failure"); //set the video format if(!capSetVideoFormat(m_hWndCapture,&m_InInfo,sizeof(BITMAPINFO))) AfxMessageBox("Fail to set the video format");//如果驱动不支持此格式将返回0 capPreviewRate(m_hWndCapture,24);//预览桢速 capPreview(this->m_hWndCapture,TRUE);//可以预览 if(!capSetCallbackOnFrame(this->m_hWndCapture,FrameCallBack))//设置单桢的回调函数 AfxMessageBox("fail to setCallbackOnFrame function"); } 值得一提的是那个回调函数FrameCallBack(),它对采集到的数据(单幅图片)进行处理。为了方便理解,我把压缩ICSeqCompressFrame()、解压ICDecompress()、窗口刷新InvalidateRect()三个函数全写在这里而省略了网络发送部分,实际运用当中通过Socket把Buf里面的数据发送出去即可,读者可以轻松完成,您当然也可以参考我在“实时语音通信”中介绍的网络传送机制。当然如果您很厉害,还可以运用各种算法对数据进行运算,实现一些号称“智能”的效果。运行结束后别忘了释放资源,就OK了 结束语:如果想实现实时的语音、视频通信,而且语音视频要同步;如果想保存成avi动画,还得啃那些cap打头的函数们。 Copyright(C) 2004 Kongkang All Rights Reserved.

近期下载者

相关文件


收藏者