HTML 5video – video.buffered.length在IE 10/11上返回0

我正在监视HTML5video播放器的下载进度。 Windows 8 / 8.1的IE 10/11正在给我带来麻烦。 这里是我的代码和之后的问题的解释:

<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <video id="myVideo" width="640" height="360" controls> <source src="pathto.mp4" type='video/mp4; codecs="avc1.42E01E,mp4a.40.2"' /> </video> <script type="text/javascript"> var video= $('#myVideo')[0]; var videoJ= $('#myVideo'); function doUpdateProgress(){ console.log(video.buffered.length); } videoJ.on('progress', doUpdateProgress); videoJ.on('canplay', doUpdateProgress); </script> 

问题是我的服务器上的URL url1to.mp4 video.buffered.length在IE 10/11中始终返回0(IE9返回未定义)。 它在我testing过的所有其他浏览器(包括Chrome和FF)上都能正常工作。

如果我从共享服务器url2to.mp4中input一个URL,那么即使在IE10 / 11上,它也会返回1(如果你不在时间线上查找的话)。 mp4文件是完全相同的麻烦服务器,因此我知道它不是来自文件格式问题。 我尝试了另一个格式良好的mp4(我从两个服务器上托pipe的videojs的样本),也导致了这个问题。

服务器端 – 我的mime /types似乎没问题 – 我的服务器上启用了部分支持(字节范围)内容(Ubuntu服务器12.04.3 LTS上的Apache 2.2.22)。 虽然我也许认为这可能与HTTP字节范围支持客户端或服务器端的调整有关。

因为它只发生在IE9 / 10/11上,所以我没有进一步的调查。 我没有问msdn的问题,但无济于事。

有人可以带来一些这样的灯光?

编辑 :删除问题的真实videourl。

谢谢

好的,我最终用2.2.22到2.4.9的完整安装Apache来修复它。 我这次从源代码编译,而不是从Ubuntu服务器12.04.3 LTS采取默认包。 我不确定这个问题的确切原因,但我认为它涉及HTTP范围请求和响应IE 9/10/11和Apache的某些版本/设置之间不兼容。

总结我的疑难解答步骤对于任何人可能有类似的问题:

  • 检查你的服务器适当的哑剧/类型
  • 通配符CORS (msdn建议)
  • 检查您的网络服务器支持范围请求/ 206部分内容 。 我用CURL来检查我的服务器上,它工作正常。 然而,从这个页面的示例PHP代码似乎表明,否则我认为是什么混淆的IE(范围标题正确地返回,但响应代码是200而不是CURL的206)。
  • 有时似乎你需要从源代码(并从官方网站的可信赖的来源),而不是使用默认的软件包从操作系统。 即使在开始时可能需要一个步骤(尤其是如果您需要修复依赖关系),有时还需要更新 – 最终的结果可能值得您付出努力(我知道这里有优点和缺点)。
  • 检查您的MP4文件格式:尝试从videojs举办示例 ,看看它是否效果更好。 您可能需要重新包装/重新转码 。