为什么有些客户不能从IIS播放一些html5音频?

时间:2013-11-27 16:27:39

标签: html5 iis audio mp3

我们运行一个IIS 7服务器,托管一个播放10-20秒短片的网站。我们为玩家使用的代码是:

<audio autoplay="autoplay" controls id="audio_player" preload="auto"  >
<source id="mp3_src" src="path_to_mp3/clip.mp3" type="audio/mpeg">
<source id="ogg_src" src="path_to_ogg/clip.ogg" type="audio/ogg">
<!-- BEGIN fallback -->  
<object type="application/x-shockwave-flash" data="/flash_mp3_player.swf" width="340" height="50">
<param name="movie" value="/flash_mp3_player.swf" />
<param name="wmode" value="transparent" />
<param name="flashvars" value="filename=path_to_mp3/clip.mp3;autostart=true" />
<embed href="html5-mp3player.swf" width="340" height="50" name="player" align="" type="application/x-shockwave-flash" flashvars="filename=path_to_mp3/clip.mp3;autostart=true"/>
</object>
<!-- END fallback -->  

对于大多数用户来说,这不是问题。我们每隔几分钟就会播放和播放大约50个片段,几乎每个主要平台上都有用户(Win XP-8,OS X 10.4 +,iOS 5 +,Android 2+等)。

最近,随着我们的工作负荷增加,我们看到很多人说剪辑没有为他们播放。大多数时候我们没有听到任何特定的错误,但是当我们这样做时,几乎总是IE9 +报告“错误:未知的文件类型或无效的文件路径”。

此时,我们感到难过。 IIS盒子并没有在物理上挣扎,而且这个站点是唯一的一个。以下是可能有用的环境变量列表。

  • 带有IIS 7的Windows Server 2008
  • 正确配置了MIME类型
  • MP3剪辑存在于虚拟目录中,尽管有些是在服务器本身上。两个地点都无法播放
  • 在无法为客户端播放期间,IIS没有记录任何错误
  • 这种情况在白天和黑夜的任何时候都会发生
  • 这似乎随机发生了超过200,000个不同的文件
  • 所有MP3均以128kbps @ 44100
  • 编码
  • HTML5和Flash部分都容易出现故障
  • 通常,请求是206,尽管看到200个回复
  • 并不罕见
  • 为网站设置了1个应用程序池,并配置为仅使用1个工作进程
  • 我们无法重现错误,无论是在本网络服务的网络上还是之外
  • 通常,用户可以刷新(多次)并实际通过
  • 加载和播放剪辑

非常感谢任何帮助或正确方向的观点。

谢谢!

1 个答案:

答案 0 :(得分:0)

我们已经做了几件事来尝试解决这个问题。我们将部分媒体移动到aws s3存储桶并重构了一些代码。

基本上,我们通过ID和标记引用向音频元素添加侦听器,并且这些侦听器都是从两个不同的位置调用的。在我们整合代码以保留在外部js文件中,并将所有侦听器设置在从ajax页面调用的函数中之后,事情似乎开始变得有效。

我们仍然看到一些(很少)IE9 +的问题,但有一个错误监听器监视这个。每次用户报告错误时,错误监听器都会报告状态代码4(MEDIA_ERR_SRC_NOT_SUPPORTED),这是奇数。

所以,问题大多是固定的。现在要跟踪IE的错误代码4(即使所有文件最终将通过它播放)。也许它与安装在负责MP3播放的机器上的媒体播放器有关?