Canalys: Dodávky chytrého audia překonaly hranici 90 milionů kusů

10. 6. 2024
Doba čtení: 2 minuty

Sdílet

Autor: Depositphotos
Trh meziročně poskočil o 6 %, analytici poukazují zejména na dosud neprobádaný potenciál sluchátek typu OWS.

Společnost Canalys přináší přehled dění na trhu chytrých osobních audiozařízení, které v prvním čtvrtletí 2024 vykázalo známky oživení. Dodávky podle nejnovějších odhadů meziročně vzrostly o 6 % na 90 milionů kusů.

K pozitivnímu výsledku přispěly především sluchátka typu True Wireless Stereo (TWS) a bezdrátová sluchátka, jejichž dodávky vzrostly o 8 %, resp. 12 %. Hlavní hráči podle analytiků aktivně hledají nové příležitosti pro rozvoj v různých segmentech trhu, což vnáší do odvětví živou vodu.

Graf 1 – Vývoj trhu podle kategorií

Zdroj: Canalys

„Trh TWS se s rostoucím povědomím spotřebitelů ustálil, což vede k tomu, že se prodejci při růstu více spoléhají na cenové strategie,“ komentuje vývoj Jack Leathem z Canalysu.

Například společnost Xiaomi zvýšila svůj podíl na trhu tím, že vstoupila do segmentu střední a nižší třídy s produkty s cenovkou začínající na 15 dolarech. Tím úspěšně překonala Samsung a stala se druhým největším hráčem s růstem o 61 %.

Nastražte boltce, je tu OWS

Canalys rovněž poukazuje na mimořádný potenciál sluchátek typu Open Wearable Stereo (OWS) s konstrukcí, která se zpravidla přichycuje za ušní boltce. Podle analytiků se jedná o dosud neprobádaný segment s malou konkurencí, který navíc zaznamenal v prvním čtvrtletí silný dvouciferný růst.

Má to ale háček. Tento vzkvétající trh se totiž potýká s dominancí špičkových značek ve špičkovém segmentu a nekonzistentní kvalitou základních produktů s bílým štítkem. Zákazníci tak mají se sluchátky tohoto typu ne vždy výtečnou zkušenost, což bude bránit širšímu přijetí.

Graf 2 – Vývoj trhu podle značek a průměrných prodejních cen

Zdroj: Canalys

„Zatímco cenově dostupné produkty mohou přilákat počáteční zájem spotřebitelů, špatné uživatelské zkušenosti povedou k negativnímu vnímání, což ovlivní širší přijetí této kategorie,“ shrnuje Claire Qin z Canalysu.

Prostor pro zajímavou stopu

„Přestože se trh nachází v počáteční fázi oživení s jednociferným růstem, hráči aktivně hledají nové příležitosti, jak diverzifikovat produktové řady a zpřesňovat segmentaci trhu,“ všímá si Cynthia Chen z Canalysu.

Vendoři podle ní zlepšují kvalitu výrobků, optimalizují zacílení a dohlíží na neustálý rozvoj trhu, aby mohli aktivně řešit problémy, které vystanou. Na trhu s velkým potenciálem je podle analytičky čím dál důležitější neusínat na vavřínech a neustále se mít v pozoru co do inovací a diverzifikace.

„Společnosti, které vypilují kvalitu produktů a správně trefí segmentaci trhu, budou v čele a promění svět chytrého osobního audia ve svět s bujnou aktivitou a zajímavým potenciálem,“ uzavírá Cynthia Chen.

Zdroj: Canalys

Čtěte dále

Asbis uzavírá partnerství se specialistou na reproduktory Origin Acoustics
Asbis uzavírá partnerství se specialistou na reproduktory Origin Acoustics
Tomáš Břečka je novým country managerem iStyle
Tomáš Břečka je novým country managerem iStyle
Obrazem: SWS pozvala Krakonoše na inovace a networking
Obrazem: SWS pozvala Krakonoše na inovace a networking
Polovina českých podnikatelů neví, jak se bránit proti kybernetickým útokům
Polovina českých podnikatelů neví, jak se bránit proti kybernetickým útokům
IDC: Cla necla, globální dodávky počítačů by letos měly vyrůst o 4 %
IDC: Cla necla, globální dodávky počítačů by letos měly vyrůst o 4 %
Téměř dvě třetiny firem preferují uchovávat zálohu v cloudu
Téměř dvě třetiny firem preferují uchovávat zálohu v cloudu
'; 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 »