Je cherche à placer une vidéo dans une page HTML5 qui commencera à être chargée au chargement de la page et, une fois terminée, à revenir au début sans interruption. La vidéo doit également avoir PAS associé à des commandes et être compatible avec tous les navigateurs "modernes" ou avoir l'option d'un remplissage multiple.
Auparavant, je l'aurais fait via Flash
et FLVPlayback
, mais je préférerais éviter Flash
dans la sphère HTML5. Je pense que je pourrais utiliser setTimeout
de javascript pour créer une boucle fluide, mais que dois-je utiliser pour intégrer la vidéo elle-même? Existe-t-il quelque chose qui diffuse la vidéo comme FLVPlayback
?
L'attribut boucle devrait le faire:
<video width="320" height="240" autoplay loop>
<source src="movie.mp4" type="video/mp4" />
<source src="movie.ogg" type="video/ogg" />
Your browser does not support the video tag.
</video>
Si vous rencontrez un problème avec l'attribut loop (comme auparavant), écoutez l'événement videoEnd
et appelez la méthode play()
lors de son déclenchement.
Note 1: Je ne suis pas sûr du comportement sur l'iPad/iPhone d'Apple, car ils ont certaines restrictions contre autoplay
.
Note2: loop="true"
et autoplay="autoplay"
sont obsolètes.
Depuis avril 2018, Chrome (ainsi que plusieurs autres principaux navigateurs) maintenant obligatoire l'attribut muted
aussi.
Par conséquent, vous devriez utiliser
<video width="320" height="240" autoplay loop muted>
<source src="movie.mp4" type="video/mp4" />
</video>
Pour l'iPhone, cela fonctionne si vous ajoutez aussi playsinline:
<video width="320" height="240" autoplay loop muted playsinline>
<source src="movie.mp4" type="video/mp4" />
</video>
Vous pouvez le faire des deux manières suivantes:
1) Utilisation de l'attribut loop
dans l'élément video (mentionné dans la première réponse):
2) et vous pouvez utiliser l'événement média ended
:
window.addEventListener('load', function(){
var newVideo = document.getElementById('videoElementId');
newVideo.addEventListener('ended', function() {
this.currentTime = 0;
this.play();
}, false);
newVideo.play();
});