最終更新:2015-06-02 (火) 15:35:38 (3252d)  

DirectShow
Top / DirectShow

DirectShowを使うと、アプリケーションで高品質なビデオやオーディオの再生とキャプチャを行うことができる。

  • DirectShowCOM(Component Object Model)をベースに作られている

http://msdn.microsoft.com/ja-jp/library/cc353899.aspx

MSDN

構造

DirectShowは、「フィルタ(Filter)」と呼ばれる部品をつなぎ合わせて「グラフ(Graph)」を作成し、Graphに対して再生や停止などの動作を行うという構造になっています。 WAVの例では、WAVファイルなどを表す箱がFilterです。 Filterをつなぎ合わせた全体がGraphです。

DirectShowフィルタ

DirectShow を構成する要素は、"フィルタ" と呼ばれるソフトウェア コンポーネントである。フィルタは、マルチメディア ストリームに対して何らかの操作を実行するソフトウェア コンポーネントである。たとえば、DirectShow のフィルタでは次のような操作を実行できる。

  • ファイルを読み取る
  • ビデオキャプチャデバイス?からビデオを取得する
  • MPEG-1 ビデオなどのさまざまなストリーム フォーマットをデコードする
  • グラフィック カードまたはサウンド カードにデータを渡す

種類

DirectShowは、様々なフィルタをつなぎ合わせることにより各種機能を実現しています。 Filterの種類は3種類あります。

Source Filter

  • キャプチャカード、ビデオデバイス、音源、ファイルなど

Transform Filter

  • ファイルフォーマットを理解する、フォーマット変換をする、何らかのエフェクトをかける、など

Renderer Filter

  • ディスプレイへの出力、音声の出力、外部デバイスへの出力、ファイルへの保存、ネットワークへの送出(RTPなど)、など

種類②

DirectShow には、Windows Driver Model (WDM) に基づくキャプチャおよびチューニング デバイスをサポートするフィルタと、従来の Video for Windows (VfW?) キャプチャ カードやオーディオ圧縮マネージャ (ACM) およびビデオ圧縮マネージャ (VCM) のインターフェイス用に作成された CODEC をサポートするフィルタが含まれている。

フィルタグラフマネージャ

Filter Graph Managerは、FilterとGraphの生成や接続などを行います。 ほとんどの基本的な動作は、Filter Graph Managerを基点として行われます。 アプリケーション作成者は、まず、Filter Graph Managerを生成することからはじめます。

DirectShow アプリケーションが実行しなければならないタスク

http://i.msdn.microsoft.com/Cc369398.fgm(ja-jp,MSDN.10).gif

ツール

主な用途

ドキュメント

DirectShow の概要

  • Microsoft® DirectShow® は、Microsoft Windows® プラットフォームにおけるメディア ストリーミングのアーキテクチャである。DirectShow は、マルチメディア ストリームの高品質なキャプチャと再生を実現する。サポートするフォーマットは広範囲にわたり、ASF (Advanced Systems Format)、MPEG (Motion Picture Experts Group)、AVI (Audio-Video Interleaved)、MP3 (MPEG Audio Layer-3)、WAV サウンド ファイルを含む。WDM (Windows Driver Model) デバイスおよび従来の Video for Windows デバイスを使ったキャプチャをサポートする。DirectShow は、他の DirectX テクノロジと統合されている。DirectShow は、ビデオおよびオーディオ アクセラレーション ハードウェアが使用可能な場合にはハードウェアを自動的に検出して使うが、アクセラレーション ハードウェアのないシステムもサポートしている。
  • DirectShow では、メディア再生、フォーマット変換、キャプチャの作業を簡単に行える。同時に、カスタム ソリューションを必要とするアプリケーションに対し、基盤となるストリーム制御アーキテクチャへのアクセスを提供する。新しいフォーマットまたはカスタム エフェクトをサポートする独自の DirectShow コンポーネントを作成することもできる。
  • DirectShow を使って作成できるアプリケーションの種類の例として、DVD プレーヤ、ビデオ編集アプリケーション、AVI から ASF へのコンバータ、MP3 プレーヤ、デジタル ビデオ キャプチャ アプリケーションがある。
  • DirectShowCOM (Component Object Model) に基づいている。DirectShow アプリケーションを作成するには、COM クライアント プログラミングを理解している必要がある。ほとんどのアプリケーションでは、独自の COM オブジェクトを実装する必要はない。DirectShow にはユーザーが必要とするコンポーネントが用意されている。ただし、独自のコンポーネントを作成して DirectShow を拡張する場合は、コンポーネントを COM オブジェクトとして実装する必要がある。

サポートされるフォーマット

ファイル タイプ

圧縮フォーマット

  • Windows Media Video?
  • ISO MPEG-4 video version 1.0
  • Microsoft MPEG-4 version 3
  • Sipro Labs ACELP?
  • Windows Media Audio?
  • MPEG Audio Layer-3 (MP3) (圧縮解除のみ)
  • デジタル ビデオ (DV)
  • MPEG-1
  • MJPEG
  • Cinepak?

オブジェクト

  • キャプチャグラフビルダ? - ビデオ キャプチャ グラフを作成する。
  • DVDグラフビルダ? - DVD 再生グラフを作成する。
  • フィルタグラフマネージャ - フィルタ グラフを作成および制御する。
  • フィルタマッパー? - 登録されているフィルタをレジストリ内で検索する。
  • メディアプロパティバッグ? - AVI ファイルの INFO および DISP チャンクを設定または取得する。
  • メモリアロケータ? - メディア サンプルのバッファを割り当てる。
  • システム基準クロック? - 基準クロックを実装する。
  • システムデバイス列挙子? - システムにインストールされているフィルタおよびハードウェア デバイスを列挙する。

メモ

2005年4月、DirectShowDirectX SDKからPlatform SDKへ移管された。そのときからDirectShowのサンプルもPlatform SDKに収録されているが、これをビルドするにはDirectX SDKが必要である。

参考