IE9无法显示mp4视频?

4
IE9让我对其对HTML5视频的支持感到困惑。据我所知,它支持H.264编解码器,因此支持以.mp4结尾的任何文件。问题在于,它无法播放带有.mp4扩展名的视频文件...更不可思议的是,如果我在本地测试,IE9会播放mp4视频,但它不会在服务器上播放,这也与MIME类型无关,我已将以下MIME类型添加到服务器:.mp4-video.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使用Flash视频来修复不支持HTML视频的浏览器的问题(而不是默认情况下这样做,IE9似乎只显示一个空框,没有错误消息,也没有其他任何信息)。不幸的是,这个解决方案非常可怕,我几乎感到羞愧因为写了它。
有人知道可能是什么原因导致这种情况吗?或者我该如何解决?
编辑:不确定这是否有任何重要意义,但我使用http://www.freemake.com/free_video_converter/来将文件转换为正确的格式。
3个回答

4
我遇到了同样的问题。当你在本地运行HTML文件时,IE9可以播放视频,但是将其放到服务器上后就无法正常工作。这个问题一定与视频文件有关。虽然它在本地工作正常,但你会认为它不可能是问题所在。但事实却是如此。当我从VideoJS网站(http://vjs.zencdn.net/v/oceans.mp4)下载示例视频文件并将其放入我的设置中时,IE9可以很好地播放它。因此,在播放远程文件时,IE9似乎更加挑剔。
当我弄清楚需要哪些神奇参数使IE9满意时,我会更新这个答案。
更新:好的,我想我已经找到了解决方法。我花了一些时间比较了能够正常工作的MP4文件和不能正常工作的文件。前者中,随机访问索引(“stss”原子)位于文件开头附近。而后者则位于文件末尾。两个位置都是合法的,但显然,当IE9从网络下载文件时,它太愚蠢了,无法在文件末尾查找它。
解决方案是使用ffmpeg附带的工具qt-faststart将随机访问索引移至MP4文件开头。
注意:我尝试了另一个工具QTIndexSwapper。它似乎会导致文件损坏。

谢谢你的回答,尽管这是一个老问题,我从未找到过一个合适的解决方案!不幸的是,这个问题对我来说已经不再相关了(这段代码所在的网站已经发生了重大变化),所以我无法测试你的答案,但如果其他人发现这个有用,请在下面留言,我很乐意将其标记为被接受的答案。 - Sean

1

我仍然完全不知道是什么原因导致了这个问题。我花了数小时挖掘和研究,最终请别人在他们的IE9版本中尝试,由于某种原因,它在他们的电脑上工作,而不是我的。

我不太确定为什么,但我认为这可能是因为我的IE9版本出了一些问题(考虑到我花了那么多时间来解决这个问题,这真的很让人沮丧!)


1
我在 SO 的其他地方发布了相同的帖子,但我的 mp4 在任何人的 IE9 上都无法运行。我得出了相同的结论,即 IE9 是一个可怕的损坏浏览器,微软无能或不愿修复它。 - Rob
告诉我吧,我浪费了好几个小时来解决这个问题,这已经不是我第一次浪费时间在看似无法解决的IE bug上了…… - Sean

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接