1

OS: Windows 8.1
アプリ: Windows Media Player 12
IDE: Visual Studio 2012

別のマシン上のサーバー アプリケーションに接続する C# クライアント アプリケーションがあります。サーバー アプリは、リモート マシンでも実行されている http サーバーを介してホストされているビデオ ファイルの名前をクライアント アプリに提供します。次に、クライアントはそのリモート ビデオ ファイルをロードして再生する必要があります。したがって、私がオンラインで見つけたすべてのサンプル チュートリアルとは異なり、ユーザーは FileDialogBox を開いてファイルを選択することはできません。ファイル名は、実行時にコードを介して提供されます。

クライアント アプリケーションは Winforms を使用しているため、これを行うために AxWindowsMediaPlayer コントロールを使用しています。問題は、提供された URL からファイルをロードできないように見えることです。

たとえば、次のコード行があります。

this.axWindowsMediaPlayer.URL = "http://192.168.10.100:80/testVideo1.mp4";

それを実行すると、次のエラーが発生します。

「Windows Media Player はファイルを見つけられません。ライブラリにあるアイテムを再生、書き込み、または同期しようとしている場合、そのアイテムは、移動、名前変更、または削除されたファイルを指している可能性があります。

ただし、同じ URL をブラウザ ウィンドウに接続すると、ファイルがすぐに読み込まれ、問題なくビデオが再生されます。また、ローカル クライアント マシンの作業ディレクトリに testVideo1.mp4 をコピーし、次のようなコードでファイルを読み込もうとすると、次のようになります。

this.axWindowsMediaPlayer.URL = "testVideo1.mp4";

そのコードが機能し、ビデオが再生されます。ファイルがローカルにある場合、コントロールからビデオを再生できるため、コーデックの問題ではないことはわかっています。また、ブラウザから機能するため、間違った URL を使用しても問題ないことはわかっています。

Windows Media Player が http 要求を送信しないため、http サーバーがそれを処理して正しいフォルダーに転送できないということですか? AxWindowsMediaPlayer を介してリモート ファイルをロードする方法はありますか? 最初にファイルをローカル フォルダーにダウンロードする必要はありません。

4

1 に答える 1

0

URL を Web サイトに渡す代わりに、プログラムに HTTP Web サイトから URL をダウンロードさせ、ローカルの一時ファイルに保存します。そのローカル ファイルのパスを AxWindowsMediaPlayer に渡します。

于 2014-12-24T08:50:50.443 に答える