Autoodtwarzanie jest obsługiwane na komputerach i urządzeniach z przeglądarką mobilną.
Od wersji Chrome 53 i iOS 10 Android i iPhone obsługują autoodtwarzanie z dźwiękiem bez dźwięku.
W przeglądarce Safari 11 na komputery zmieniono sposób obsługi autoodtwarzania filmy. Google Przeglądarka Chrome wprowadziła podobną zmianę w kwietniu 2018 r.
Jeśli Twoja witryna obecnie automatycznie odtwarza filmy, zaktualizuj do obsługi tych nowych zasad. Nowy kod Próba autoodtwarzania kodu fragment pokazuje, jak spróbować automatycznie odtworzyć film i wrócić do kliknij, aby odtworzyć, jeśli autoodtwarzanie się nie powiedzie. W tym przewodniku zapoznasz się z nową próbką.
Wykrywanie udanego lub niepowodzenia autoodtwarzania w przeglądarce
Obecnie przeglądarki nie oferują prostego zapytania, by sprawdzić, czy autoodtwarzanie lub nie. Jedynym sposobem na sprawdzenie, czy film może być autoodtwarzany, jest spróbuj odtworzyć to.
To podejście zostało zaprezentowane w tym fragmencie kodu:
var contentVideo = document.getElementById('myVideo');
var promise = contentVideo.play();
if (promise !== undefined) {
promise.then(_ => {
// Autoplay worked!
}).catch(error => {
// Autoplay failed.
});
}
Kod najpierw wywołuje play()
w elemencie wideo HTML5, który zwraca
Promise
W naszym przykładzie parametr
Promise
jest używany do wykrywania funkcji autoodtwarzania i ustawiania
AdsRequest
.
w odpowiedni sposób.
Autoodtwarzanie i IMA
Pakiet IMA SDK AdsRequest
ma 2 pola związane z autoodtwarzaniem. W rezultacie:
źródło:
setAdWillAutoPlay
.
i setAdWillPlayMuted
.
Pierwszy zapewnia, że serwer reklam zwraca tylko te reklamy, które mogą
ma być autoodtwarzana (jeśli ma wartość Prawda), przy czym drugi gwarantuje, że serwer reklam
zwraca tylko te reklamy, które mogą się uruchamiać z wyciszonym lub wyłączonym wyciszeniem.
W naszym przykładzie filmowy pokazuje, czy przeglądarka
obsługuje autoodtwarzanie. Wykonaj 2 czynności, których efekty będą 3 potencjalne:
Aby dokonać weryfikacji, spróbuj odtworzyć film i spójrz na zwrócone dane
Promise
:
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();
}
}
Autoodtwarzanie na iPhonie
Oprócz poprzedniego kodu autoodtwarzanie na iPhonie wymaga:
aby dodać do tagu wideo parametr playsinline
.
index.html
<body>
...
<video id="contentElement" playsinline muted>
<source src="https://storage.googleapis.com/gvabox/media/samples/stock.mp4">
</video>
</body>
Ta zmiana w kodzie HTML zapewni, że Twoje materiały będą odtwarzane we wbudowanym filmie. na telefonie iPhone zamiast domyślnego pełnoekranowego odtwarzacza iPhone'a.
Autoodtwarzanie i reklamy audio
Trzeba się zastanowić, czy żądanie reklamy zwróci tylko reklamy audio, jeśli możliwe, że reklamy będą automatycznie odtwarzane jako wyciszone. Jeśli jest taka możliwość, zalecamy użycie jednego z tych rozwiązań:
- Zaktualizuj ten parametr adresu URL VAST
ad_type=video
, aby żądać tylko reklam wideo (jeśli Twój odtwarzacz obsługuje wideo). Więcej informacji o parametrach adresu URL znajdziesz w tym przewodniku po Ad Managerze. - Usuń opcję wyciszenia reklam.
Zobacz przewodnik po reklamach audio IMA .