2011-06-27 8 views
3

私はC#DirectShow.Netアプリケーションを持っています。他のコンピュータでリリースモードで実行しているかどうかをテストしたいと思います。私のプログラムがwindows sdkとそれが提供するフィルタを組み込んでいない他のマシン上でも動作するようにするにはどうすればいいですか?他のコンピュータでDirectShow.netアプリケーションを実行する方法

dirctshow dllなどを含める必要がありますが、フィルタ自体については何ができますか?

更新: 私はそれを実行する仮想マシンを持っていますが、さらにどのように特定のDirectXフィルタがコンピュータ上にあるかどうかを確認することができますし、それがisntならば、dllをつかんでコードからコンピュータに登録しますか?

編集: 私はDLLを登録した後、自分のプログラムを実行します。それは実行されません、私はグラフスタジオをつかむと私はgraphstudioに私のプログラムのグラフを添付し、フィルタのいずれも接続されていないと私はそれらを手動で接続しようとすると、彼らは接続を拒否する。

EDIT2:

Can you post more details about the scenario you are having problems with? 

私はVirtualboxのVMに私の窓に7 32ビットマシンで動作します私のアプリケーションを実行しています。バーチャルボックスはストリーミング目的で私のUSBデバイスにアクセスすることを許可しないので、私はそれに依存するコードをコメントアウトしました。私がそれを実行すると、フィルターは接続されません。私はいくつかのテストを行い、ソースなしでグラフを作り直そうとしましたが、実際に問題が発生する可能性があるので、一緒に接続することはありません。現時点で

OS version? 

は、私が使用している32ビットXPのVirtualBox VM

which filters you are using? 

を実行しています

Source -> Smart tee (capture) -> GMFBridgeSinkFilter 
      Smart tee (preview) -> AVI Decompressor -> Video REnderer 

GMFBridgeSource -> ffdshow video encoder -> avi mux -> File writer 

(ワット)riterいくつかの奇妙な理由で、小文字にする必要があります。 devのマシンは(ワット)riterを持っており、(W)riter

Which filters do you have there that you are not using? 

あなたは、私がコードに入れ、に接続するわけではないOSまたはフィルタに標準装備されている意味しますか?

You could also try with the original GraphEdit instead of GraphStudio, and you could debug your application remotely and see where it is failing exactly. 

Grapheditは完全なウィンドウズsdkにのみ付属しています。ここで

+1

IMHO、最良の方法は、仮想マシンを使用することです。あなたが期待したパフォーマンスを得ることはできないかもしれませんが、異なる設定とOSバージョンを試すことができます。 – HiperiX

+1

SDKはフィルタをインストールしますか?それが私にとってのニュースです。実際にこれを試しましたか? –

+0

は何を試しましたか?私は7つの異なるウィンドウsdkのバージョンで私の開発マシンと私はdirectshowフィルタを組み込んだアプリケーションを作成しました。アプリケーションを自分の仮想マシンに移動し、対応するDLL(directshowlib、gmfbridge、ffdshowなど)を登録した後に、アプリケーションを移動します。私はアプリケーションを実行しますが、実行されません。私はプログラムを表示するためにgraphstudioをダウンロードし、フィルタのどれも接続されておらず、グラフスタジオでも接続されません。 – Grant

答えて

1

は、あなたが行うことができ、いくつかの検証のリストです:

  • @HiperiXが述べたように、おそらくいくつかの 仮想化ソフトウェアを使用して、クリーンな システムでアプリケーションをテストすることをお勧め です。 がWin XPをサポートするために必要な場合は、 のWindows Vista 以降でのみ利用可能なDirectShowフィルタがいくつかありますので、それをテストするには良い アイデアになるでしょう。
  • 必要なフィルタについては、 の一部がWindowsによって提供される場合があります。 そうでないものは を提供し、インストール中に ターゲットシステムに登録する必要があります。 アプリケーションの処理。この場合、 インストールプロジェクトを視覚的な スタジオから作成して、そこにすべての 依存関係のDLLを添付することをお勧めします。マニュアル をインストールするには、 フィルタをアプリケーションのフォルダ にコピーし、コマンドラインからregsvr32 filtername.axを使用して登録します。
  • 一つの詳細あなたは64ビットのWindowsの のバージョンとの互換性があるあなたがいない 使用フィルタは64ビットアプリケーションから32ビットネイティブ モード用に構築することができるので、の 世話をする必要があります。 アプリケーションが .NETで開発され、それがAnyCPU モードを使用して構築された場合は、.NETのJITは、それから64ビット コードを作成し、あなたの32ビットのDLLが ロードに失敗します。だからもしあなたが の32ビットDLLを使用しているのなら、 .netアプリケーションを構築することをお勧めします。 CPUタイプ= X86。 Visual Studioでこのモードを に設定することができます。
  • フィルタがどのように作成されたかによって、 が作成されました。 Visual c++ redistributable filesもインストールする必要があります。この発言について

私はいくつかのテストを行なったし、ソースなしでグラフを再作成しようとしましたが、彼らは文句を言わない一緒に 問題は確かにある

を接続して、あなたが作成することはできません。グラフ にはソースフィルタがなく、 デスティネーションフィルタがありません。ソースフィルタ は、一般的に、あなたが仮想化されたOS の内側にあなたの USBポートへの直接アクセスを提供する必要が 仮想システムでこれ アプリケーションをテストするために、コンテンツ等 形式、圧縮、色空間など、 を決定します実際の システムと同様に、 キャプチャデバイス用のドライバをインストールしてください。そうしないと、DirectShowはデバイスを検出しません。

+0

コードからregsvr32を実行する方法はありますか?私は手動インストールを行うことができますが、誰かがそれを保持し、何をして不平を言うのか分からないと確信しています – Grant

+0

@Grant私の編集した答えをもっと見るには – yms

+0

@yms ok、私の編集に関する質問は知っていますか? – Grant

関連する問題