DirectShow Sample - SimplePlayback

Last-modified: 2007-12-31 (月) 16:07:27

概要

DirectShowを使った、単純再生プログラム

確認環境

Windows XP SP2
DirectX SDK June 2007
Windows Server 2003 R2 Platform SDK
Visual Studio 2005 SP1

必要な設定

リンカの設定で「strmiids.lib」が必要です。
その他、インクルードパスやリンカパスの設定は、
DirectShow 開発資料をご覧ください。

サンプルソース

とりあえず、Win32コンソールプロジェクトでスタートします。
あとは、以下のソースでOK。

// SimplePlayback.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include <DShow.h>
#pragma comment(lib, "strmiids.lib")	// リンカの設定が面倒なときは、コレ。
int _tmain(int argc, _TCHAR* argv[])
{
	IGraphBuilder * pGraph = NULL;
	IMediaControl * pMediaControl = NULL;
	CoInitialize(NULL);
	CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC, IID_IGraphBuilder, reinterpret_cast<void**>(&pGraph) );
	if (pGraph == NULL) {
		CoUninitialize();
	}
	pGraph->QueryInterface(IID_IMediaControl, reinterpret_cast<void**>(&pMediaControl));
	if (pMediaControl == NULL) {
		CoUninitialize();
	}
	pGraph->RenderFile(L"D:\\Data\\NoriNori.avi", NULL);
	pMediaControl->Run();
	MessageBoxW(NULL, L"Click me to end playback", L"SimpleDirectShowPlayer", MB_OK);
	pMediaControl->Release();
	pGraph->Release();
	CoUninitialize();
	return 0;
}

補足

上記のサンプルを動かすと、ムービーを描画するウィンドウが別途開く。
これを抑止したい場合、つまりムービーの描画先を特定のウィンドウに
関連付ける方法は別サンプルで紹介する(予定)。

参考資料