2

我在网页中使用 Windows Media Player。我安装了版本 11,所以这是我现在正在测试的版本。播放器嵌入在带有以下 HTML 的页面中:

<OBJECT id='MS_mediaPlayer' width="400" height="45" classid='CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6' 
  codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'
  standby='Loading Microsoft Windows Media Player components...' type='application/x-oleobject'>
  <param name='autoStart' value="false">
  <param name='uiMode' value="invisible">
  <param name='loop' value="false">
</OBJECT>

我在 JavaScript 中调用:

  MS_mediaPlayer.URL = "SomeAudioFile.mp3"
  MS_mediaPlayer.controls.play();

当我查看Fiddler时,我可以看到播放器实际上下载了两次“SomeAudioFile.mp3”。有什么设置我错了吗?我试图将“autoPlay”设置为 true 并避免调用“play()”。得到相同的结果 - 两次下载。

更新: 第一个请求的用户代理是“Windows-Media-Player/11.0.5721.5268”。第二个有“Mozilla/4.0(兼容;MSIE 7.0;Windows NT 5.1;GTB6;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET CLR 3.0.04506.30;.NET CLR 3.0.04506.648;.NET CLR 3.5.21022;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729)”。看起来浏览器第二次运行相同的请求。不知道为什么

有任何想法吗?

更新(4/1/10):
仍然没有解决方案。

  • 我彻底调试了 JS,只有一个调用来MediaPlayer.URL='.....'设置音频文件。没有其他东西会触发媒体播放器加载文件,并且页面上没有其他地方引用音频文件。
  • 另一个有趣的事实是,当我在开发 Web 服务器上本地运行浏览器时,这不会发生(音频的双重加载)。但是对同一 Web 服务器的其他远程请求会产生双重音频加载。
  • 我相信我消除了与特定 IE 版本或媒体播放器版本的任何关联。IE6-8 和 WM9-12 会发生这种情况
4

1 回答 1

1

您必须仔细检查请求。有时,您会看到媒体播放器发出两个请求,因为它们使用的是 HTTP Range 请求(而不是请求整个文件)。查找“范围”请求标头。还要检查以确保两个请求都没有使用 HEAD 方法,因为这只是检索服务器的响应标头。

此外,如果任何一个会话在 Fiddler 会话列表中显示为已中止(“请勿输入图标,红色圆圈带有一条线”),则表示客户端在中间关闭了请求。如果组件开始下载、中止下载然后重新启动,则可能会发生这种情况。为什么它会那样做,我不确定。

您可以尝试查看使用 WMP 的其他站点,看看您是否看到对它们的两个请求。

于 2009-09-04T15:11:00.933 回答