我正在尝试建立一个视频播放器,可以在任何地方使用。到目前为止,我会这样做:
<video>
<source src="video.mp4"></source>
<source src="video.ogv"></source>
<object data="flowplayer.swf" type="application/x-shockwave-flash">
<param name="movie" value="flowplayer.swf" />
<param name="flashvars" value='config={"clip":"video.mp4"}' />
</object>
</video>
(在一些网站上可以看到,例如 每个人都能看到) 目前为止,一切顺利。
但是现在我还想要一些播放列表/菜单与视频播放器,从中我可以选择其他视频。这些应该立刻在我的播放器中打开。因此,我将不得不使用 Javascript“动态更改视频源”(正如在 Dev.opera.com/articles/everything-you-need-to-know-html5-video-audio/-section“ Let’s look at another film”中看到的那样)。让我们暂时忘记 Flash 播放器(也就是 IE)的部分,我稍后会尝试处理这个问题。
所以我的 JS 改变 <source>
标签应该是这样的:
<script>
function loadAnotherVideo() {
var video = document.getElementsByTagName('video')[0];
var sources = video.getElementsByTagName('source');
sources[0].src = 'video2.mp4';
sources[1].src = 'video2.ogv';
video.load();
}
</script>
问题是,这并不适用于所有的浏览器。也就是说,在 Firefox 中有一个很好的页面,你可以观察到我遇到的问题: http://www.w3.org/2010/05/video/mediaevents.html
一旦我触发 load()
方法(在 Firefox 中,请注意) ,视频播放器就会死亡。
现在我已经发现,当我不使用多个 <source>
标记,而是只使用 <video>
标记中的一个 src
属性时,整个 是的都可以在 Firefox 中工作。
因此,我的计划只是使用 src
属性,并使用 CanPlayType ()函数确定适当的文件。
我是做错了还是把事情搞复杂了?