为什么使用VFW开发的视频显示(摄像头),总是出现显示滞后的现象(仅仅显示)?该怎么解决

为什么使用VFW开发的视频显示(摄像头),总是出现显示滞后的现象(仅仅显示)?
我试过网上很多用VFW的程序,都是这种情况!人在摄像头前摆手时,就能看出图像明显的滞后,但是用AMCAP显示时就很流畅,还试了directShow的程序也很流畅,这是为什么原因?是需要一些设置还是VFW的原因.有什么解决方法?

其中代码:
CWnd   *pWnd=AfxGetMainWnd()-> GetDlgItem(IDC_VIDEO);//得到预示窗口指针
CRect   rect;
pWnd-> GetWindowRect(&rect);   //   得到窗口大小
m_hCapWnd=capCreateCaptureWindow((LPTSTR)TEXT( "视频捕捉测试程序 "),
WS_CHILD|WS_VISIBLE|WS_EX_CLIENTEDGE|WS_EX_DLGMODALFRAME,
0,0,rect.Width(),rect.Width(),
pWnd-> GetSafeHwnd(),0);   //   设置预示窗口
ASSERT(m_hCapWnd);

if(capDriverConnect(m_hCapWnd,0))
{
//   连接第0   号驱动器
m_bInit=TRUE;

//得到驱动器的性能
capDriverGetCaps(m_hCapWnd,sizeof(CAPDRIVERCAPS),   &m_CapDrvCap);

if(m_CapDrvCap.fCaptureInitialized)
{//   如果初始化成功
capGetStatus(m_hCapWnd,   &m_CapStatus,sizeof(m_CapStatus));   //   得到驱动器状态
capPreviewRate(m_hCapWnd,30);   //   设置预示帧频
capPreview(m_hCapWnd,TRUE);   //   设置预示方式
}
else{//   初始化未成功
AfxMessageBox( "视频捕捉卡初始化失败! ");
AfxGetMainWnd()-> PostMessage(WM_CLOSE);
}
}
else{//   未能连接到驱动器
AfxMessageBox( "与视频捕捉卡连接失败! ");
// AfxGetMainWnd()-> PostMessage(WM_CLOSE);
}

2.还有一个现象当在别的按钮中执行: capCaptureSequence(m_hCapWnd);   //   捕捉到文件图像反而流畅了!这又是为什么?

------解决方案--------------------
不懂
帮你顶
------解决方案--------------------
仔细研读一下AMCAP的代码吧。
------解决方案--------------------
VFW缓冲经常会很慢
除非内存很大...
------解决方案--------------------
VFW的预览好像是单独开窗口,将获得的数据通过内存缓存重新显示出来的
所以往往速度慢
amcap中对具有preview——pin的设备是直接连接在该pin上进行显示


------解决方案--------------------
stop后调用capSetCallbackOnVideoStream取消callback了吗?
------解决方案--------------------
VFW的方式已经落伍了,都在使用directshow的方式!
------解决方案--------------------
AMCAP好像用得是dxshow吧。
我感觉好像差不多样,关键看视频头。呵呵

------解决方案--------------------
关键问题是你摄像头芯片及设置,207 305等芯片较差,在较亮情况下速度尚可。
如果不用自动调整就不会太慢了。

这个不是VFW问题