Koronavirus se šíří po YouTube. Tohle je 30 nejlepších předělávek a songů z karantény

14. 4. 2020

Sdílet

 Autor: Chris Mann
Někdo chodí do práce i za současné situace, někdo pracuje doma, ale pak jsou i tací, kteří doma nemají do čeho píchnout. Třeba muzikanti. A tak není divu, že v jejich domácích podmínkách vznikl nespočet písní a parodií na známé melodie s koronavirovou tématikou.

YouTube je jimi takřka zaplavený, a tak si v domácí karanténě můžete užít i hodiny hudby o docházejícím toaletním papíru, domácí nudě, zplošťování křivky nebo chození v teplákách. Za těch několik týdnů karantény se YouTube zaplnil videoklipy a předělávkami známých písní. Bohemian Rhapsody vystřídalo Coronian Rhapsody, Neil Diamond přetextoval svou Sweet Caroline dokonce sám. Vtipné předělávky tvoří nejen nyní nepříliš zaměstnaní zpěváci a kapely, ale také jen hudebně nadaní lidé a celé rodiny. Prošli jsme YouTube, abyste vy už nemuseli. Vybrali jsme 30 těch nejlepších, většinou známých hitů, ale do výběru se dostala se svou předělávkou i česká operní pěvkyně. Na konci (případně i pod každým videem) můžete hlasovat v anketě o tom, které songy se vám líbily. P.S. Každý večer hraje živě ze svého bytu náš bývalý kolega Janek Čarek k tanci i poslechu swing. Sledovat jej můžete na Facebooku SwingHouse.

Coronavirus Rhapsody (Queen: Bohemian Rhapsody)

Bohemian Rhapsody od skupiny Queen. Autoři předělávky: Adrian Grimes a Dana Jay Bein.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Friends in Quarantine (Friends Theme)

Úvodní znělka k seriálu Přátelé od skupiny The Rembrandts. Autorem předělávky je Michael Rose (YouTube).

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Crappy (Pharrell: Happy)

Předělávka songu Happy od Pharrella Williamse. Kromě koronaviru je také o 5G. Autorem je David Scott, který si říká The Kiffness (Instagram).

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Self-Quarantine / Sweet Corona (Neil Diamond: Sweet Caroline)

Sweet Caroline od hudebníka Neila Diamonda. Autorkou první předělávky je youtuberka Deva Dalporto (twitter, blog).

Druhou předělávku vytvořil opět David Scott.

Svou vlastní píseň přetextoval i sám autor Neil Diamond.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Stayin' Inside (Bee Gees: Stayin' Alive)

Pecka od Bee Gees je na Youtube ve více předělávkách, tahle je asi nejlepší. Autorem je Brent McCollough. Jeho písničky lze i zakoupit.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Imagine there’s no bog roll (John Lennon: Imagine)

Slavnou píseň Johna Lennona předělal britský hudebník Matthew Fearon. Povedla se. Podpořit jej můžete i přes mikroplatby.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Wake Me Up When Corona Ends (Green Day: Wake Me Up When September Ends)

Za pět měsíců někdo prosím vzbuďte toho zpěváka z Green Day. Předělávku i s vtipným videem má na svědomí Team Balmert.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

I Don’t Want To Miss A Thing Except It’s About Missing Things (Aerosmith: I Don’t Want To Miss A Thing)

Steve Tyler by byl pyšný. Zpěvák, který si říká Five Times August (Youtube, Spotify), nedělá v poslední době nic jiného než předělávky songů na koronavirus. Tohle je jedna z nich. Škoda jen, že neumí při natáčení otočit mobil na šířku… :)

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Fight the Virus (Simon & Garfunkel: Sound of Silence)

Autorem je Alvin Oon (YouTube) žijící v Singapuru. Hello virus from Wuhan… ♫

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Hello from the Inside (Adele: Hello)

Chris Mann je americký zpěvák, který se mj. účastnil i soutěží The Voice a má za sebou i několik alb. (Twitter, Spotify)

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

I Will Learn 1000 Things (The Proclaimers: 500 Miles)

Píseň 500 Miles od Proclaimers můžete znát třeba díky seriálu How I Met Your Mother. Předělávku stvořil Five Times August (Youtube, Spotify).

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Quaranqueen (Abba: Dancing Queen)

