webm格式和mp4格式,判斷了瀏覽器能否支持的視頻類型后,給了一個if判斷,如果是支持mp4格式,就返回視頻后綴mp4,如果是webm,就返回后綴webm。結果,在谷歌瀏覽器中播放不了,為什么我指定源為webm格式的視頻時,谷歌瀏覽器毫無錯誤的播放了,但是,如果是使用if判斷,發現選擇的是mp4,而不是webm,咋辦?
先來看看這兩段代碼,差別只是順序上的。
/*************************************獲取視頻格式***************************/ 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元素支持的三種視頻格式的情況表:
我們可以看到,
1、chrome既支持mp4格式也支持webm格式。但是火狐和谷歌瀏覽器都會優先選擇mp4格式(實踐證明的)。
2.此時當這里的mp4格式的視頻播放不了時,就出現了我遇到的情況,例如:在獲取中會顯示視頻被破壞。所以還是建議把瀏覽器選擇webm格式的代碼寫在前面,mp4的寫在后面,為了讓它先選擇webm格式的視頻,或者用程序中的判斷也可以。
現在來說說為什么谷歌播放不了mp4格式的視頻的原因??
這是谷歌搜索后學到的內容,又有進步了,哈哈。
原因:
Chrome瀏覽器支持HTML5,它只是支持原生播放部分的MP4格式。MP4視頻格式,在我寫這篇筆記時,我也以為mp4格式就是后綴為.mp4,其實不是,MP4本身不是一種簡單的視頻格式,它是一個包裝視頻和音頻格式的殼,里面的視頻音頻的編碼格式使用什么編碼方式是可變的。MP4視頻有兩種編碼方式,Divx和H264,but,Chrome支持H264。於是我上面的例子中,瀏覽器看到有MP4后綴的文件,使用原生HTML5視頻播放,后來卻發現視頻格式無法解碼,於是,Chrome無法播放視頻。FF估計也是類似的原因。
有時間可以看看這個 http://my.oschina.net/maomi/blog/144086