Spielen volle HTML5-video und-dann-Schleife einen Abschnitt davon
Ich versuche zu spielen, eine 8.6 zweiten video einmal komplett, und dann Schleife einen kleinen Abschnitt des Videos unendlich, um die illusion eines nie enden wollenden video. So weit ich geschaut habe, in der media fragments URI, und die beendet - Ereignis des video. Einstellung der currentTime-Attribut in das ended-Ereignis-listener funktioniert, aber es macht das video zu "blinken".
Zur Zeit bin ich mit einem timeupdate event-listener, um die Zeit zu ändern, wenn das video nähert sich dem Ende [unten abgebildet]
elem.addEventListener('timeupdate', function () {
if (elem.currentTime >= 8.5) {
elem.currentTime = 5;
elem.play();
}
}, false);
JSFiddle hier
Dies funktioniert auch, aber das video pausiert sichtbar vor dem Neustart in 5 Sekunden. Gibt es eine weichere Art zu spielen das video einmal an und dann looping ein segment davon?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie die folgende, auf "rewind" so bald wie es endet:
Aktualisiert fiddle: http://jsfiddle.net/Lt4n7/1/
$(function(){ var vidElem = $("#bgvid>VIDEO")[0]; vidElem.addEventListener("ended", function () { vidElem.currentTime = 21; vidElem.play(); }, false); });
currentTime
und sofort spielen, so müssen Sie eine Verzögerung zwischen jeder Schleife. Mit zwei videos (leider) zuverlässiger.Ich nur zu tun hatte mit dem gleichen problem, und bemerkt die gleichen Probleme mit flackern. Hier war meine Lösung:
Dann nur erfassen das ended-Ereignis-und swap-anzeigen status (Beispiel jquery verwendet, aber man könnte 'Stil.display="none/block", " nur als leicht:
Dein code ist in Ordnung, das problem mit der MP4 Datei! Versuchen Sie es mit einem viel kleineren video wie dieses ( http://www.w3schools.com/tags/movie.mp4 ), um zu bestätigen, dass das Problem nicht mit deinem code.
Also, wie können Sie das gleiche Ergebnis erzielen, aber mit großen Video-Dateien?
Sie müssen zwei video-Dateien:
Denken Sie daran: HTML5-video-hat keine Probleme beim Abspielen und Loopen große video-Dateien, so werden wir diese Methode verwenden, um das Abspielen der videos.
Unten im Beispiel spielen wir das erste video und wenn es fertig ist werden wir eine Funktion ausführen zu verbergen video1 und dann show/Spiel-video2. (Video 2 ist schon in Schleife)
Vergessen Sie nicht, laden Sie JQuery in Ihrem Kopf sonst wird das nicht funktionieren.
Können Sie nicht, lösen Sie dieses Problem in javascript. Die Verzögerung, die Sie sehen, hängt von der video-Kompression und der hardware.
Anfangen zu spielen in einer Zeit, die nicht 0 ist, ist der video-decoder hat, zurück zu gehen und finden eine Schlüssel-frame und erstellen Sie das aktuelle Bild durch das Lesen alles, was zwischen dem letzten Keyframe und der von Ihnen gewählten Zeit.
Ich bin nicht ein Experte im video-Kompression, aber vielleicht gibt es einen Weg zu wählen, diese key-frames und legen Sie Sie genau wo Sie Sie brauchen. Ich glaube nicht, es wird einfach und glatt, aber.
Wenn Sie suchen für eine einfachere Lösung, verwenden Sie @Random ist, aber es verwendet zwei
<video>
tags zu arbeiten, um dieses limit.JS:
HTML:
//Bitte beachten Sie, dass die loop-Attribut sollte nicht dort sein, im video-element, um für die "beendet" - Ereignis funktioniert auch im ie und firefox