HTML5 – mp4video不能在IE9中播放

我有一个使用HTML5 <video>标签在IE9中播放的mp4video。 我向IIS 7添加了MIMEtypes,所以如果我浏览http://localhost/video.mp4它既可以在Chrome浏览器中使用,也可以在IE9中播放,但不能在HTML5中播放。 代码如下:

 <html> <body> <video src="video.mp4" width="400" height="300" preload controls> </video> </body> </html> 

有任何想法吗?

谢谢

更新:

尝试在Firefox 5.0中的相同的文件,也没有工作,只有Chrome浏览器能够播放MP4video。

对于IE9我发现需要一个元标签来设置模式

 <meta http-equiv="X-UA-Compatible" content="IE=Edge"/> <video width="400" height="300" preload controls> <source src="movie.mp4" type="video/mp4" /> Your browser does not support the video tag </video> 

结束使用http://videojs.com/来支持所有的浏览器。;

但要获得在IE9和Chrome的video工作,我刚刚添加html5文档types和使用mp4:

 <!DOCTYPE html> <html> <body> <video src="video.mp4" width="400" height="300" preload controls> </video> </body> </html> 

如果它仍然没有在这里工作,可能肯定是一个解决scheme:用压缩格式H.264编码mp4。 如果你使用mpeg4或者divx格式编码它,否则它不能在IE9上运行,也可能会导致Google Chrome崩溃。 要做到这一点,我使用Any Video Converter免费软件。 但是可以用任何好的video工具来完成。

我一直在尝试所有的解决scheme在这里列出,并尝试了几天的解决方法,但问题在于我创build我的MP4的方式撒谎。 IE9不能解码H.264以外的格式。

希望这有助于吉米

丹有最好的答案之一,我build议你在目标浏览器上使用html5test.com看到支持的video格式。

如上所述,没有单一格式的作品,我使用的MP4编码为H.264,WebM和闪回回退。 这让我来演示video如下:

Win 7 – IE9,Chrome,Firefox,Safari,Opera

Win XP – IE7,IE8,Chrome,Firefox,Safari,Opera

MacBook OS X – Chrome,Firefox,Safari,Opera

iPad 2,iPad 3

Linux – Android 2.3,Android 3

 <video width="980" height="540" controls> <source src="images/placeholdername.mp4" type="video/mp4" /> <source src="images/placeholdername.webm" type="video/webm" /> <embed src="images/placeholdername.mp4" type="application/x-shockwave-flash" width="980" height="570" allowscriptaccess="always" allowfullscreen="true" autoplay="false"></embed> <!--IE 8 - add 25-30 pixels to vid height to allow QT player controls--> </video> 

注意:.mp4video应该在h264基本configuration文件中编码,以便在所有移动设备上播放。

更新:添加autoplay =“false”Flash后备。 这样可以防止MP4在IE8加载页面时马上开始播放,一旦播放button被按下,就会开始播放。

Internet Explorer 9支持使用H.264编解码器的MPEG4。 但是它也要求文件一开始下载就可以开始播放。

以下是关于如何制作在IE9中工作的MPEG文件(在Ubuntu上使用avconv)的基本步骤。 我花了好几个小时弄清楚了,所以我希望它可以帮助别人。

  1. 使用H.264编解码器将video转换为MPEG4。 你不需要任何幻想,只要让avconv为你做这个工作:

     avconv -i video.mp4 -vcodec libx264 pre_out.mp4 
  2. 这个video将适用于所有支持MPEG4的浏览器,IE9除外。 要添加对IE9的支持,您必须将文件信息移动到文件头,以便浏览器在开始下载文件时就可以开始播放。 这是IE9的关键!

     qt-faststart pre_out.mp4 out.mp4 

qt-faststart是支持H.264 / ACC文件格式的Quicktime实用程序。 它是libav-tools包的一部分。

据我所知,video支持是最好的。

http://diveintohtml5.ep.io/video.html#what-works

