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

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

ExpandedBlockStart.gif 代码
#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的结构图:

用DirectShow实现音视频文件的播放_第1张图片

具体内容可以参考SDK文档

转载于:https://www.cnblogs.com/Adon/archive/2010/02/28/DirectShow.html

你可能感兴趣的:(用DirectShow实现音视频文件的播放)