Spędziłem sporo czasu, próbując dowiedzieć się, dlaczego osadzono wideo w ten sposób:
<video height="256" loop autoplay muted controls id="vid">
<source type="video/mp4" src="video_file.mp4"></source>
<source type="video/ogg" src="video_file.ogg"></source>
</video>
rozpoczyna odtwarzanie automatycznie po załadowaniu strony do FireFox, ale nie może odtwarzać automatycznie w przeglądarkach opartych na Webkit. Zdarzyło się to tylko na niektórych przypadkowych stronach. Jak dotąd nie udało mi się znaleźć przyczyny. Podejrzewam jakieś niezamknięte tagi lub rozbudowany JS stworzony przez redaktorów CMS.
javascript
html
google-chrome
safari
webkit
Adam Bubela
źródło
źródło
Odpowiedzi:
Najlepszą poprawką, jaką mogłem uzyskać, było dodanie tego kodu tuż po
</video>
... nie ładne, ale jakoś działa.
AKTUALIZACJA Ostatnio wiele przeglądarek może automatycznie odtwarzać filmy tylko z wyłączonym dźwiękiem, więc musisz też dodać
muted
atrybut do tagu wideoźródło
$("videoID").get(0).play();
stackoverflow.com/questions/4646998/ ...$("video[autoplay]").each(function(){ this.play(); });
Po użyciu
play()
manipulacji jQuery lub DOM, jak sugerowały inne odpowiedzi, nie działał (film nie odtwarzał się automatycznie) w przeglądarce Chrome na Androida (wersja 56.0).Zgodnie z tym postem w developers.google.com , w Chrome 53, opcja autoodtwarzania jest respektowana przez przeglądarkę, jeśli wideo jest wyciszone .
Dlatego użycie
autoplay muted
atrybutów w tagu wideo umożliwia automatyczne odtwarzanie wideo w przeglądarkach Chrome od wersji 53.Wyciąg z powyższego linku:
źródło
muted
iautoplay
załatwiło sprawę. Dzięki!Zdarza się, że Safari i Chrome na komputerze nie lubią manipulacji DOM wokół tagu wideo. Nie uruchomią kolejności odtwarzania, gdy atrybut autoplay jest ustawiony, nawet jeśli zdarzenie canplaythrough zostało uruchomione, gdy DOM wokół tagu wideo zmienił się po początkowym załadowaniu strony. Zasadniczo miałem ten sam problem, dopóki nie usunąłem .wrap () jQuery wokół tagu wideo, a następnie automatycznie odtwarzał się zgodnie z oczekiwaniami.
źródło
.get(0)
lub po prostu$('#vid')[0].play()
Możesz sprawdzić tutaj
więc po prostu dodaj wyciszony
źródło
Dla mnie problem polegał na tym, że
muted
atrybut musiał zostać dodany wvideo
tagu. To znaczy:źródło
Chrome nie pozwala na automatyczne odtwarzanie wideo z włączonym dźwiękiem, więc pamiętaj, aby dodać
muted
atrybut dovideo
tagu w ten sposóbźródło
Właśnie pojawił się ten sam problem z moim wideo
Po wyszukiwaniu znalazłem rozwiązanie:
Jeśli ustawię atrybuty „preload” na „true”, wideo rozpocznie się normalnie
źródło
Dodanie poniższego kodu na dole strony zadziałało. Nie wiem, dlaczego to działa :(
źródło
źródło
var video = document.querySelector('video'); video.muted = true; video.play()
Tylko to rozwiązanie pomogło mi,
<video autoplay muted ...>...</video>
nie zadziałało ...źródło
Żadna z pozostałych odpowiedzi nie działała dla mnie. Moje obejście polegało na wywołaniu kliknięcia samego wideo; hacky (z powodu wymaganego limitu czasu), ale działa dobrze:
źródło
Niedawno rozwiązaliśmy podobny problem z osadzonym filmem i stwierdziliśmy, że atrybuty autoodtwarzania i wyciszenia nie były wystarczające do naszej implementacji.
Dodaliśmy trzeci atrybut „playsinline” do kodu i rozwiązaliśmy problem z użytkownikami iOS.
Ta poprawka dotyczy tylko filmów, które mają być odtwarzane w tekście. Od https://webkit.org/blog/6784/new-video-policies-for-ios/ :
Na iPhonie elementy będą teraz mogły być odtwarzane w tekście i nie będą automatycznie przechodzić do trybu pełnoekranowego po rozpoczęciu odtwarzania. elementy bez atrybutów playsinline będą nadal wymagały trybu pełnoekranowego do odtwarzania na iPhonie. Po wyjściu z trybu pełnoekranowego gestem szczypania elementy bez odtwarzania w linii będą nadal odtwarzane w linii.
źródło
Zaktualizowaliśmy zasady Google dotyczące automatycznego odtwarzania. Autoodtwarzanie działa tylko w trybie wyciszenia. Sprawdź link https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
źródło
Spróbuj tego:
Tak zwykle robię. loop, kontrolki i autoodtwarzanie nie wymagają wartości, które są atrybutami logicznymi.
źródło
Dzieje się tak, ponieważ teraz Chrome uniemożliwia automatyczne odtwarzanie w wideo HTML5, więc domyślnie nie zezwala na automatyczne odtwarzanie. więc możemy zmienić te ustawienia za pomocą ustawień flagi chrome. nie jest to możliwe w normalnym przypadku, więc muszę znaleźć inne rozwiązanie. to działa idealnie ... (dodaj preload = "auto")
źródło
Spędziłem dwie godziny próbując wszystkich wyżej wymienionych rozwiązań.
Oto, co w końcu zadziałało:
źródło
Na iPhonie safari, gdy poziom naładowania jest niski, a iPhone jest w trybie niskiego zużycia energii , nie będzie odtwarzany automatycznie, nawet jeśli masz następujące atrybuty: autoodtwarzanie, pętla, wyciszenie, odtwarzanie w linii w tagu HTML wideo.
Spacer po tym, jak odkryłem, działa to, aby zdarzenie gestu użytkownika wyzwalało odtwarzanie wideo:
Możesz przeczytać więcej o gestach użytkownika i zasadach dotyczących wideo na iOS w witrynie Webkit:
https://webkit.org/blog/6784/new-video-policies-for-ios/
źródło
Miałem przypadek, w którym miało to coś wspólnego z kolejnością różnych typów plików. Spróbuj to zmienić i zobacz, czy to pomaga.
źródło
Zacząłem od odtwarzania wszystkich widocznych filmów, ale stare telefony nie działały dobrze. Więc teraz odtwarzam jedno wideo, które jest najbliżej środka okna, a resztę wstrzymuję. Vanilla JS. Możesz wybrać preferowany algorytm.
źródło
Rozwiązałem ten sam problem z
Musisz uruchomić filmy po wyświetleniu strony.
źródło
Spróbuj zamienić
autoPlay
naautoplay
.Czasami wydaje się, że wielkość liter ma znaczenie. Bardzo dziwne, bo jak
autoplay
dla mnie zadziałało , ale tylko pod warunkiem, że to zrobięcontrols
źródło