Menu Zavřít

Naživo a z první řady. Jihoafrická firma chce změnit svět sportovního streamování, čeští DEPO Ventures budou u toho

14. 6. 2021
Autor: Redbullcontentpool.com
  • Jihoafrický startup Pulse vyvíjí streamovací platformu zaměřenou na sdílení ryze sportovních videí

  • Jedná se o videa natočená kamerami připnutými na těle samotného sportovce, tedy takzvané POV

  • Česká investiční skupina DEPO Ventures jim na další rozvoj přispěla částkou 75 tisíc eur (asi 1,9 milionu korun)


Nese název Pulse a v našich končinách zatím příliš známá není. Pokud se ale této začínající firmě z jihoafrického Kapského města podaří dotáhnout do úspěšného konce projekt, na který v rámci aktuálního investičního kola získala zatím 275 tisíc eur (zhruba sedm milionů korun), dost možná o ní uslyší třeba i na druhém konci světa.

Mladý startup se totiž zabývá vývojem produktu, jehož prostřednictvím chce divákům nabídnout jedinečné živé záběry outdoorových sportovců z jejich pohledu (takzvaný režim POV – z anglického point of view). Podobně jako je to běžné například u streamování videoher.

Miliardář Karel Janeček vsadil na esport. Koupil podíl v profesionálním českém týmu Entropiq
Přečtěte si také:

Miliardář Karel Janeček vsadil na esport. Koupil podíl v profesionálním českém týmu Entropiq

„Chceme, aby Pulse bylo synonymem pro Twitch v oblasti sportu,“ nechal se slyšet jeden ze zakladatelů Armand du Plessis. „Aby sportovci - ať profesionálové, nebo amatéři - měli možnost prožít sportovní výkon v plném přenosu. Současná investice nám tak pomůže v rozšíření našeho týmu, dokončení nejdůležitějších funkcí a přilákání těch správných sportovců, kteří se stanou motivací pro ostatní,“ doplnil.

Jejich platforma by měla být dostupná jak na počítači, tak na chytrém telefonu, přičemž vedle sdílení samotných záběrů budou mít její uživatelé mimo jiné například i možnost spolu navzájem konverzovat.

Časem to půjde i bez popruhů

Zpočátku hodlá Pulse při streamování sázet na osvědčené akční kamery GoPro, na které při filmování svých sportovních i nesportovních výkonů spoléhají lidé doslova z celého světa. Svoji vůbec první kameru, která nabízela možnost živého vysílání, uvedla firma na trh již v září roku 2018, a to v podobě zařízení Hero7 Black. Od té doby je taková funkce de facto standardem.

Do budoucna by nicméně startup chtěl disponovat vlastním produktem, na jehož vývoji už teď pracuje s finskou společností Haltian. Cíl je jednoduchý – udělat kamery pohodlnější pro samotné atlety, tedy zbavit je potřeby nosit na sobě nejrůznější popruhy a další úchytné prvky.

Co se konkrétních sportů týče, diváci budou moci sledovat především záběry běžců, lezců nebo cyklistů. Pokud si ale platforma získá přízeň dostatečného množství fanoušků i uživatelů, lze tušit, že se rozšíří také na ostatní druhy outdoorových aktivit.

Z Kapského města až do Čech

Přestože firma Pulse vznikla až v daleké Jihoafrické republice, na potenciální proměně světa sportovního streamování by díky ní mohli mít jistou formu zásluh i Češi. Jedním ze subjektů, který v rámci aktuálního investičního kola tento projekt podpořil, byla totiž zdejší investiční skupina DEPO Ventrures. Ta do zmíněné firmy prostřednictvím svého fondu Grouport vložila částku 75 tisíc eur (přibližně 1,9 milionu korun).

Nesnesu, když věci stojí a nevyvíjí se, říká Pavel Kacerle. S Live Penalty propojuje virtuální svět s realitou
Přečtěte si také:

Nesnesu, když věci stojí a nevyvíjí se, říká Pavel Kacerle. S Live Penalty propojuje virtuální svět s realitou

„Pro naše investice sice hledáme partnery zejména v oblasti střední a východní Evropy, spolupracujeme však s několika projekty i mimo tento region. A právě takovým je i jihoafrický Pulse, ke kterému nás dovedl jeden ze členů týmu Pulse a současně člen našeho angel networku, který je z Česka. Nebýt této spojky, pravděpodobně by k investici nedošlo,“ sdělil exkluzivně redakci Euro.cz zakladatel a zároveň šéf DEPO Ventures Petr Šíma.

WT100_25

Oním investorem, jenž společně s ostatními zajistili startupu Armanda du Plessise dodatečných 200 tisíc eur (přes pět milionů korun), je Přemysl Trojan, dlouhodobě žijící právě v Kapském městě.

  • Našli jste v článku chybu?
'; 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'; } }