Feeds:
文章
留言

Archive for 十月 21st, 2008

使用 IGraphBuilder 和 IMediaControl 介面可以簡單的播放任何音訊和視訊檔案,以下是播放 mp3 的程式 ^^

#include "stdafx.h"
#include <rpcsal.h>
#include <dshow.h>
#pragma comment(lib, "strmiids.lib")
int _tmain(int argc, _TCHAR* argv[]){ ::CoInitialize(NULL);


{ CComPtr<IGraphBuilder> pGraphBuilder; CoCreateInstance( CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&pGraphBuilder ); CComPtr<IMediaControl> pMediaControl; pGraphBuilder->QueryInterface(IID_IMediaControl, (void **)&pMediaControl); // 建立 the filter graph pGraphBuilder->RenderFile(L"c:\02.mp3", NULL); // 播放媒體 pMediaControl->Run(); while(1){ ::Sleep(1000); }

} ::CoUninitialize(); return 0; }

如果你要播放 avi, wmv 等視訊,只要將程式的 mp3 檔改成你系統中的 avi 視訊檔名即可。不同的是因為我沒有設定呈現的 Window 所以會出現如下的視窗播放影片

image

參考資料
[1] MSDN, "IGraphBuilder Interface"
[2] MSDN, "IMediaControl Interface"

Read Full Post »

如果你要使用 DirectShow 而引入了 dshow.h,編譯時卻產生"error C2061: syntax error : identifier ‘__RPC__deref_out_opt’" 錯誤訊息

可在 dshow.h 之前引入 rpcsal.h

Read Full Post »