J'ai une vidéo au milieu de mon html. Comme vous pouvez le voir d'abord, je n'ai aucune source
<video id="videoPrincipal" src="" width="640" height="360" controls preload></video>
Lorsque je clique sur un bouton, je déclenche une fonction qui crée:
myVid = document.getElementById('videoPrincipal'); myVid.src = 'video.mp4'; myVid.play(); myVid.currentTime ='5';
La vidéo commence à jouer correctement, mais je ne peux pas définir l'heure actuelle (et j'ai fait la même chose que possible dans http://www.w3schools.com/tags/av_prop_currenttime.asp )
Cela me donne la même erreur si j'ai configuré currentTime avant d'appeler la fonction play.
L'erreur qui me montre dans la console est la suivante: "Uncaught InvalidStateError: Une tentative a été faite pour utiliser un objet qui n'est pas utilisé ou n'est plus utilisable". (Dans la ligne currentTime) mais lorsque je recherche ce problème, je ne peux pas associer à la vidéo, uniquement avec un canevas.
Merci d'avance
Vous ne devez pas l'attendre pour commencer à jouer, mais il doit être prêt à jouer. Il y a l'événement de jeu pour faire ça, donc quelque chose comme ça devrait fonctionner:
myVid.play(); myVid.addEventListener('canplay', function() { this.currentTime = 5; });
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; } } }
Comme mentionné ci-dessus, vous essayez de configurer currentTime lorsque la vidéo n'est pas recherchée. Ainsi, en tant que cas d'utilisation alternatif (réinitialiser le temps à 0 quand un utilisateur clique sur un bouton, par exemple), vous pouvez faire quelque chose comme:
function resetVideo() { myVid.pause(); if ( video.seekable.length > 0 ) { myVid.currentTime = 0; } }
Il faut attendre jusqu'à ce qu'il soit prêt à jouer,
C'est-à-dire ne vous attendez pas à ce que play
soit une fonction de blocage
Changez votre code comme suit:
myVid.play(); myVid.media.addEventListener('playing', function(){ myVid.setCurrentTime(5); });