首页 > 代码库 > [转载]为什么有些MP4文件在Chrome浏览器上播放不了?

[转载]为什么有些MP4文件在Chrome浏览器上播放不了?

http://blog.sina.com.cn/s/blog_6bb7ebcc0101c2ja.html

Chrome浏览器支持HTML5,它支持原生播放部分的MP4格式(不用通过Flash等插件)。

为什么是部分MP4呢?MP4有非常复杂的含义(见http://en.wikipedia.org/wiki/Mp4),普通人对MP4的理解是后缀为.mp4的文件。但MP4本身不是一种简单的视频格式,它是一个包装了视频和音频格式的壳。至于里面的视频和音频使用什么编码格式是可变的。MP4的视频格式可以使用DivX也可使用H264,Chrome只支持H264。

然后,我猜测问题的原因是这样的:Chrome浏览器见到MP4后缀的文件,使用了原生HTML5视频播放起播放,但却发现视频格式无法解码。对于Firefox,它不支持原生播放MP4,于是使用了Flash,绝大部分的视频格式基本都可通过Flash播放。

这篇2011年1月的消息提到Google将放弃对H264的支持:http://www.infoq.com/cn/news/2011/01/chrome-h264。这篇是Google方面的描述:http://blog.chromium.org/2011/01/html-video-codec-support-in-chrome.html。如果Google不再支持在Chrome上原生播放MP4,那么会调用Flash播放器播放,这样反而不会出现有些MP4文件播放不了的问题。

为什么Chrome不支持所有的视频编码格式?绝大部份的视频编码格式都是要付版权费的,Google已经为H264买了单,Firefox没有Google那么有钱不愿意买。
 
下面是各浏览器对HTML5 Video的支持(http://en.wikipedia.org/wiki/Html_video_tag):
BrowserLatest stable release version dateFormats supported by different web browsers
Ogg Theora H.264 VP8 (WebM)
Internet Explorer 9.0.2  (August 11, 2011; 6 months ago)Manual install[note 2]9.0[23]Manual install[note 3]
Mozilla Firefox[26] 10.0.2  (February 16, 2012; 10 days ago)[27]3.5[28]Manual install/Microsoft Windows only[note 4]4.0[30][31]
Google Chrome 17.0.963.56  (February 15, 2012; 11 days ago)3.0[32][33]Planned for removal[34]6.0[35][36]
ChromiumN/Ar18297[37]Manual install[note 5]r47759[39]
Android browserN/A2.3[40]3.0[40]2.3[40]
Safari with Quicktime 5.1.3  (February 1, 2012; 25 days ago)Manual install[note 6]3.1Manual install[41]
Opera 11.61  (January 24, 2012; 33 days ago)10.50[42]No10.60[43][44]
Konqueror 4.8  (25 January 2012; 32 days ago)[45]4.4[46]Manual install[note 7]Yes[48]
Epiphany 3.2.2  (16 November 2011; 3 months ago)[49]2.28[50]Manual install[note 8] Yes[note 8][51]
 

最后,我录制了一段教学视频,指导大家怎样把各种视频转换成兼容性比较好的MP4文件。视频中使用的软件是“格式工厂”(http://www.formatoz.com/CN/index.html),这个软件基本上只是做了一个界面,其核心调用了开源软件FFMPEG。由于它违反了FFMPEG的LGPL许可协议,备受指责。使用Linux的朋友可以直接使用FFMPEG命令进行视频格式转换,命令如下:

ffmpeg -i infile.flv -vcodec libx264 o5.mp4

如果转换出的视频在某些设备还是无法播放,可以试试利用MediaCoder转换兼容性更好的MP4

 

参考:

http://www.w3school.com.cn/tags/av_met_canplaytype.asp
https://html.spec.whatwg.org/multipage/embedded-content.html#the-video-element

[转载]为什么有些MP4文件在Chrome浏览器上播放不了?