Pandemie trvá. Potrvá také trend videokonferencí?

6. 1. 2021

Sdílet

Autor: © skvoor - Fotolia.com
Co čeká videokonference v roce 2021, aneb jak na nové trendy reagují vývojáři i uživatelé.

Během pandemického roku 2020 se technologie staly nepostradatelným nástrojem komunikace prakticky pro většinu firem. Tu vůbec nejzásadnější roli sehrály nástroje pro videokonferenci. S nástupem roku 2021 jsou videohovory už tak výraznou součástí korporátního života, o jaké se nám loni touto dobou vůbec nesnilo.

Zoom – ještě před pár měsíci nepříliš známá platforma – se stal natolik populárním, že se z jeho názvu stalo dokonce sloveso. Jen během prvních dvou měsíců loňského roku svou uživatelskou základnu zdvojnásobil a v dubnu hlásil dosažení mety 300 milionů uživatelů. Microsoft se pro změnu v červnu chlubil, že jeho Teams jsou dokonce ještě populárnější než Zoom a v průběhu roku platformu vybavoval novými funkcemi. V současnosti se k Teams denně připojuje víc než 115 milionů uživatelů.

Zoom statistiky od dubna nezveřejnil, a ač každá společnost uživatele, meetingy a jejich účastníky počítá jinou metodikou, jedno je jisté. Videokonference tu s námi už zůstanou. Zvlášť, jestli pandemie potrvá. Co tedy v této oblasti můžeme v roce 2021 čekat?

Co si žádají uživatelé

Když zaměstnanci teprve začínali měnit své obýváky v kanceláře, řada firem, které dosud na videokonference nebyly zvyklé, musela vyřešit v zásadě jednoduché otázky. Budou příslušné aplikace uživatelsky přívětivé? Efektivní? Zvládne celý tým komunikovat v rámci jediného hovoru? Není se tak co divit, že většina novinek, se kterými přední hráči v průběhu uplynulých měsíců přicházeli, se týkala vylepšování základní uživatelské zkušenosti. Teď je čas posunout se dál.

Integrace AR a AI

Dnes už má většina firem v reakci na pandemii stanovenou strategii, takže mohou žádat inovativnější novinky, které použití videokonferenčních nástrojů ještě vylepší. Požadavky přitom budou vycházet ze zkušeností s jinými platformami a aplikacemi. Týkat se mohou například schopnosti vizualizace dat s pomocí rozšířené reality či většího zapojení umělé inteligence například při vyhledávání souborů přímo během meetingů, automatický scheduling diskutovaných termínů nebo automatické přepisy/zápisy porad. Ostatně, někteří vývojáři už základní AI funkcionalitu začali do svých produktů implementovat a je jen otázkou času, než se z ní stane standard.

Integrované whiteboardy

Dle Mikea Fascianiho z analytické společnosti Gartner se poptávanými stanou zejména nástroje pro vizualizaci typu whiteboardů. Řada platforem je sice už nabízí, jejich funkcionalita je však jen základní, stěží konkurenceschopná možnostem, které nabízí tabule při skutečných schůzkách.

„Zájem klientů o tyto funkce, díky nimž budou na dálku produktivní stejně jako při osobním setkání, roste,“ komentuje Fasciani.

Bezpečnost, bezpečnost, bezpečnost

Nakolik je zabezpečení videokonferenčních nástrojů zásadní, ukázala už na jaře kauza Zoomu, jehož uživatelé byli nějakou dobu vystaveni tzv. zoombombingu, dokonce u soudu se pak společnost musela bránit, že nesdílí data s Facebookem. Problémy měla i konkurence. Dle odborníků se však do zajištění zabezpečení musí aktivně zapojit i firmy, které budou stále hojněji přecházet na model zero trust, tedy princip nulové důvěry. Koneckonců, zmíněné problémy se Zoomem byly zčásti zapříčiněné samotnými uživateli, kteří své konference dostatečně nezabezpečili. I proto důvěra v aplikaci nezaznamenala výraznější šrámy.

Prostor pro nováčky

S ohledem na oblibu zmíněného Zoomu či Teams odborníci neočekávají, že by do segmentu videokonferenčních aplikací výrazněji promluvili noví hráči. Pro koho je však vzestup videokonferencí příležitostí, jsou firmy specializované právě na bezpečnost.

Nové výzvy

Jednou z největších výzev videokonferencí bude zdokonalit proces jejich demokratizace. Jinými slovy, jak co nejhladším způsobem propojit účastníky sedící ve firmě a ty na home office.

„Ti, kteří nebyli přítomni, se zpravidla drželi stranou, byli opomíjeni nebo se hůř dostávali ke slovu,“ vysvětluje Fasciani. Tento problém zčásti eliminuje situace, kdy jsou všichni účastníci vzdáleni a tedy v komunikaci si rovni. S postupným návratem na pracoviště však nepochybně znovu vyvstane.

prace_s_linuxem_tip

Průzkumy ukazují, že jedna firma v současnosti využívá v průměru čtyři různá videokonferenční řešení. Jelikož ale takový model není udržitelný a toto množství se bude snižovat, vývojáři musí pečlivě zvažovat, jakou hodnotu svým produktům přidají. Roli přitom může hrát i spolehlivost související se sílou a stabilitou internetového připojení. Někteří výrobci už na ní začali pracovat, jelikož je jasné, že uživatel v případě nekvalitního spojení viní v prvé řadě aplikaci, nikoliv kvalitu připojení.

Perspektivou videokonferenčních nástrojů tak můžeme konstatovat, že rok 2020 byl rokem, kdy si lidé začali uvědomovat, že internet je místem, zatímco zaměstnání s místem nutně spjato být nemusí. Na jejich výrobcích tak je na tuto změnu vnímání začít reagovat.

'; 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'; } }
OSZAR »