Passei muito tempo tentando descobrir por que o vídeo incorporado como aqui:
<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>
começa a tocar automaticamente quando a página é carregada no FireFox, mas não pode ser reproduzida automaticamente em navegadores baseados no Webkit. Isso aconteceu apenas em algumas páginas aleatórias. Até agora não consegui encontrar a causa. Eu suspeito que algumas tags não fechadas ou extensas JS criadas pelos editores do CMS.
javascript
html
google-chrome
safari
webkit
Adam Bubela
fonte
fonte
Respostas:
A melhor solução que consegui foi adicionar esse código logo após o
</video>
... não é bonito, mas de alguma forma funciona.
ATUALIZAÇÃO Recentemente, muitos navegadores só podem reproduzir automaticamente os vídeos com o som desativado, portanto, você também precisará adicionar
muted
atributo à tag de vídeofonte
$("videoID").get(0).play();
stackoverflow.com/questions/4646998/…$("video[autoplay]").each(function(){ this.play(); });
Depois de usar a
play()
manipulação de jQuery ou DOM, conforme sugerido pelas outras respostas, ele ainda não estava funcionando (o vídeo não estava sendo reproduzido automaticamente) no Chrome para Android (versão 56.0).De acordo com esta postagem em developers.google.com , no Chrome 53, a opção de reprodução automática é respeitada pelo navegador, se o vídeo estiver desativado .
Portanto, o uso de
autoplay muted
atributos na tag de vídeo permite que o vídeo seja reproduzido automaticamente nos navegadores Chrome a partir da versão 53.Trecho do link acima:
fonte
muted
eautoplay
fez o truque. Obrigado!Acontece que o Safari e o Chrome no Desktop não gostam da manipulação do DOM na tag do vídeo. Eles não acionarão a ordem de reprodução quando o atributo de reprodução automática estiver definido, mesmo que o evento canplaythrough tenha sido disparado quando o DOM em torno da tag do vídeo for alterado após o carregamento inicial da página. Basicamente, tive o mesmo problema até excluir um jQuery .wrap () em torno da tag do vídeo e depois reproduzir automaticamente conforme o esperado.
fonte
.get(0)
ou apenas$('#vid')[0].play()
Você pode conferir aqui
então basta adicionar silenciado
fonte
Para mim, o problema era que o
muted
atributo precisava ser adicionado àvideo
tag. Ou seja:fonte
O Chrome não permite a reprodução automática de vídeo com som ativado. Portanto, adicione
muted
atributos àvideo
tag como estafonte
Acabei de receber o mesmo problema com o meu vídeo
Após a pesquisa, encontrei uma solução:
Se eu definir os atributos "preload" como "true", o vídeo começará normalmente
fonte
Adicionar o código abaixo na parte inferior da página funcionou para mim. Não sei por que funciona :(
fonte
fonte
var video = document.querySelector('video'); video.muted = true; video.play()
Somente essa solução me ajudou,
<video autoplay muted ...>...</video>
não funcionou ...fonte
Nenhuma das outras respostas funcionou para mim. Minha solução alternativa foi acionar um clique no próprio vídeo; hacky (por causa do tempo limite necessário), mas funciona bem:
fonte
Recentemente, resolvemos um problema semelhante com um vídeo incorporado e descobrimos que os atributos de reprodução automática e sem áudio não eram suficientes para nossa implementação.
Adicionamos um terceiro atributo "playsinline" ao código e ele corrigiu o problema para usuários do iOS.
Essa correção é específica para vídeos que devem ser reproduzidos em linha. De https://webkit.org/blog/6784/new-video-policies-for-ios/ :
No iPhone, agora os elementos poderão ser reproduzidos em linha e não entrarão automaticamente no modo de tela cheia quando a reprodução começar. elementos sem atributos de reprodução em linha continuarão a exigir o modo de tela cheia para reprodução no iPhone. Ao sair da tela cheia com um gesto de pinça, os elementos sem reprodução em linha continuarão sendo reproduzidos em linha.
fonte
Política de reprodução automática atualizada do Google. A reprodução automática funciona apenas no modo mudo. Verifique o link https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
fonte
Tente o seguinte:
É assim que eu normalmente faço. loop, controles e reprodução automática não exigem um valor, eles são atributos booleanos.
fonte
Isso ocorre porque agora o chrome está impedindo a reprodução automática em vídeo html5; portanto, por padrão, eles não permitem a reprodução automática. para que possamos alterar essas configurações usando as configurações do sinalizador de cromo. isso não é possível para o caso normal, então eu encontrei outra solução. isso está funcionando perfeitamente ... (add preload = "auto")
fonte
Passei duas horas tentando todas as soluções mencionadas acima.
Isto é o que finalmente funcionou para mim:
fonte
No iPhone do safari, quando o amanteigado está baixo e o iphone está no modo de baixa energia, ele não será reproduzido automaticamente, mesmo se você tiver os seguintes atributos: reprodução automática, loop, silenciado, reprodução em linha definida na tag html do vídeo.
Por aí, achei que trabalhar é ter um evento de gestos do usuário para acionar a reprodução de vídeo:
você pode ler mais sobre o gesto do usuário e as Políticas de vídeo para iOS no site do kit:
https://webkit.org/blog/6784/new-video-policies-for-ios/
fonte
Eu tive um caso em que isso tinha algo a ver com a ordem dos diferentes tipos de arquivos. Tente mudar e veja se isso ajuda.
fonte
Comecei a reproduzir todos os vídeos visíveis, mas os telefones antigos não estavam funcionando bem. Então, neste momento, reproduzo o vídeo mais próximo do centro da janela e faço uma pausa no resto. JS de baunilha. Você pode escolher qual algoritmo prefere.
fonte
Eu resolvi o mesmo problema com,
Você precisa iniciar os vídeos depois que a página for exibida.
fonte
Tente trocar
autoPlay
porautoplay
.Parece ser sensível a maiúsculas às vezes. Muito bizarro porque funcionou como
autoplay
para mim, mas somente se eu incluíssecontrols
fonte