1 #include2 3 #pragma comment(lib,"strmbase.lib") 4 #pragma comment(lib,"quartz.lib") 5 6 int main() { 7 // Filter Graph Builder 8 IGraphBuilder *pGraph = NULL; 9 // Media Control10 IMediaControl *pControl = NULL;11 // Media Event12 IMediaEvent *pEvent = NULL;13 // 初始化COM库,HRESULT 就是函数运行的结果是成功了还是失败了,使用FAILED(hr),SUCCEEDED(hr) 来判断14 HRESULT hr = CoInitialize(NULL);15 16 // 如果初始化COM库失败的话,就返回17 if (FAILED(hr))18 {19 return 0;20 }21 22 // 创建 Filter Graph Manager23 hr = CoCreateInstance(24 CLSID_FilterGraph,25 NULL,26 CLSCTX_INPROC_SERVER,27 IID_IGraphBuilder,28 (void**) &pGraph29 );30 31 // 如果创建失败 返回32 if (FAILED(hr))33 {34 return 0;35 }36 37 // 使用 Filter Graph Manager 得到 MediaControl & MediaEvent38 hr = pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);39 hr = pGraph->QueryInterface(IID_IMediaEvent,(void**)&pEvent);40 41 // 设置渲染一个视频文件42 hr = pGraph->RenderFile(L"E:/学习/WPF/VS2008WPFVideo07.wmv",NULL);43 44 if (SUCCEEDED(hr))45 {46 // 使用 pControl 的 RUN 方法,开始播放视频47 hr = pControl->Run();48 49 if (SUCCEEDED(hr))50 {51 // 等待播放结束52 long evCode;53 pEvent->WaitForCompletion(INFINITE,&evCode);54 }55 }56 57 // 释放资源58 pControl->Release();59 pEvent->Release();60 pGraph->Release();61 // 释放COM库62 CoUninitialize();63 64 return 0;65 }
DirectShow 是基于COM 组件的, 所以在使用前最好先了解一下COM编辑的一些基础的知识.
最近也是刚开始接触DS ,因为在做新媒体应用 的时候总是很常用到.所以很有了解学习的必要
做了一个最简单的入门程序(来自己网络),用来敲开DirectShow的大门!!!