我在网页中使用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):
仍然没有解决方案
MediaPlayer.URL='.....'
来设置音频文件。没有其他任何东西触发媒体播放器加载文件,并且没有其他地方引用页面上的音频文件。 答案 0 :(得分:1)
您必须仔细检查请求。有时,您会看到媒体播放器发出两个请求,因为它们正在使用HTTP范围请求(而不是请求整个文件)。查找“范围”请求标头。还要检查以确保这两个请求都不使用HEAD方法,因为它只是检索服务器的响应头。
此外,如果其中一个会话在Fiddler会话列表中显示为已中止(“不输入图标,红色圆圈带有一条直通线”),则表示客户端在中间关闭了请求。如果组件开始下载,中止,然后重新启动它,可能会发生这种情况。为什么会这样做,我不确定。
您可以尝试查看使用WMP的其他网站,看看是否有两个请求。
答案 1 :(得分:0)
请参阅本文的底部,其中解释了第一个请求是Windows Media Player“嗅探”以确定文件类型,而第二个请求是实际请求。
还在研究如何将这一部分信息与不暴露文件名的通用处理程序一起使用....