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 を介してリモート ファイルをロードする方法はありますか? 最初にファイルをローカル フォルダーにダウンロードする必要はありません。