1

操作系统: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 传递给网站,而是让您的程序从 HTTP 网站下载它,然后将其保存在临时本地文件中。将该本地文件的路径传递给您的 AxWindowsMediaPlayer。

于 2014-12-24T08:50:50.443 回答