一 环境设置 二 DirectShow编程简介 三 播放文件例程
一 环境设置该节介绍如何建立DirectShow应用程序。你可以建立一个控制台程序,或者Visual Studio环境下的其它Visual C++的项目。 头文件 所有DirectShow 程序都使用下表中的头文件。
有些DirectShow接口会要求其他头文件,你可以去查看这些接口的参考手册。
库文件 DirectShow程序要使用的库文件如下:
可以把DirectX SDK 的Include 和Lib目录放在Visual Studio的搜索路径的第一位。以确保你可以使用最新的版本!
编写DirectShow 程序 在大部分的情况下,DirectShow应用程序必须执行下面3个步骤:
当处理完成后,应用程序将释放掉Filter Graph Manager和所有的过滤器。 DirectShow 是基于COM的。Filter Graph Manager 和过滤器都是COM对象。你应该对COM编程有全面的了解。 三 播放文件例程这里提供一个控制台应用程序去播放一个音、视频文件。这个程序只有几行长。 在前面介绍了一个基于DirectShow的应用程序,必须要进行如下几个基本步骤:
全部源码如下: #include <dshow.h> void main(void) { IGraphBuilder *pGraph = NULL; IMediaControl *pControl = NULL; IMediaEvent *pEvent = NULL; // 初始化COM 库 HRESULT hr = CoInitialize(NULL); if (FAILED(hr)) { printf("ERROR - Could not initialize COM library"); return; } // 建立过滤器图表管理器 hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph); if (FAILED(hr)) { printf("ERROR - Could not create the Filter Graph Manager."); return; } hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl); hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent); // 建立过滤器图表 hr = pGraph->RenderFile(L"C://Example.avi", NULL); if (SUCCEEDED(hr)) { // 播放 hr = pControl->Run(); if (SUCCEEDED(hr)) { // 等待播放结束 long evCode; pEvent->WaitForCompletion(INFINITE, &evCode); } } pControl->Release(); pEvent->Release(); pGraph->Release(); CoUninitialize(); }v |
DirectShow开发中的HelloWorld
最新推荐文章于 2019-06-28 17:45:24 发布