DirectShow是DirectX用于开发处理流媒体的组件,流媒体就是应用流技术在网上传输的多媒体文件,旧有的多媒体文件往往
占用内存大,网上浏览困难。然后流媒体技术的出现,使得在网络上在线观看影音变为了现实。
好了,先让大家对DirectShow开发组件有一点了解,若要更详细,可以自己去搜索一下,主要说下面的代码了
首先DirectSHow开发的步骤是:
1.初始化COM对象
2.载入音乐文件,
3.音乐的播放。
4.音乐的播放检测,(下面不说这步骤了)
在写代码之前,必须要添加相关的头文件和链接。
#include <dshow.h>
#pragma comment(lib,"strmiids.lib")
//3个多媒体接口(滤波器,控制器,事件监听器)
IGraphBuilder* pGraphBuilder=NULL;
IMediaControl* pMediaControl=NULL;
IMediaEventEx* pMediaEventEx=NULL;
然后按步骤写代码:
1.初始化com
CoInitialize(NULL);
//提示:::初始化多线程的COM系统用(如果支持的话)CoInitializeEx(NULL,COINIT_MULTITHREADED);
// DirectShow初始化
if(FAILED(CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(LPVOID*)&pGraphBuilder)))
{
MessageBox(0,TEXT("创建滤波器失败!"),0,0);
return E_FAIL;
}
pGraphBuilder->QueryInterface(IID_IMediaControl,(LPVOID*)&pMediaControl);
pGraphBuilder->QueryInterface(IID_IMediaEventEx,(LPVOID*)&pMediaEventEx);
2.载入音乐
if(FAILED(pGraphBuilder->RenderFile(TEXT("C:/Users/John/Downloads/10-Lil Wayne - How To Love.mp3"),NULL)))//音乐名字
{
MessageBox(0,TEXT("媒体文件渲染失败!"),0,0);
return E_FAIL;
}
3.播放音乐
pMediaControl->Run();
最后记得释放创建的所有对象
pMediaEventEx->Release();pMediaEventEx=NULL;
pMediaControl->Release();pMediaControl=NULL;
pGraphBuilder->Release();pGraphBuilder=NULL;
CoUninitalize();
其中利用播放视频和以上的差不多。