2013-07-10 3 views
0

Не могу понять, как добавить слушателя к воспроизведению видео. Я хочу, чтобы он в конце концов остановился, когда достигнет определенного времени воспроизведения (т.е. 10 секунд).Как добавить слушателя к воспроизведению видео

Я пробовал:

while(video.currentTime != timeToStop){ 
      video.play(); 
     } 

Но это может вызвать браузер, чтобы повесить, вероятно, так как я начинаю video.play() все время.

do while 

Причина того же вопроса.

Что следует использовать тогда?

+2

Что вы пытаетесь сделать? Ваш код ничего не показывает о добавлении слушателя. Когда вы хотите, чтобы слушатель работал? Когда начинается видео? Когда это закончится? Есть события, которые вы можете прослушать, например, 'video.addEventListener (« закончился », someFunction);'. Если вы хотите прослушать каждый тик, вы можете использовать событие 'timeupdate' – Ian

+2

Вот пример чего-то, что вам может понадобиться: http://jsfiddle.net/XK4NW/ – Ian

+0

Ничего страшного, это именно то, что мне нужно. Спасибо, вы хотите опубликовать его в качестве ответа или я должен удалить этот вопрос? –

ответ

2

Чтобы отслеживать ход видео, вы можете использовать событие timeupdate и проверить, прошло ли свойство currentTime видео с максимальным. Вот пример:

window.addEventListener("load", function() { 
    var video = document.getElementById("video1"), 
     timeToStop = 2; 

    video.addEventListener("timeupdate", function() { 
     if (this.currentTime >= timeToStop) { 
      this.pause(); 
     } 
    }, false); 
}, false); 

DEMO:http://jsfiddle.net/eGw52/

(где в данном примере используется 2 секунды, а не 10)

1

Видео играет хорошо с обещаниями. Вот рутина, которая приостанавливается в определенный момент времени и возвращает обещание, которое выполняется, когда это происходит (или видео приостанавливается по какой-то другой причине или заканчивается).

function pause_at (video, t) { 
    var promise=new Promise(); 

    function reached() { 
     promise.fulfill (video.currentTime); 
     video.removeEventListener ("timeupdate", timeupdate); 
     video.removeEventListener ("pause", reached); 
    } 

    function timeupdate() { 
     if (video.currentTime >= t) { 
      reached(); 
      video.pause(); 
     } 
    } 

    video.addEventListener ("timeupdate", timeupdate); 
    video.addEventListener ("pause", reached); 
    return promise; 
} 

Использование:

pause_at (video,60).then (function() {alert ("At 60-second mark!");}); 
video.play(); 

Обратите внимание, что видео окончание также считаются видео «пауза» (с событием паузы обожженным), так что обещание будет выполнять также, когда видео заканчивается.

Тонкая настройка, как вы хотите работать с любимой библиотекой обещаний. Вам нужно будет исправить это, если вам нравится запускать видео назад (отрицательное воспроизведениеRate). :-)