使用AxWindowsMediaPlayer以编程方式从网络加载视频文件

时间:2014-11-17 22:31:21

标签: c# video httpserver axwindowsmediaplayer

操作系统: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无法找到该文件。如果您尝试播放,刻录或同步图书馆中的项目,该项目可能会指向已移动,重命名或删除的文件。“

但是,如果我将同一个网址插入浏览器窗口,该文件会立即加载,播放视频没问题。另外,如果我将testVideo1.mp4复制到本地客户端计算机上的工作目录中,并尝试使用以下代码加载文件:

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

嗯,该代码有效,视频播放。所以我知道这不是编解码器问题,因为如果文件是本地的,可以从控件播放视频。我知道使用错误的网址不是问题,因为它可以在浏览器中使用。

是否Windows Media Player不发送http请求,因此http服务器无法处理它并将其转发到正确的文件夹?有没有办法通过AxWindowsMediaPlayer完成加载远程文件?我宁愿不必先将文件下载到本地文件夹。

1 个答案:

答案 0 :(得分:0)

不要将URL传递给网站,而是让您的程序从HTTP网站下载,然后将其保存在临时本地文件中。将该本地文件的路径传递给AxWindowsMediaPlayer。