我正在将视频嵌入网页并使用 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&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不应该跳进去吗?
我现在的问题是:
- 这是 Firefox 中媒体元素的正常行为吗?即使不需要,也会加载备用 flashplayer?
- 为什么它在第二种情况下加载了两三次,尽管它也没有使用?我猜这是 mediaelemnts.js 中的一个错误
- 第三,为什么firefox在没有mediaelements.js的情况下播放.webm而没有mediaelements.js?我猜另一个错误?
感谢您的帮助。
---注意--- 我知道我正在使用 mediaelements.js 附带的 .swf 作为后备解决方案,即使我没有使用 mediaelements.js。有谁知道一个简单的轻量级 Flash 视频播放器?还是我必须坚持使用 flowplayer 作为标准的 Flash 视频播放器?