A reprodução automática é compatível com computadores e dispositivos móveis na Web.
A partir do Chrome 53 e do iOS 10, o Android e o iPhone são compatíveis com a reprodução automática inline silenciada.
O Safari 11 para computador mudou a forma de processar vídeos de reprodução automática. O Google Chrome fez uma mudança semelhante em abril de 2018.
Se o seu site reproduz vídeos automaticamente, atualize-o para lidar com essas novas políticas. A nova amostra de código de tentativa de reprodução automática mostra como tentar reproduzir um vídeo automaticamente e voltar ao clicar para reproduzir se a reprodução falhar. Este guia orienta você pelo novo exemplo.
Detectar o sucesso ou a falha na reprodução automática em um navegador
Atualmente, os navegadores da Web não oferecem uma consulta simples para verificar se a reprodução automática é compatível ou não. A única maneira de conferir se um vídeo pode ser reproduzido automaticamente é tentando reproduzi-lo.
Essa abordagem é demonstrada no snippet de código a seguir:
var contentVideo = document.getElementById('myVideo');
var promise = contentVideo.play();
if (promise !== undefined) {
promise.then(_ => {
// Autoplay worked!
}).catch(error => {
// Autoplay failed.
});
}
Primeiro, o código chama play()
em um elemento de vídeo HTML5 que retorna uma
Promise
. No nosso exemplo, o
Promise
é usado para detectar o recurso de reprodução automática e definir o
AdsRequest
adequadamente.
Reprodução automática e IMA
O SDK do IMA AdsRequest
tem dois campos pertinentes à reprodução automática que você precisa fornecer:
setAdWillAutoPlay
e setAdWillPlayMuted
.
O primeiro garante que o servidor de anúncios retorne apenas anúncios que possam ser reproduzidos automaticamente (se definido como verdadeiro), e o segundo garante que o servidor de anúncios retorne apenas anúncios que podem ser iniciados no estado com ou sem som.
Nosso exemplo usa o conteúdo de vídeo como um indicador da compatibilidade com a reprodução automática no navegador. Faça duas verificações que levam a três possíveis resultados:
Para fazer essas verificações, tente reproduzir o conteúdo de vídeo e observe o Promise
retornado:
var adsInitialized, autoplayAllowed, autoplayRequiresMuted;
// Called on page load.
function init() {
videoContent = document.getElementById('contentElement');
playButton = document.getElementById('playButton');
// Hide the play button unless we need click-to-play.
playButton.style.display = 'none';
// Add an event listener now in case we need to fall back to click-to-play.
playButton.addEventListener('click', () => {
adDisplayContainer.initialize();
adsInitialized = true;
videoContent.load();
playAds();
});
// Create your AdsLoader and AdDisplayContainer here.
setUpIMA();
// Check if autoplay is supported.
checkAutoplaySupport();
}
function checkAutoplaySupport() {
var playPromise = videoContent.play();
if (playPromise !== undefined) {
playPromise.then(onAutoplayWithSoundSuccess).catch(onAutoplayWithSoundFail);
}
}
function onAutoplayWithSoundSuccess() {
// If we make it here, unmuted autoplay works.
videoContent.pause();
autoplayAllowed = true;
autoplayRequiresMuted = false;
autoplayChecksResolved();
}
function onAutoplayWithSoundFail() {
// Unmuted autoplay failed. Now try muted autoplay.
checkMutedAutoplaySupport();
}
function checkMutedAutoplaySupport() {
videoContent.volume = 0;
videoContent.muted = true;
var playPromise = videoContent.play();
if (playPromise !== undefined) {
playPromise.then(onMutedAutoplaySuccess).catch(onMutedAutoplayFail);
}
}
function onMutedAutoplaySuccess() {
// If we make it here, muted autoplay works but unmuted autoplay does not.
videoContent.pause();
autoplayAllowed = true;
autoplayRequiresMuted = true;
autoplayChecksResolved();
}
function onMutedAutoplayFail() {
// Both muted and unmuted autoplay failed. Fall back to click to play.
videoContent.volume = 1;
videoContent.muted = false;
autoplayAllowed = false;
autoplayRequiresMuted = false;
autoplayChecksResolved();
}
function autoplayChecksResolved() {
// Request video ads.
var adsRequest = new google.ima.AdsRequest();
adsRequest.adTagUrl = <YOUR_AD_TAG_URL>;
...
adsRequest.setAdWillAutoPlay(autoplayAllowed);
adsRequest.setAdWillPlayMuted(autoplayRequiresMuted);
adsLoader.requestAds(adsRequest);
}
function onAdsManagerLoaded() {
...
if (autoplayAllowed) {
playAds();
} else {
playButton.style.display = 'block';
}
}
function playAds() {
try {
if (!adsInitialized) {
adDisplayContainer.initialize();
adsInitialized = true;
}
adsManager.init(640, 360, google.ima.ViewMode.NORMAL);
adsManager.start();
} catch (adError) {
videoContent.play();
}
}
Reprodução automática no iPhone
Além do código anterior, a reprodução automática no iPhone exige que você adicione o parâmetro playsinline
à sua tag de vídeo.
index.html
<body>
...
<video id="contentElement" playsinline muted>
<source src="https://storage.googleapis.com/gvabox/media/samples/stock.mp4">
</video>
</body>
Essa mudança no HTML garante que seu conteúdo seja exibido em um player de vídeo inline no iPhone, e não no player de tela cheia padrão do iPhone.
Anúncios em áudio e reprodução automática
É importante considerar se uma solicitação de anúncio retornará anúncios somente em áudio se houver a possibilidade de os anúncios serem reproduzidos automaticamente sem som. Nesse caso, recomendamos uma das seguintes opções:
- Atualize o seguinte parâmetro de URL VAST
ad_type=video
para solicitar somente anúncios em vídeo (se o player for compatível com vídeo). Para mais informações sobre parâmetros de URL, consulte este guia do Ad Manager. - Remova a opção para que os anúncios comecem silenciados.
Consulte o guia de anúncios em áudio do IMA para mais informações sobre integrações de áudio do IMA.