アットウィキロゴ
ノート > DirectShow 入門 > DirectShowの概要

DirectShow の概要について説明します。

手引きのようなリンク集

下記の技術資料が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とは?
Component Object Model - Wikipedia」より抜粋

  • マイクロソフト が提唱するソフトウェアの再利用を目的とした技術
    • ソフトウェア間での通信に用いられる

  • COMを使用して開発されたソフトウェアをCOMコンポーネントと呼ぶ
    • COMコンポーネントは、特定の開発言語に依存せず、C言語やJavaなど、様々な言語により開発を行うことができる
    • COMコンポーネントは、他ソフトウェアと通信するためのインタフェースを有している
    • アプリケーションソフトウェアは、公開されているインタフェースを介してCOMコンポーネントと通信をし、それらを組み合わせることでサービスを提供する
      • オブジェクトの異なるインタフェース間のキャストはQueryInterface関数で行う

  • COMは.NET Frameworkに置き換えられてゆくものと考えられている

DirectShow プログラミングで使われる用語について


GraphEdit を使ってみよう

ひとまず、DirectShow ではどのようにプログラミングを行うのか流れを理解するために GraphEdit というユーティリティを使ってみる

C:\Extras\DirectShow\Utilities\graphedt.exe
からGraphEdit を起動する


◆適当にフィルタ グラフを作ってみる
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