Vimeo случайный seekTo () и играть - PullRequest
2 голосов
/ 14 октября 2011

Я искал способ заставить 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&amp;api=1&amp;player_id=vimeoframe&amp;title=0&amp;byline=0&amp;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);
}

1 Ответ

0 голосов
/ 18 марта 2012

Возможно, это поможет вам понять, как работает API Vimeo. Я думаю, что вся ваша работа с JSON делает его намного сложнее, чем нужно. http://labs.funkhausdesign.com/examples/vimeo/froogaloop2-api-basics.html

...