David Scott tento song uvedl jako následek jeho 17. dne karantény. (Instagram, Facebook)

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Ben a Daniella Marsh (Les Misérables: One Day More)

Muzikálně nadaná rodina se pozná. Tahle je z britského Kentu a nazpívali karanténní verzi písničky One Day More z muzikálu Bídníci (Les Misérables). Učitelé historie Ben a Daniella Marsh s jejich třemi dětmi. Originální video není na Youtube, ale na FB na profilu Bena Marshe.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

My Corona (The Knack: My Sharona)

My Sharona se díky svému názvu předělává velmi snadno. Původně singl skupiny The Knack z roku 1979 předělal zpěvák Chris Mann, ale i mnoho jiných.

Další se povedl Stephanie Forryan, která k tomu má i dočasnou kapelu The Quarantines (web).

Pěkná verze je i od Prairie Joe. Ve druhé polovině tohoto medley videa jde již o song Come on Eileen (v další kapitole).

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

COVID 19 (Dexys Midnight Runners: Come on Eileen)

Další písnička, která svým názvem prostě musí být předělána. Come on Eileen britské skupiny Dexys Midnight Runners teď brázdí YouTube v mnoha verzích. První video je od Sama Chaplina.

další od muzikální rodiny Taylorových (YouTube).

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

U Can't Touch This (MC Hammer: U Can't Touch This)

Na nic nesahejte! Od Nicka Savina (Instagram).

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

One Week of COVID 19 (Barenaked Ladies: One Week)

Autorem předělávky je Pepper Coyote (YouTube). V originále jde o song skupiny Barenaked Ladies z roku 1998.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Don't Help Youself (Tom Jones: Don't Help Youself)

Robert T. Leonard napsal předělávku písně Toma Jonese z roku 1968.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Coronavirus Rising (Creedence Clearwater Revival: Bad Moon Rising)

Následuje trocha rockenrolu. Michael Kupris z kapely Crusade.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

My Corona Home (The Beach Boys: Kokomo)

Kokomo od The Beach Boys z roku 1988. Autorem je John Pumper.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Hallelujah (Leonard Cohen: Hallelujah)

Hudebník Charles Only (web) z New Jersey nahrál karanténní verzi Hallelujah od Leonarda Cohena.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

What To Watch Tonight (Eric Clapton: Wonderful Tonight)

Eric Clapton a Wonderful Tonight z roku 1977. V podání Five Times August.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

I Will Survive / The Toilet Paper Pandemic (Gloria Gaynor: I Will Survive)

Gloria Gaynor v roce 1978 poprvé zazpívala chytlavou píseň I Will Survive. Bez skrupulí a s úplně jiným nádedech ji nyní předělal Neil Hopkins. Chudák jeho kočka…

A také americký učitel Michael Bruening (web), kterému se stýská (nebo naopak) po studentech.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

I Get Lock Down (Chumbawamba: Tubthumping)

David Scott a předělávka hitu I Get Knocked Down z roku 1997 na I Get Locked Down.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Coronavirus Torn (Natalia Imbruglia: Torn)

Herečka Kathy Mak (IMDB) z Hongkongu nazpívala (ač o tón mimo) píseň Torn. Pikantní na tom je, že ji najdete na Youtube kanálu čínského magazínu South China Morning Post.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

We're All About Those Hands (Meghan Trainor: All About The Bass)

Jedna edukativní na umývání rukou.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Quarantine (Dolly Parton: Jolene)

Autor: Girth Choakum

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

Stay The F*ck at Home

Autor: Bob E. Kelly

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

You've Got COVID-19 (Randy Newman: You've Got a Friend in Me)

Autor: Tony Parenti

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

My Favourite Things (Julie Andrews: My Favourite Things)

Předělávka z muzikálu Za zvuků hudby (The Sound of Silence).

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

(BONUS) Miroslava Časarová - Koronárie aneb Žalozpěv jedné operkyně

Česká operní pěvkyně Miroslava Časarová (Instagram) vtipně předělala píseň Rusalky o měsíčku.

Který „koronasong“ se vám nejvíce líbí? (lze zvolit více možností)

zdroje: YouTube

Autor článku

Nadšenec do notebooků a příznivce kompaktních smartphonů. Najdete mě na Twitteru nebo LinkedInu.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »