Я искал способ заставить Vimeo Player на нашем сайте начинать со смещения, случайно выбранного из массива.
Я обнаружил, что API Vimeo предоставляет функцию seekTo (), описанную на сайте Vimeo следующим образом:
Ищет указанную точку в видео. Будет поддерживать то же самое
состояние воспроизведения / паузы. 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);
}