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