webm格式和mp4格式,判断了浏览器可否支持的视频类型后,给了一个if判断,若是是支持mp4格式,就返回视频后缀mp4,若是是webm,就返回后缀webm。结果,在谷歌浏览器中播放不了,为何我指定源为webm格式的视频时,谷歌浏览器毫无错误的播放了,可是,若是是使用if判断,发现选择的是mp4,而不是webm,咋办?web
先来看看这两段代码,差异只是顺序上的。chrome
/*************************************获取视频格式***************************/ function getFormatExtension(){ if( video.canPlayType("video/webm") !=""){ //针对谷歌浏览器 return ".webm"; }else if( video.canPlayType("video/mp4") !="" ){ //针对safari浏览器 return ".mp4"; } }
/*************************************获取视频格式***************************/
function getFormatExtension(){
if( video.canPlayType("video/mp4") !=""){ //针对谷歌浏览器
return ".mp4";
}else if( video.canPlayType("video/webm") !="" ){ //针对safari浏览器
return ".webm";
}
}
结果:在谷歌浏览器中不能正常播放。
下面咱们来看一张各个浏览器对video元素支持的三种视频格式的状况表:浏览器
咱们能够看到,ide
一、chrome既支持mp4格式也支持webm格式。可是火狐和谷歌浏览器都会优先选择mp4格式(实践证实的)。编码
2.此时当这里的mp4格式的视频播放不了时,就出现了我遇到的状况,例如:在获取中会显示视频被破坏。因此仍是建议把浏览器选择webm格式的代码写在前面,mp4的写在后面,为了让它先选择webm格式的视频,或者用程序中的判断也能够。spa
如今来讲说为何谷歌播放不了mp4格式的视频的缘由??.net
这是谷歌搜索后学到的内容,又有进步了,哈哈。code
缘由:orm
Chrome浏览器支持HTML5,它只是支持原生播放部分的MP4格式。MP4视频格式,在我写这篇笔记时,我也觉得mp4格式就是后缀为.mp4,其实不是,MP4自己不是一种简单的视频格式,它是一个包装视频和音频格式的壳,里面的视频音频的编码格式使用什么编码方式是可变的。MP4视频有两种编码方式,Divx和H264,but,Chrome支持H264。因而我上面的例子中,浏览器看到有MP4后缀的文件,使用原生HTML5视频播放,后来却发现视频格式没法解码,因而,Chrome没法播放视频。FF估计也是相似的缘由。视频
有时间能够看看这个 http://my.oschina.net/maomi/blog/144086