Chcę umieścić wideo na stronie HTML5, które zacznie się odtwarzać przy wczytywaniu strony, a po zakończeniu zapętlać z powrotem do początku bez przerwy. Film NIE powinien również mieć żadnych powiązanych elementów sterujących i być kompatybilny ze wszystkimi „nowoczesnymi” przeglądarkami lub mieć opcję polyfill.
Wcześniej robiłbym to za pomocą Flash
i FLVPlayback
, ale wolałbym unikać Flash
w sferze HTML5. Myślę, że mógłbym użyć JavaScript setTimeout
do stworzenia płynnej pętli, ale czego powinienem użyć do osadzenia samego wideo? Czy jest coś, co będzie przesyłać strumieniowo wideo w taki sposób FLVPlayback
?
źródło
javascript
na tymvideoEnd
, że użyłem do nasłuchiwania zdarzenia i wracając do początku, z tego, co wiem,loop
atrybut nie jest obsługiwany przez wszystkie przeglądarki. W przypadku urządzeń z systemem iOS nie obsługują oneautoplay
w żaden sposób kształtu ani formy przez iOS 5, więc właśnie użyłem obrazu zastępczego dla urządzeń mobilnych. Dzięki jeszcze raz.autoplay
działa tylko w Safari, jeśli używasz równieżmuted
: webkit.org/blog/7734/auto-play-policy-changes-for-macosOd kwietnia 2018 r. Chrome (wraz z kilkoma innymi głównymi przeglądarkami) również wymaga tego
muted
atrybutu.Dlatego powinieneś użyć
<video width="320" height="240" autoplay loop muted> <source src="movie.mp4" type="video/mp4" /> </video>
źródło
W przypadku iPhone'a to działa, jeśli dodasz również playsinline, więc:
<video width="320" height="240" autoplay loop muted playsinline> <source src="movie.mp4" type="video/mp4" /> </video>
źródło
autoPlay loop muted playsInline
Możesz to zrobić na dwa sposoby:
1) Korzystanie z
loop
atrybutu w elemencie wideo (wspomnianym w pierwszej odpowiedzi):2) i możesz skorzystać z
ended
wydarzenia medialnego:window.addEventListener('load', function(){ var newVideo = document.getElementById('videoElementId'); newVideo.addEventListener('ended', function() { this.currentTime = 0; this.play(); }, false); newVideo.play(); });
źródło