Ich möchte ein Video in eine HTML5-Seite einfügen, die beim Laden der Seite wiedergegeben wird, und nach Abschluss ohne Unterbrechung zum Anfang zurückkehren. Das Video sollte auch NICHT mit Steuerelementen verknüpft sein und entweder mit allen "modernen" Browsern kompatibel sein oder die Option einer Polyfüllung haben.
Früher hätte ich das über Flash
und FLVPlayback
gemacht, aber ich würde es vorziehen, mich von Flash
in der HTML5-Sphäre fernzuhalten. Ich denke, ich könnte Javascript's setTimeout
verwenden, um eine glatte Schleife zu erstellen, aber was soll ich verwenden, um das Video selbst einzubetten? Gibt es da draußen etwas, das das Video wie FLVPlayback
streamen würde?
Das loop Attribut sollte es tun:
<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>
Sollten Sie ein Problem mit dem Schleifenattribut haben (wie in der Vergangenheit), hören Sie sich das Ereignis videoEnd
an und rufen Sie die Methode play()
auf, wenn es ausgelöst wird.
Hinweis 1: Ich bin mir über das Verhalten auf dem iPad/iPhone von Apple nicht sicher, da es einige Einschränkungen für autoplay
gibt.
Hinweis 2: loop="true"
Und autoplay="autoplay"
Sind veraltet
Ab April 2018 ist Chrome (zusammen mit mehreren anderen wichtigen Browsern) jetzt erforderlich auch das Attribut muted
.
Deshalb solltest du verwenden
<video width="320" height="240" autoplay loop muted>
<source src="movie.mp4" type="video/mp4" />
</video>
Für das iPhone funktioniert es, wenn Sie auch playsinline so hinzufügen:
<video width="320" height="240" autoplay loop muted playsinline>
<source src="movie.mp4" type="video/mp4" />
</video>
Sie können dies auf zwei Arten tun:
1) Verwenden des Attributs loop
im Videoelement (in der ersten Antwort erwähnt):
2) und Sie können das Medienereignis ended
verwenden:
window.addEventListener('load', function(){
var newVideo = document.getElementById('videoElementId');
newVideo.addEventListener('ended', function() {
this.currentTime = 0;
this.play();
}, false);
newVideo.play();
});