【发布时间】:2011-12-07 17:13:35
【问题描述】:
我一直在寻找一种方法,让我们网站上的 Vimeo 播放器以从数组中随机选取的偏移量开始。
我发现 Vimeo API 提供了一个名为 seekTo() 的函数,在 Vimeo site 上描述如下:
寻找视频中的指定点。将保持不变 播放/暂停状态。 Flash 播放器不会搜索加载的 点,而 HTML 播放器无论如何都会寻找那个点 大部分视频已加载。
严格来说,这是可行的:页面加载,视频进度指示器设置在所选偏移量处。但是,如果视频开始播放,它会从头开始播放。无论我如何启动视频(iframe src 属性中的自动播放、API 的“播放”功能、视频上的播放按钮),都会发生这种情况。
我发现了类似问题的讨论,虽然他们关心的是 Flash 播放器和需要加载视频的事实,而上面的描述说它不应该是 HTML 版本的问题。
您可以在下面找到我的 HTML 和 JS,在 URL 中添加了自动播放的版本中。如果有人对此类问题有任何经验,我们将不胜感激。
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);
}
【问题讨论】:
-
我正在寻找的另一种可能的解决方案是 Vimeo 的“Hubnut”,但在这种情况下,我需要一种方法来消除每两个视频之间的五秒钟“下一个视频即将到来”消息而且,更重要的是,一种从播放列表中选择首先选择哪个视频的方法。有没有人尝试过这些东西?还是我应该开始投入精力来说服团队领导改用 Youtube?
-
问题是你的JS运行后Flash视频正在加载。您是否有机会使用 jQuery?如果是这样,请将您的 JS 包装在 jQuery(document).ready() 函数中。
标签: vimeo