Firefox和HTML5视频元素–;闪速回退的怪异行为。mediaelemnts.js中可能存在的错误

Firefox和HTML5视频元素–;闪速回退的怪异行为。mediaelemnts.js中可能存在的错误,firefox,html5-video,mediaelement.js,fallback,Firefox,Html5 Video,Mediaelement.js,Fallback,我正在将视频嵌入到网页中,并使用mediaelements.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

我正在将视频嵌入到网页中,并使用mediaelements.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>

$(“音频、视频”).mediaelementplayer({
成功:功能(播放器、节点){
$('#'+node.id+'-mode').html('mode:'+player.pluginType);
}
});
然后我在Firefox中发现了一些奇怪的东西当我在不启动mediaelements.js的情况下使用此代码时(不使用上述脚本),firefox会尝试播放.mp4,但控制台自然会报告一个错误,即不支持.mp4格式。到目前为止还不错

在我看来,视频元素现在应该尝试下一种格式--.webm。相反,flash回退被加载(flashmediaelement.swf)(到目前为止没有播放任何内容,因为尚未单击播放按钮,但仍然完全加载了.swf)

然后,当我播放视频时,.webm被下载并播放–正如预期的那样

当我将它与mediaelements.js一起使用时,发生了一件更奇怪的事情,.swf不仅被完全加载了一次,而且至少被请求了一次,而没有被下载(您可以在firebug的网络选项卡中看到它–一条黄线,带有一个繁忙的微调器,好像它将加载和加载。但是没有错误或任何状态代码,也没有显示文件大小。它看起来有点像“卡住”的请求。我想发布它的屏幕截图,但目前不允许。)

此外,我在Firebug的控制台中收到一个警报,.webm无法解码。该.webm视频开始加载,但无法完全加载(状态代码206)。然后根本没有视频播放,因为该.webm尝试播放,但由于解码错误而停止。那么,flash是否应该后退跳转

我现在的问题是:

  • 在Firefox中,媒体元素的这种行为是否正常 fallback flashplayer已加载,即使不需要它
  • 为什么在第二个场景中会加载两到三次 尽管它也没有被使用?我想这是mediaelemnts.js中的一个bug
  • 第三,为什么firefox在没有mediaelements.js的情况下使用.webm mediaelements.js不是吗?我想是另一个bug吧
  • 谢谢你的帮助

    ---注意---
    我知道我正在使用mediaelements.js附带的.swf作为后备解决方案,即使我没有使用mediaelements.js。有人知道一个简单的轻量级flash视频播放器吗?或者我必须坚持使用flowplayer作为标准flash视频播放器吗?

    我不能拥有所有视频文件的多个版本(有很多,整个网站都已下载)所以我写了这篇文章,它似乎适用于当前的Safari、FireFox和Chrome——应该适用于所有其他内容,或者添加到非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>
    
    
    /*您可能需要添加其他非MP4本机浏览器*/
    if(navigator.userAgent.indexOf('Firefox'.'Chrome')!=-1){
    文件。写(“
    ")
    }
    否则{
    文件。写(“”)
    }