2012-07-09 32 views
0

我正在將視頻嵌入網頁並使用mediaelements.js。我用下面的代碼從mediaelements.js例子:Firefox和HTML5視頻元素 - 閃回回退的奇怪行爲。 mediaelemnts.js中可能存在的錯誤

<video width="640" height="360" id="player2" poster="img/echo-hereweare.jpg" controls="controls" preload="none"> 
    <source type="video/mp4" src="somevideo.mp4" /> 
    <source type="video/webm" src="somevideo.webm" /> 
    <source type="video/ogg" src="somevideo.ogv" /> 
    <object width="640" height="360" type="application/x-shockwave-flash" data="flash/flashmediaelement.swf">  
     <param name="movie" value="flash/flashmediaelement.swf" /> 
     <param name="flashvars" value="controls=true&amp;file=somevideo.mp4" /> 
     <img src="img/echo-hereweare.jpg" width="640" height="360" alt="Here we are" 
     title="No video playback capabilities" /> 
    </object> 
</video> 

再後來就從例子是腳本代碼:

<script> 
    $('audio,video').mediaelementplayer({ 
     success: function(player, node) { 
      $('#' + node.id + '-mode').html('mode: ' + player.pluginType); 
     } 
    }); 
</script> 

然後我在Firefox中發現了一些奇怪的事情。 當我在不啓動mediaelements.js(不使用上面的腳本)的情況下使用此代碼時,firefox會嘗試播放.mp4,但控制檯自然會報告不支持.mp4格式的錯誤。到目前爲止如此正確。

在我的理解中,視頻元素現在應該嘗試下一個格式 - .webm。取而代之的是閃回回退被加載(flashmediaelement.swf)(到目前爲止還沒有播放,因爲播放按鈕沒有被點擊,但仍然完全加載了.swf)。

然後,當我播放視頻時,.webm被下載並播放 - 如預期的那樣。

當我用它來與mediaelements.js甚至怪異的事情正在發生 - .swf文件不僅被完全加載一次,但要求至少一個更多的時間,而不會被下載(你看到它在Firebug的網絡選項卡 - 帶有繁忙微調的黃色線條,就好像它會加載和加載一樣,但沒有錯誤或任何狀態代碼,也沒有顯示文件大小,它看起來有點像「卡住」請求。它的截圖,但目前不允許)。

另外,我在Firebug的控制檯中得到警報,說.webm無法解碼。 .webm-video開始加載,但不會完全加載(狀態碼206)。然後根本沒有視頻播放,因爲.webm試圖播放,但由於解碼錯誤而停止播放。那麼沒有閃回後備跳躍?

我的問題,現在:

  1. 是在Firefox這是正常的行爲媒體元素 - 即 備用版本的Adobe Flash被加載時,即使不需要嗎?
  2. 爲什麼它會在第二種場景中加載兩到三次 儘管它不被使用?我想這是一個bug mediaelemnts.js
  3. 第三,爲什麼firefox播放.webm沒有mediaelements.js 而不是mediaelements.js?我想另一個bug?

Thx任何幫助。

---注意--- 我知道我使用,自帶的mediaelements.js作爲備用解決方案,即使我不使用mediaelements.js瑞士法郎。有誰知道一個簡單的輕量級Flash視頻播放器?或者我必須堅持使用流式播放器作爲標準的Flash視頻播放器?

回答

0

我不能有所有我的視頻文件(有很多,整個網站下載)的多個版本,所以我寫了這個,它似乎工作在當前的Safari,FireFox和鉻 - 應該在其他任何工作或添加到非MP4列表

<script type="text/javascript"> 
    /*U might need to add other non-MP4 native browsers*/ 
    if (navigator.userAgent.indexOf('Firefox'||'Chrome') != -1) { 
     document.write("<object type='application/x-shockwave-flash' data='player.swf' width='480' height='270'> 
     <param name='movie' value='player.swf' /> 
     <param name='allowFullScreen' value='true'/> 
     <param name='wmode' value='transparent' /> 
     <param name='flashVars' value='controlbar=over&amp;file=video/sequence03.mp4' /> 
     <span title='No video playback capabilities, please download the video below'> 
     <a href='video/sequence03.mp4'>Sequence 03</a></span></object>") 
    } 
    else { 
     document.write("<video width='480' height='270' controls><source src='video/sequence03.mp4' type='video/mp4' /></video>") 
    } 
</script>