0

我正在将视频嵌入网页并使用 mediaelements.js。我使用了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>

然后我在 Firefox 中发现了一些奇怪的东西。当我在没有启动mediaelements.js(不使用上面的脚本)的情况下使用此代码时,firefox会尝试播放.mp4,但控制台自然会报告不支持.mp4格式的错误。到目前为止一切顺利。

据我了解,视频元素现在应该尝试下一种格式——.webm。而是加载了 flash 后备 (flashmediaelement.swf)(到目前为止没有播放任何内容,因为尚未单击播放按钮,但 .swf 仍然完全加载)。

然后,当我播放视频时,.webm 会按预期下载并播放。

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

另外,我在 Firebug 的控制台中收到了 .webm 无法解码的警报。.webm-video 开始加载,但不会完全加载(状态代码 206)。然后根本没有视频播放,因为 .webm 尝试播放但由于解码错误而停止。那么flash fallback不应该跳进去吗?

我现在的问题是:

  1. 这是 Firefox 中媒体元素的正常行为吗?即使不需要,也会加载备用 flashplayer?
  2. 为什么它在第二种情况下加载了两三次,尽管它也没有使用?我猜这是 mediaelemnts.js 中的一个错误
  3. 第三,为什么firefox在没有mediaelements.js的情况下播放.webm而没有mediaelements.js?我猜另一个错误?

感谢您的帮助。

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

4

1 回答 1

0

我不能拥有所有视频文件的多个版本(有很多并且整个网站都已下载)所以我写了这个,它似乎适用于当前的 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>
于 2012-10-08T05:12:53.527 回答