更改 html5 视频标签上的源
我正在尝试构建一个随时随地都可以使用的视频播放器。到目前为止,我将使用:
<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/ - “让我们看另一部电影”部分所示)。让我们暂时忘记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
一旦我触发了该方法(请注意,在Firefox中),视频播放器就会死亡。load()
现在我发现,当我不使用多个标签,而只使用标签中的一个属性时,整个事情在Firefox中确实有效。<source>
src
<video>
所以我的计划是只使用该属性,并使用canPlayType()函数确定适当的文件。src
我是以某种方式做错了还是使事情复杂化?