4

IE9 对 HTML5 视频的支持让我发疯,据我所知,它支持 H.264 编解码器,因此任何带有 .mp4 扩展名的文件。

问题是,它没有播放扩展名为 .mp4 的视频文件。. .

更不寻常的是,如果我在本地测试,IE9会播放mp4视频,只是在服务器上不播放,这也与MIME类型无关,我在服务器中添加了以下MIME类型:

.mp4 - 视频.mp4

在 IE 开发人员工具的网络面板中,它的类型为“video/mp4”,唯一不寻常的是网络面板显示 IE 正在请求它 3 次(我不知道为什么会这样)

我已经走到了尽头,以至于我实际上编写了下面的代码来尝试修复它(我真的很讨厌在实时站点上使用它,这太可怕了):

    <!--[if !IE 9]><!-->
         <video controls="controls">
<!--<![endif]-->

<!-- This is a horrible way to do this, but I cannot figure out for the life of me why IE9 won't play this video :( -->
<!--[if !IE 9]><!-->
    <source src="video.ogv" type='video/ogg; codecs="theora, vorbis"'/>
    <source src="video.mp4" type="video/mp4">
<!--<![endif]-->

<!-- If HTML5 video is not supported, the following Flash video will play -->
<p>flash video stuff is here</p>

<!--[if !IE 9]><!-->
        </video>
<!--<![endif]-->

这通过强制 IE9 对不支持 HTML 视频的浏览器使用 flash 视频来修复它(而不是默认情况下这样做,IE9 似乎只是显示一个空白框,没有错误消息,没有任何东西)。不幸的是,这个解决方案太可怕了,我几乎羞于写它。

有人知道是什么原因造成的吗?或者我该如何解决?

编辑:不确定这是否有任何意义,但我使用http://www.freemake.com/free_video_converter/将文件转换为正确的格式

4

3 回答 3

4

我遇到了同样的问题。当您在本地运行 HTML 文件时,IE9 会播放视频,但是当您将其放在服务器上时,它就会停止工作。问题一定与视频文件有关。你会认为它不可能,因为它在本地工作。但情况似乎如此。当我在 VideoJS 网站 ( http://vjs.zencdn.net/v/oceans.mp4 ) 下载示例视频文件并将其放入我自己的设置中时,IE9 可以正常播放。所以IE9在播放远程文件时会更加挑剔。

当我弄清楚让 IE9 快乐所需的魔法参数时,我会更新这个答案。

更新:好的,我想我想通了。我花了一些时间比较 MP4 文件的工作与不工作的文件。在前者中,随机访问索引(“stss”原子)位于文件开头附近。在后者中,它位于文件的末尾。这两个位置都是合法的,但显然 IE9 太愚蠢了,无法在从网络下载文件时在文件末尾查找它。

解决方案是使用 ffmpeg 自带的工具将随机访问索引移动到 MP4 文件的开头:qt-faststart.

注意:我尝试了另一个工具:QTIndexSwapper。它似乎使文件损坏。

于 2013-05-26T17:19:42.117 回答
1

我仍然完全不知道是什么原因造成的,我花了几个小时挖掘和挖掘,最后请其他人尝试他们的 IE9 版本,由于某种原因,它在他们的计算机上运行,​​而不是我的计算机。

我不完全确定为什么,我只是把它归结为我的 IE9 版本以某种方式被破坏(考虑到我花了多少时间试图解决这个问题,这令人沮丧!)

于 2012-09-10T12:39:18.000 回答
0

stackoverflow上有一个答案。

也许这对你有用:

HTML5 - mp4 视频无法在 IE9 中播放

我希望这有帮助...

于 2012-09-06T13:08:21.987 回答