这是在网上看到的一个directshow播放过程的最简介绍(原文地址:http://hi.baidu.com/ihoohi/blog/item/51cc1d554b3db9173b293545.html)
(个人觉得很经典摘录如下)
IGraphBuilder * mGraph;
IMediaControl * mMediaControl;
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&mGraph); //此处为创建Filter Graph Manager实例
mGraph->QueryInterface(IID_IMediaControl, (void **)&mMediaControl);//获取其它如控制等组件指针
mGraph->RenderFile(L"g:\\cctv00.mpg", NULL); //创建一条完整的Filter链路
mMediaControl->Run();//调用各个接口方法进行控制,并且完成Filter Graph Manager与应用程序的交互
上面六行代码告诉了我们播放一个媒体文件的必需步骤:
1,通过API函数CoCreateInstance()创建一个Filter Graph Manager 实例; 此步很容易,要做的事少,方法如上
2,通过调用QueryInterface ( )函数来获取组件的指针; 此步很容易,要做的事少,方法如上
3,创建一条完整的Filter链路 此步骤较为麻烦,也是成功的关键。包括filter的添加、Pin的连接等
4,对Filter Graph进行控制和对事件作出响应。此步骤是一个完整的播放器必须的。
2,通过调用QueryInterface ( )函数来获取组件的指针; 此步很容易,要做的事少,方法如上
3,创建一条完整的Filter链路 此步骤较为麻烦,也是成功的关键。包括filter的添加、Pin的连接等
4,对Filter Graph进行控制和对事件作出响应。此步骤是一个完整的播放器必须的。