#javascript #html #video
#javascript #HTML #Видео
Вопрос:
у меня был видеобокс html5 только с одним видео внутри. в этом видео это анимированная фигура с разными ходами. в качестве примера: во-вторых, 1-5 фигура заходит внутрь, во-вторых, 5-7 фигура говорит «привет», … я хотел бы управлять этими анимациями с помощью js, и я хотел бы зациклить основную анимацию.
это видеоплеер html5:
<video id="vidplayer">
<source src="animation.mp4" type="video/mp4"</source>
</video>
я протестировал следующий код для циклического воспроизведения видео между вторыми 7-9, и он не работает:
var vid = $("#vidplayer").get(0);
vid.ontimeupdate = function(e) {
if(this.currentTime = 9) {
vid.currentTime = 7;
}
};
он работает только с
(this.currentTime >= 9)
но с этим «>=» я не могу использовать анимацию выше 9 секунд (например, 21-29 секунд).
не могли бы вы мне помочь? Спасибо!
Комментарии:
1. как насчет использования вложенных if … сначала проверьте наибольшее время, например, если это. currentTime > = 29 бла еще, если currentTime > = 9 и т. Д
2. спасибо за ваш ответ. Я тестировал его, но не работает. проигрыватель останавливается только в наименьшее время.
Ответ №1:
вам нужно будет проверить как начало, так и остановку фрагментов, в которых вы хотите выполнить цикл, чтобы ограничить тест.
В приведенном ниже примере он будет повторяться с отметки 15 секунд (или больше) обратно до 10 секунд; с отметки 9 секунд обратно до 7; с отметки 5 секунд обратно до 1.
Для производственной версии я бы, вероятно, создал массив точек перехода и использовал его, чтобы избежать необходимости вводить время как верхнее / нижнее, но это должно дать вам основу для продолжения:
<video preload="auto" controls id="vidplayer">
<source src="BigBuck.m4v" type='video/mp4;'"></source></video>
<script>
var vid = document.getElementById("vidplayer")
vid.addEventListener('timeupdate', timeupdate, false);
function timeupdate() {
if (vid.currentTime >= 15) {
vid.currentTime = 10;
} else if (vid.currentTime >= 9 amp;amp; vid.currentTime < 10) {
vid.currentTime = 7;
} else if (vid.currentTime >= 5 amp;amp; vid.currentTime < 7) {
vid.currentTime = 1;
}
}
</script>
Ответ №2:
У меня была такая же проблема, и я написал плагин для ее решения. См. https://github.com/phhu/videojs-abloop . Это позволяет использовать команды javascript для управления циклом фрагмента видео. В примере показано, как вы можете управлять переключением различных разделов видео с помощью обратных вызовов или иным образом.