DirectShow の概要について説明します。
手引きのようなリンク集
下記の技術資料がDirectShowの勉強の助けになるかもしれません。
DirectShow とは
- Microsoft DirectShow は、Microsoft Windows プラットフォームにおけるメディア ストリーミングのアーキテクチャである
- DirectShow は、マルチメディア ストリームの高品質なキャプチャと再生を実現する
- ASF (Advanced Systems Format)、MPWG (Motion Picture Experts Group)、AVI (Audio-Video Interleaved)、MP3 (MPEG Audio Layer-3)、WAV サウンド ファイルなど様々なフォーマットに対応している
- DirectShow では、メディア再生、フォーマット変換、キャプチャの作業を簡単に行える。
- DirectShow を使って作成できるアプリケーションの種類の例として、下記のようなものがある
- DVD プレーヤ
- ビデオ編集アプリケーション
- AVI から ASF へのコンバータ
- MP3 プレーヤ
- デジタル ビデオ キャプチャ アプリケーション
- DirectShow は COM (Component Object Model) に基づいている
- ほとんどのアプリケーションでは、独自の COM オブジェクトを実装する必要はない
- マイクロソフト が提唱するソフトウェアの再利用を目的とした技術
- COMを使用して開発されたソフトウェアをCOMコンポーネントと呼ぶ
- COMコンポーネントは、特定の開発言語に依存せず、C言語やJavaなど、様々な言語により開発を行うことができる
- COMコンポーネントは、他ソフトウェアと通信するためのインタフェースを有している
- アプリケーションソフトウェアは、公開されているインタフェースを介してCOMコンポーネントと通信をし、それらを組み合わせることでサービスを提供する
- オブジェクトの異なるインタフェース間のキャストはQueryInterface関数で行う
- COMは.NET Frameworkに置き換えられてゆくものと考えられている
DirectShow プログラミングで使われる用語について
GraphEdit を使ってみよう
ひとまず、DirectShow ではどのようにプログラミングを行うのか流れを理解するために GraphEdit というユーティリティを使ってみる
C:\Extras\DirectShow\Utilities\graphedt.exe
からGraphEdit を起動する
1.[File] メニューの [Render Media File] をクリック
- GraphEdit の [Open File] ダイアログ ボックスが表示される
2.マルチメディア ファイルを選択して [Open] をクリックする
- 選択したファイルを再生するためのフィルタ グラフが GraphEdit で作成される
GraphEdit 自体について詳しくはこちらを参照するといいかも
フィルタ
- DirectShow を構成する要素は、"フィルタ" と呼ばれるソフトウェア コンポーネント
- フィルタは、マルチメディア ストリームに対して何らかの操作を実行するソフトウェア コンポーネント
たとえば、DirectShow のフィルタでは次のような操作を実行できる
- ファイルを読み取る
- ビデオ キャプチャ デバイスからビデオを取得する
- MPEG-1 ビデオなどのさまざまなストリーム フォーマットをデコードする
- グラフィック カードまたはサウンド カードにデータを渡す
フィルタグラフ
- フィルタチェーンにより一つ一つのフィルタを繋いだフィルタの集合
フィルタグラフマネージャ
- アプリケーションで、データの流れのすべてを管理する必要はない
- アプリケーションの代わりに、フィルタ グラフ マネージャと呼ばれる上位レベルのコンポーネントがフィルタを制御する
- アプリケーションでは、"Run" (グラフの開始から終わりまでデータを移動する) や "Stop" (データの流れを停止する) などの上位レベルの API 呼び出しを行う
- ストリーム操作をより細かく制御する必要がある場合は、COM インターフェイスを通してフィルタに直接アクセスできる
- フィルタ グラフ マネージャはアプリケーションにイベント通知を渡す。
- フィルタグラフマネージャは、フィルタを接続してフィルタ グラフを作成するためのメソッドをアプリケーションに提供する
DirectShow アプリケーション作成の手順
大まかに次の3つの手順で作成する
1.フィルタ グラフ マネージャのインスタンスを作成する
2.フィルタ グラフ マネージャを使ってフィルタ グラフを作成する
- グラフに含まれるフィルタは、アプリケーションによって異なる
3.フィルタ グラフ マネージャを使って、フィルタグラフ、およびフィルタを通過するストリーム データを制御する
- この処理が行われている間、アプリケーションはフィルタ グラフ マネージャからのイベントにも応答する
最終更新:2010年05月16日 16:12