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基本

GraphEditを使う

エラー値の意味を知る

MPEGファイルを再生する(RenderFile)

映像再生が終るまで待つ

再生ウィンドウのタイトルを変更する(IVideoWindow)

フルスクリーン表示(IVideoWindow)

自前ウィンドウに表示する(IVideoWindow)

IMediaEventEx::SetNotifyWindowを使った再生終了通知

MPEGファイルを再生する(ダウンロード再生)

ビデオの幅と高さを取得する

再生速度を変える

再生時間を取得する

音量とバランスを変える

DVDを再生する

DVDを再生する

DVDを再生する(MFC)

DVDの情報を取得する

DVDタイトルのチャプター数を取得する

フレームキャプチャ

IBasicVideoを使って静止画を取得する

SampleGrabberを使って静止画を取得する

Bitmapfileフォーマット

SampleGrabberを使って複数の静止画を取得する

SampleGrabberを使って動画の最初のフレームを取得する

ビデオキャプチャ

ビデオ入力デバイスからの映像を表示する

ビデオ入力デバイスからの映像をAVIに保存する

ビデオ入力デバイス名を取得する

ビデオ入力デバイス情報を取得する

ビデオ入力デバイスを選択してから再生する

キャプチャデバイス+SampleGrabber

キャプチャデバイス+SampleGrabber (2)

複数のアナログ入力があるデバイスを扱う

複数のアナログ入力があるデバイスを扱う(2)

複数のアナログ入力があるデバイスを扱う(3)

TVチューナーを制御する

TVチューナーを制御する(2)

VMR9 (Video Mixing Renderer 9)

VMR9を利用する

インターフェース

IMediaControl

IMediaEvent

IMediaEventEx

IBasicAudio

関連情報

参考文献

Visual Studio