Help and Support

文書番号: 436361 - 最終更新日: 2004年9月27日 - リビジョン: 2.1

[Win32SDK].NET プログラムで DirectShow を使用する

この記事は、以前は次の ID で公開されていました: JP436361
すべて展開する | すべて折りたたむ

概要

この資料は、DirectX の DirectShow を .NET にてどのように使用するかについて説明したものです。

詳細

C# にて DirectShow のような COM コンポーネントを使用する際には、タイプライブラリからランタイム呼び出し可能ラッパー ( RCW ) を作成し、ビルドする際に RCW を参照する必要があります。

C# による DirectShow のプログラムは以下のように作成することが可能です。
[ Visual Studio.NET を使用する場合 ]
  1. Visual Studio.NET にて C# のコンソールアプリケーション用のプロジェクトを起動します。
  2. 参照設定を右クリックし、参照の追加を選択します。
  3. 「参照の追加」ウィンドウにて COM タブへ移動し、「Active Movie control type library」 を選択し、参照ボタンを押し、OK ボタンを押してください。参照設定のツリーに QuartzTypeLib が追加されます。
  4. DirectShow 用のコードを追加します。

    例えば、以下のようにしてください。
    	int i=0;
    	QuartzTypeLib.IMediaControl objMC;
    	QuartzTypeLib.IMediaEvent objEvent;
    	objMC=new QuartzTypeLib.FilgraphManagerClass();
    	objMC.RenderFile("F:\\Media\\highway.avi");
    	objMC.Run();
    	objEvent=(QuartzTypeLib.IMediaEvent)objMC;
    	objEvent.WaitForCompletion(-1, out i);
    
    本サンプルコードは "F:\Media\highway.avi" を再生するものです。
[ Visual Studio.NET の参照設定で自動的に作成しない場合 ]
また、Visual Studio.NET を使用しない際には 1.から 3.の代わりに以下のようにして参照設定を行います。
  1. tlbimp.exe をコマンドプロンプトにて起動します。引数に quartz.dll をフルパスで指定します。quartz.dll は Windows ディレクトリの System32 ディレクトリにあります。
  2. デフォルトの設定では QuartzTypeLib.dll が作成されます。このファイルをコンパイルする際に参照設定することで作成することができます。
[ コマンドプロンプトからビルドする際 ]
コマンドプロンプト上からビルドする際には以下のようにビルドすることができます。
  1. メニューから 「Visual Studio .NET」→「Visual Studio .NET ツール」→ 「Visual Studio .NET コマンド プロンプト」を起動します。
  2. プログラムを作成するディレクトリへ移動し、上記手順に従って tlbimp.exe を使用し、RCW を作成してください。ここでは QuartzTypeLib.dll が作成されたものとします。
  3. C# のコードを作成します。例えば以下のようなコードを作成し、ファイル名を dshow.cs としたとします。
    using System;
    
    namespace UsingDirectShow
    {
    	class DShow
    	{
    		[STAThread]
    		public static void Main()
    		{
    			int i=0;
    			QuartzTypeLib.IMediaControl objMC;
    			QuartzTypeLib.IMediaEvent objEvent;
    			try
    			{
    				objMC=new QuartzTypeLib.FilgraphManagerClass();
    				objMC.RenderFile("F:\\Media\\highway.avi");
    				objMC.Run();
    				objEvent=(QuartzTypeLib.IMediaEvent)objMC;
    				objEvent.WaitForCompletion(-1, out i);
    				Console.WriteLine(i);
    			}
    			catch(Exception ex)
    			{
    				Console.WriteLine(ex.ToString());
    			}
    		}
    	}
    }
    本サンプルコードは "F:\Media\highway.avi" を再生するものです。
  4. コマンドプロンプトにて以下のコマンドを実行し、ビルドします。
    csc dshow.cs /r:QuartzTypeLib.dll

関連情報

436360? (http://support.microsoft.com/kb/436360/JA/ ) : DirectShow に関するサポート技術情報

この資料は以下の製品について記述したものです。
  • Microsoft DirectX 8.1
  • Microsoft DirectX 8.0
キーワード:?
directshow directx dotnet dshow dx8 dx9 net kbtshoot KB436361
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
Retired KB Articleサポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。