首先,如果John Dyer正在阅读此内容,非常感谢您的播放器,这太棒了! : - )
现在,我的问题。我正在尝试使用HTML5(iPad,iPhone,Android,Chrome桌面)提供MP4视频,并回退到Flash(Firefox,IE,Opera)。 MediaElementJS可以开箱即用,除了HTML5解决方案允许使用HTTP随机跳转到视频,而Flash后备使浏览器在播放前下载整个文件。
因此,我想在使用Flash后备时使用rtmp而不是http(除了传统的网络服务器,我们还有一个Flash Media Server可以为视频提供服务),所以我想在这些情况下更改源代码。但我不知道MediaElementJS是否以及如何告诉我Flash是否会被使用。我试过这个:
<video autoplay controls width="800" height="600" id="video-tag" preload="auto">
<source id="media-source-mp4" type="video/mp4" src="http://localhost/video1.mp4" />
<object width="800" height="600" type="application/x-shockwave-flash" data="js/flashmediaelement.swf">
<param name="movie" value="js/flashmediaelement.swf" />
<param name="flashvars" value="controls=true&autostart=true&file=rtmp://localhost/video1.mp4" />
</object>
</video>
<script type="text/javascript">$("#video-tag").mediaelementplayer({
success: function(media, node, player) {
if (media.pluginType != 'native') {
media.setSrc('rtmp://localhost/video1.mp4');
media.load();
media.play();
}
}
});</script>
但它显然不起作用。我浏览了medialement.js代码,而我认为媒体元素暴露了pluginType属性,但我可能错了。 &lt;对象&gt;或者&lt; embed&gt;在&lt; div class =“me-plugin”&gt;内创建的元素仍然带有http网址。
我做错了什么,或者我不能简单地完成我正在尝试的事情?
答案 0 :(得分:4)
我刚刚通过Github问题找到了我自己的问题的答案MediaElementJS:
https://github.com/johndyer/mediaelement/issues/337
诀窍是在URL中的媒体文件名称前添加“mp4:”。所以,在我的例子中,最后一行是:
if (media.pluginType != 'native') {
media.setSrc('rtmp://localhost/mp4:video1.mp4'); // NOTE the "mp4:" prefix
media.load();
media.play();
}
它适用于Flash Media Server 3.5。 : - )