Ответ 1
Вам не нужно ждать, пока он начнет играть, но он должен быть готов к игре. Для этого есть событие canplay, так что-то вроде этого должно работать:
myVid.play();
myVid.addEventListener('canplay', function() {
this.currentTime = 5;
});
У меня есть видео в середине моего html. Как вы можете видеть, у меня нет источника
<video id="videoPrincipal" src="" width="640" height="360" controls preload></video>
Когда я нажимаю кнопку, я запускаю функцию, которая делает:
myVid = document.getElementById('videoPrincipal');
myVid.src = 'video.mp4';
myVid.play();
myVid.currentTime ='5';
Видео начнет воспроизводиться правильно, но я не могу установить текущее время (и я сделал то же самое, что мы можем видеть в http://www.w3schools.com/tags/av_prop_currenttime.asp)
Это дает мне ту же ошибку, если я устанавливаю currentTime перед вызовом функции воспроизведения.
Ошибка, отображающая меня в консоли, следующая: "Uncaught InvalidStateError: попытка использовать объект, который не является или больше не используется". (в строке currentTime), но когда я ищу эту проблему, я не могу общаться с видео, только с холстом.
Заранее спасибо
Вам не нужно ждать, пока он начнет играть, но он должен быть готов к игре. Для этого есть событие canplay, так что-то вроде этого должно работать:
myVid.play();
myVid.addEventListener('canplay', function() {
this.currentTime = 5;
});
Как уже упоминалось выше, вы пытаетесь установить currentTime, когда видео не доступно для поиска. Так, в качестве альтернативного варианта использования (например, сбросьте время до 0, когда пользователь нажимает на кнопку), вы можете сделать что-то вроде:
function resetVideo() {
myVid.pause();
if (myVid.seekable.length > 0) {
myVid.currentTime = 0;
}
}
video = document.getElementById('video');
begin_play = 50;
play_video_first = true; //if you want to run only first time
video.addEventListener("play", capture, false);
function capture(event)
{
if (event.type == "play"){
if(play_video_first){
play_video_first = false;
video.currentTime = begin_play;
}
}
}
Вам нужно подождать, пока он не будет готов играть,
то есть не ожидайте, что play
будет блокирующей функцией
Измените свой код следующим образом:
myVid.play();
myVid.media.addEventListener('playing', function(){
myVid.setCurrentTime(5);
});