在撰写本文时,这是HTML5video的风景:

  • Mozilla Firefox(3.5及更高版本)支持Ogg容器中的Theoravideo和Vorbisaudio。 Firefox 4也支持WebM。

  • Opera(10.5及更高版本)支持Ogg容器中的Theoravideo和Vorbisaudio。 Opera 10.60也支持WebM。

  • Google Chrome(3.0及更高版本)支持Ogg容器中的Theoravideo和Vorbisaudio。 Google Chrome 6.0也支持WebM。

  • Mac和Windows PC上的Safari(3.0和更高版本)将支持QuickTime支持的任何内容。 理论上,您可能需要您的用户安装第三方QuickTime插件。 实际上,很less有用户会这样做。 所以你只剩下QuickTime支持的格式“开箱即用”。这是一个很长的列表,但不包括WebM,Theora,Vorbis或Ogg容器。 但是,QuickTime在MP4容器中支持H.264video(主configuration文件)和AACaudio。

  • 苹果iPhone和谷歌Android手机等移动电话在MP4容器中支持H.264video(基线configuration文件)和AACaudio(“低复杂度”configuration文件)。

  • Adobe Flash(9.0.60.184和更高版本)支持MP4容器中的H.264video(所有configuration文件)和AACaudio(所有configuration文件)。

  • Internet Explorer 9支持H.264video的所有configuration文件以及MP4容器中的AAC或MP3audio。 如果您安装了第三方编解码器,它也将播放WebMvideo,这在任何版本的Windows上都不是默认安装的。 IE9不支持其他第三方编解码器(与Safari不同,QuickTime可以播放任何内容)。

  • Internet Explorer 8根本没有HTML5video支持,但几乎所有Internet Explorer用户都将拥有Adobe Flash插件。 在本章的后面,我将向您展示如何使用HTML5video,但优雅地回落到Flash。

同样,你应该在同一页面下面注意这个部分:

在所有的HTML5浏览器中都没有单独的容器和编解码器组合。

这在近期不太可能改变。

为了让您的video能够在所有这些设备和平台上观看,您需要多次对video进行编码。

我有一个基本的configuration文件.mp4video在一台服务器上播放,而不是在另一台服务器上播放。

唯一的区别是:
一个给出一个标题"Content-Length: ..."
另一个"Trasfer-Encoding: chunked".

我发现Content-Length是不需要的,只有重要的是,应该没有分块的标题。 这可以通过closures.mp4文件的压缩(压缩或gzip)来完成。 如何做到这一点是另一个问题,另一个话题: 如何禁用.htaccess文件中的一些媒体文件的Apache gzip压缩?

可能会有另一个服务器问题:
它必须给"Content-Type: video/mp4"
而不是"Content-Type: text/plain"

如果上述任何一个答案都不起作用,并且您在apache服务器上,则将以下内容添加到.htaccess文件中:

 //most of the common formats, add any that apply AddType video/mp4 .mp4 AddType audio/mp4 .m4a AddType video/mp4 .m4v AddType video/ogg .ogv AddType video/ogg .ogg AddType video/webm .webm 

我有一个类似的问题,并添加这解决了我所有的播放问题。

使用这两种格式,它在所有浏览器工作正常:

 <video width="640" height="360" controls> <!-- MP4 must be first for iPad! --> <source src="unbelievable.mp4" type="video/mp4" /><!-- Safari / iOS video --> <source src="movie.ogg" type="video/ogg" /><!-- Firefox / Opera / Chrome10 --> </video> 

Internet Explorer和Edge不支持Chrome所做的一些MP4格式。 您可以使用ffprobe查看确切的MP4格式。 在我的情况下,我有这两个video:

 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'a.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf56.40.101 Duration: 00:00:12.10, start: 0.000000, bitrate: 287 kb/s Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 1000x1000 [SAR 1:1 DAR 1:1], 281 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default) Metadata: handler_name : VideoHandler Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'b.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.66.102 Duration: 00:00:33.83, start: 0.000000, bitrate: 505 kb/s Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1280x680, 504 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) Metadata: handler_name : VideoHandler 

在Chrome中都能很好地发挥,但是IE和Edge中的第一个都失败了。 问题是IE和Edge不支持yuv444 。 你可以转换成像这样的shittier色彩空间:

 ffmpeg -i input.mp4 -pix_fmt yuv420p output.mp4 

尝试以下,看看它是否工作:

 <video width="400" height="300" preload controls> <source src="video.mp4" type="video/mp4" /> Your browser does not support the video tag. </video> 

没有JavaScript,唯一可以玩的方式是没有错误:

 <!--[if lte IE 9]> <!-- PUT HERE A FLASH PLAYER WITH video.flv --> <![endif]--> <!--[if gt IE 9]><!--> <video controls class="video"> <source src="video.mp4" type="video/mp4"> <!-- REPEAT FLASH PLAYER CODE HERE --> </video> <!--<![endif]-->