1。简单地播放文件
#include
#pragma comment (lib,"Ole32.lib")
#pragma comment (lib,"Strmiids.lib")
#define FILENAME L"C:\\Documents and Settings\\vs6\\桌面\\temp\\FL5007822001-500-2.avi"
bool g_bExit=false; //this APP will be exited when g_bExit=TURE
#define ture (bool)-1
int main()
{
IGraphBuilder *pGraphBuilder; //这是directshow的核心
IMediaControl *pMediaControl; //帮我们连接filter(媒体文件,解码器等) //简单的说,它帮我们简单地打开和播放文件.
IVideoWindow *pVideoWindow; //用这个来控制directshow的视频窗口
//COM初始化
CoInitialize(NULL);
//建立FilterGraph
CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC,IID_IGraphBuilder,
(LPVOID*)&pGraphBuilder);
// 向directshow询问MediaControl接口:
pGraphBuilder->QueryInterface(IID_IMediaControl,(LPVOID*)&pMediaControl);
//建立 Graph:
pMediaControl->RenderFile(FILENAME);
//向directshow询问VideoWindow接口:
pGraphBuilder->QueryInterface(IID_IVideoWindow,(LPVOID*)&pVideoWindow);
// 全屏:
pVideoWindow->put_Visible(OATRUE);
pVideoWindow->put_FullScreenMode(OATRUE);
//开始播放:
pMediaControl->Run();
// 等待:
MessageBox(NULL,"Block Execution","Block",MB_OK);
//停止:
pMediaControl->Stop();
// release resource:
pVideoWindow->Release();
pMediaControl->Release();
pGraphBuilder->Release();
// COM 销毁:
CoUninitialize();
return 0;
}
|