Camera 程序

来源:互联网 发布:股票资金曲线软件 编辑:程序博客网 时间:2024/06/15 17:48

1、视频捕捉图形管理器接口

       CComPtr<ICaptureGraphBuilder2>      m_pCaptureGraphBuilder;

2、视频捕捉设备

   查找设备

HANDLE FindFirstDevice(DeviceSearchType searchType, LPCVOID pvSearchParam, __out PDEVMGR_DEVICE_INFORMATION pdi);

绑定设备

//创建视频捕捉Filter

CHK(m_pVideoCaptureFilter.CoCreateInstance(CLSID_VideoCapture));

//得到视频捕捉属性页接口

    CHK(m_pVideoCaptureFilter->QueryInterface(&m_pPropertyBag ));

//视频设备属性页

       CComPtr<IPersistPropertyBag>    m_pPropertyBag ;

 

3、视频捕捉filterpin

预览 pin 和捕捉 和和捕捉 pin

视频捕捉 Filter都提供了预览和捕捉的输出 pin,预览 pin 用来将视频流在屏幕上显示,捕捉pin 用来将视频流写入文件。

预览 pin和输出 pin有下面的区别:

1  为了保证捕捉 pin 对视频桢流量,预览 pin 必要的时候可以停止。

2  经过捕捉 pin 的视频桢都有时间戳,但是预览 pin 的视频流没有时间戳。

预览 pin 的视频流之所以没有时间戳的原因在于 filter 图表管理器在视频流里加一个很小的latency,如果捕捉时间被认为就是 render 时间的话,视频 renderFilter 就认为视频流有一个小小的延迟,如果此时 render filter试图连续播放的时候,就会丢桢。去掉时间戳就保证了视频桢来了就可以播放,不用等待,也不丢桢。

预览 pin的种类GUID PIN_CATEGORY_PREVIEW

捕捉 pin的种类GUID PIN_CATEGORY_CAPTURE

4、预览视频

CHK(m_pCaptureGraphBuilder->RenderStream( &PIN_CATEGORY_PREVIEW,

5、捕捉视频保存为文件

m_pCaptureGraphBuilder->RenderStream( &PIN_CATEGORY_CAPTURE

m_pCaptureGraphBuilder->RenderStream