開発環境 Microsoft Visual C++ 2010 Express (SP1)
実行環境 Microsoft Windows XP Home Edition (SP3)
プロジェクトの種類 Win32 プロジェクト
プロジェクト名 dshow1
アプリケーションの種類 Windows アプリケーション
追加のオプション 空のプロジェクト
文字セット Unicode

ActiveMovie Windowで再生: .wmv .mpg .mp4 .avi
音声のみ再生: .wav .mp3

以下のファイルをインストールすることによりmp4動画の再生が可能になった。
  • MPC-HC_standalone_filters.1.6.5.6081.x86.ICL12.7z
  • ffdshow_rev4486_20120825_clsid.exe

また、音声のみ再生だったavi動画もffdshowにより動画も再生されるようになった。

フィルタグラフの様子はGraphEdit(graphedt.exe)にて確認できる。
いくつか見つかる場合はとりあえず最新のものを使う。

  • Windows SDK 7.1版
C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin
DirectX 10.0 - Build 100513
作成日時:2010年5月13日、22:44:58

  • Windows Driver Kit 7.1.0版
C:\WinDDK\7600.16385.1\tools\avstream\i386
DirectX 10.0 - Build 100208
作成日時:2010年2月8日、20:21:10

参考

dshow1.cpp
/*
インクルード・ライブラリとも以下のディレクトリを参照していると思われる。
C:\Program Files\Microsoft SDKs\Windows\v7.0A
 
Unicode文字セット
*/
#pragma comment(lib, "strmiids.lib")
 
//#include <Windows.h>
#include <DShow.h>
 
//==============================================================================
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	IGraphBuilder	*pGraph = NULL;
	IMediaControl	*pControl = NULL;
	IMediaEvent	*pEvent = NULL;
	HRESULT hr;
	ULONG ur;
 
	// COMライブラリの初期化
	hr = CoInitialize(NULL);
	if (FAILED(hr)) {
		return 0;
	}
 
	// フィルタグラフマネージャ
	hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pGraph));
	if (FAILED(hr)) {
		return 0;
	}
 
	hr = pGraph->QueryInterface(IID_PPV_ARGS(&pControl));
	hr = pGraph->QueryInterface(IID_PPV_ARGS(&pEvent));
 
	hr = pGraph->RenderFile(L"c:\\tmp\\hoge.mpg", NULL);
	if (SUCCEEDED(hr)) {
		hr = pControl->Run();
		if (SUCCEEDED(hr)) {
			long evCode;
			pEvent->WaitForCompletion(10000, &evCode);	// 10秒
		}
	}
 
	ur = pControl->Release();
	ur = pEvent->Release();
	ur = pGraph->Release();
	CoUninitialize();
	return 0;
}
 
最終更新:2012年10月17日 05:53