我一直在寻找一种方法让我们网站上的Vimeo播放器以从阵列中随机挑选的偏移量开始。
我发现Vimeo API提供了一个名为seekTo()的函数,在Vimeo site中描述如下:
寻找视频中的指定点。会保持不变 播放/暂停状态。 Flash播放器不会搜索已加载的内容 这一点,HTML播放器无论如何都会寻找那个位置 大部分视频已加载。
严格说来,这有效:页面加载,视频进度指示器设置为所选的偏移量。但是,如果视频开始播放,则从头开始。无论我如何启动视频,都会发生这种情况(iframe src属性中的自动播放,API的“播放”功能,视频上的播放按钮)。
我发现了类似问题的讨论,虽然他们关注Flash播放器以及视频需要加载的事实,而上面的描述说它不应该是HTML版本的问题。
下面,您可以在自动播放添加到网址的版本中找到我的HTML和JS。如果有人对此类问题有任何经验,我们将非常感谢您的帮助。
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>bla</h1>
<iframe id="vimeoframe" src="http://player.vimeo.com/video/29705942?autoplay=1&api=1&player_id=vimeoframe&title=0&byline=0&portrait=0" width="521" height="293" frameborder="0"></iframe>
<script type="text/javascript" src="../common/templates/template3/js/vimeo.random.js"></script>
</body>
</html>
JS:
if (window.addEventListener){
window.addEventListener('message', onMessageReceived, false);
} else { // IE
window.attachEvent('onmessage', onMessageReceived, false);
}
function onMessageReceived(e) {
var data = JSON.parse(e.data);
if (data.event === 'ready') {
seekTo();
}
}
function seekTo(){
var videoCuts = [20,40,60]; //to be filled with actual cuts provided by Sven
var vimeoStartPoint = videoCuts[Math.floor(Math.random()*videoCuts.length)];
var vimeoframe = document.getElementById("vimeoframe");
var url = "http://player.vimeo.com";
var vimeoJSONObject = JSON.stringify({method:"seekTo",value:vimeoStartPoint});
vimeoframe.contentWindow.postMessage(vimeoJSONObject,url);
}
答案 0 :(得分:0)
也许这有助于您了解Vimeo API的工作原理。我认为你的整个JSON事情正在变得比它需要的更难。 http://labs.funkhausdesign.com/examples/vimeo/froogaloop2-api-basics.html