您的位置:首页 > 其它

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

2010-02-28 10:02 435 查看
现在的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文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: