1.初始化com组件
2.枚举设备信息:
创建枚举器组件
指定某一种类型设备,参数 CLSID,通过 ICreateDevEnum::CreateClassEnumerator 获取某一种类的枚举器
IEnumMoniker::Next 枚举每一个 moniker
通过下面的函数 IMoniker::BindToStorage 设备的名称
3.根据 CLSID 向 graph 中添加 filter
利用IMoniker::BindToObject生成绑定道设备上的filter
IFilterGraph::AddFilter 添加 Capture Filter
4.枚举 Graph 图中的对象(filter,pin)
Filter 图表管理器 IFilterGraph::EnumFilters 方法,枚举 graph 图中的所有的 filter
Filter 使用 IBaseFilter::EnumPins 方法,枚举 filter 所有的 pin
pin 支持一个 IPin::EnumMediaTypes 方法,来枚举 pin 支持的媒体类型
5.通过 pin 连接两个 filter
ICaptureGraphBuilder2::RenderStream 选择预览音视频 ( preview pin)
AVI Mux filter 收从 capture pin 过来的音、视频流,然后将其打包成 AVI 流,File writer 将 AVI 流写入到文件中 (captrue pin)