0

C# WebBrowser コントロールに Windows Media オブジェクトがあります。基本的に .AVI ファイルがあり、ファイルにはカスタム ヘッダーが付けられています。これらを再生するために、カスタム DirectShow フィルターがあります。

ビデオは、Windows Media Player 内、および Windows 7 の IE9 と Windows XP の IE8 の Windows Media Player オブジェクト内で再生できます。

ビデオの再生は、XP の C# 埋め込み WebBrowser コントロール内でも成功しますが、Windows 7 では成功しません。Windows 7 の C# WebBrowser コントロールで Windows Media Player オブジェクトを使用しようとすると、次のメッセージが表示されます。プレーヤーがファイル タイプをサポートしていないか、ファイルの圧縮に使用されたコーデックをサポートしていない可能性があります。」

毎回まったく同じコードなので、Windows 7、WebBrowser コントロール、およびカスタム DirectShow フィルターの特定の組み合わせがビデオの再生に失敗する理由を知っている人はいますか?

4

2 に答える 2

1

問題は、DirectShowフィルターがx86DLLとしてのみ構築されていることでした。何らかの理由で、C#のWebBrowserコントロールはデフォルトで64ビットIEバックエンドを使用します。これは、WMPオブジェクトが64ビットバージョンのフィルターのレジストリエントリのみを調べたため、そのバージョンは作成したx86DLLでは機能しません。

Visual Studioでビルド構成を設定して、WebBrowserコントロールを実行するアプリケーションの「任意のCPU」ではなく「x86」CPUをターゲットにすることで、64ビットバージョンのWindowsでも、WebBrowserコントロールが32を使用するようにすることができます。 -ビットバックエンド。

64ビットビルドが利用可能になる前に、かなりの数の人々がFlashで同じ問題を抱えていたようです。

于 2011-09-30T07:43:18.447 に答える
1

何が起こっているのかを知るには、さらにデバッグを行う必要があります。まず、再生がDirectShowフィルターを取得するかどうか、どのようなメソッドが呼び出されるか、エラーが発生するかどうか、再生が正常に行われる他のシステムとどのように異なるかを確認する必要があります。

于 2011-09-29T08:35:48.080 に答える