DirectShowプログラミング [VC++]
ここでは、DirectShowを使ってプログラムを書く方法を説明します。 DirectShowは、Windows上で映像(動画)や音声を扱うためのフレームワークです。 DirectShowを使うと、様々なフォーマットの映像や音声を簡単にキャプチャ/再生/保存できます。
このページは初心者向けDirectShow入門講座を目指しています。 DirectShowはCOM(Component Object Model)をベースに作られていますが、ここではCOMを知らない人でもDirectShowプログラミングをできるような説明を目指したいと考えています。
DirectXの準備
注意!DirectShowは2005年4月にDirectXからPlatformSDKへ移っています。 DirectShowを使いたい場合にはDirectXではなく、PlatformSDKをインストールしましょう。 Platform SDKをインストールした場合には、以下の設定に関する説明は読み飛ばしてください。
DirectShowは、Microsoft DirectXのサブセットです。 そのため、DirectShowを使ってプログラミングを行なうには、まず、DirectXをインストールしなくてはなりません。 WindowsXPであれば、DirectXは最初から含まれているので、DirectX自体をインストールする必要はありません。 それ以外のシステムでは、必要に応じてDirectX Runtimeのインストールが必要です。 DirectX Runtimeはマイクロソフトのサイトからダウンロードできます。
DirectXの機能を使ってプログラミングを行なうには、DirectX SDKをダウンロードしなくてはなりません。 DirectX SDKは、マイクロソフトのMSDNダウンロードサイトからダウンロードできます。 DirectX SDKの中にはサンプルコードも入っているので、必要に応じて見て下さい。
これ以降の説明は、DirectX SDKを「C:\DXSDK\」という場所にインストールした事を想定して行います。 DirectX SDKのインストール先は環境によって異なるので、必要に応じて置き換えて考えてください。
DirectShowを使ってプログラムを書くには、dshow.hというヘッダファイルをincludeしなくてはなりません。
#include <dshow.h>
次に、リンカの設定を行わなくてはなりません。 DirectShowを使ったプログラムをコンパイルするには、VisualStudioの「構成プロパティ > リンカ > 入力 > 追加する依存関係」に「strmiids.lib」という項目を追加して下さい。
DirectShow基本
再生ウィンドウのタイトルを変更する(IVideoWindow)
IMediaEventEx::SetNotifyWindowを使った再生終了通知
DVDを再生する
フレームキャプチャ
SampleGrabberを使って動画の最初のフレームを取得する
ビデオキャプチャ
VMR9 (Video Mixing Renderer 9)
インターフェース
関連情報