知识点滴

知识是一点一滴地积累的

 

用DirectShow实现音视频文件的播放

现在的Windows对多媒体文件暴露的API一般都转向原来DirectX方式的。DirectShow原来是DirectX中的组件,现在已经转移到Windows SDK的组件了。用它来实现多媒体文件的播放与操作具有很好的性能。下面的代码示例就用它播放一个".wav"文件,如果是.wmv, .avi文件,则会自动跳出播放窗口进行对视频的播放。

代码
#include<windows.h>
#include
<dshow.h>

void main(){
  CoInitialize(NULL);  
//因为要使用COM组件,所以要初始化
  IGraphBuilder *pGraph=NULL;   //核心接口

  CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
  IID_IGraphBuilder, (
void**)&pGraph);

  IMediaControl 
*pCtrl=NULL;   //用于控制媒体流的接口
  IMediaEvent *pEvent=NULL;   //触发媒体流事件,如播放结束等

  pGraph
->QueryInterface(IID_IMediaControl, (void**)&pCtrl);
  pGraph
->QueryInterface(IID_IMediaEvent, (void**)&pEvent);

  pGraph
->RenderFile(L"C:\\WINDOWS\\Media\\tada.wav", NULL);
  pCtrl
->Run();

  
long eCode;
  pEvent
->WaitForCompletion(INFINITE, &eCode);

  pEvent
->Release();
  pCtrl
->Release();

 pGraph
->Release();

 CoUninitialize();
}

 

 

上面编译运行后,需要加 strmiids.lib库进行链接。

 

下面是DirectShow的结构图:

图片

具体内容可以参考SDK文档

posted on 2010-02-28 10:02  阿东  阅读(1588)  评论(0编辑  收藏  举报

导航