Ошибка установки currentTime в видео HTML5

У меня есть видео в середине моего 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), но когда я ищу эту проблему, я не могу общаться с видео, только с холстом.

Заранее спасибо

Ответ 1

Вам не нужно ждать, пока он начнет играть, но он должен быть готов к игре. Для этого есть событие canplay, так что-то вроде этого должно работать:

myVid.play();
myVid.addEventListener('canplay', function() {
    this.currentTime = 5;
});

Ответ 2

Как уже упоминалось выше, вы пытаетесь установить currentTime, когда видео не доступно для поиска. Так, в качестве альтернативного варианта использования (например, сбросьте время до 0, когда пользователь нажимает на кнопку), вы можете сделать что-то вроде:

function resetVideo() {
  myVid.pause();
   
  if (myVid.seekable.length > 0) {
    myVid.currentTime = 0;
  }
}

Ответ 3

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;
          }
     }
}

Ответ 4

Вам нужно подождать, пока он не будет готов играть,
то есть не ожидайте, что play будет блокирующей функцией
Измените свой код следующим образом:

myVid.play();
myVid.media.addEventListener('playing', function(){
    myVid.setCurrentTime(5);
});