;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Ricardo Feltrin

Exclusivo: Streaming já tem mais ibope que TV paga no Brasil

Michael Jordan em cena do (fantástico) documentário "The Last Dance", disponível na Netflix - Reprodução do YouTube
Michael Jordan em cena do (fantástico) documentário "The Last Dance", disponível na Netflix Imagem: Reprodução do YouTube

Colunista do UOL

09/06/2020 00h18

Hoje teremos aqui informações que representam possivelmente um marco divisor no entendimento da mídia televisiva no Brasil e no comportamento do público espectador.

Dados exclusivos obtidos por esta coluna mostram que em maio, pela primeira vez, o ibope de quem consome conteúdo por streaming superou o ibope da TV paga.

Segundo esses dados, no mês ado a audiência geral de conteúdo em streaming (visto em aparelhos de TV) foi de 6,9 pontos e 14,6% de share na média nacional.

Esse índice foi obtido na faixa entre 7h e 0h, também conhecida como "faixa comercial" da TV aberta e por , nas 15 maiores regiões metropolitanas).

Em comparação, no mesmo horário e mesmas regiões, a audiência dos canais pagos foi de 6,7 pontos e 14,1% de share.

Cada ponto nessa medição vale por cerca de 250 mil domicílios.

Mesmo na média das 24 horas do dia o streaming também mostra sua força: empatou em 5,7 pontos com a TV por , mas teve 14,7% de share (um décimo a mais que a mídia rival).

Share é a participação de um conteúdo no universo de TVs ligadas. Então, para exemplificar, 14,7 de cada 100 TVs ligadas no país estavam vendo conteúdo por streaming.

Nessa medição, chamada PNT Geral, estão incluídas todas as formas de conteúdo consumidas nos aparelhos de TV monitorados pela Kantar Ibope Media no país.

A saber: TV aberta, TV paga, streaming e até uso do aparelho para games ou ver DVDs.

O streaming tem vivido uma explosão mundial devido a seu baixo custo (em relação à TV paga), comodidade de consumo e variedade de conteúdo.

Sobe e desce

É importante dizer que esse consumo de streaming se refere a TUDO que as pessoas veem nesse formato em suas TVs. Celulares e tablets não estão incluídos nessa medição.

Esse é o conteúdo em streaming que a família que tem um aparelhinho de medição de ibope instalado em casa (chamado de "peoplemeter") assiste por meio de sua(s) TV(s).

Isso inclui a Netflix, a GloboPlay, a Amazon Prime, o YouTube, UOL Play, o serviço PlayPlus (Record), Google Films (e também conteúdos adultos como XVideos) etc.

Rainha Netflix

Não há dados isolados de cada serviço, mas é evidente que a Netflix é o carro-chefe desse consumo.

Fontes consultadas por esta coluna apontam que a Netflix pode já ter atingido no Brasil mais de 15 milhões de s —ou seja, pode já ter se igualado ou até ultraado o total de s da TV paga no país.

Oficialmente a Netflix diz que a "única" informação oficial que tem já foi revelada a esta coluna em setembro do ano ado —quando itiu ter ado dos 10 milhões de s no Brasil.

No entanto, mesmo à época, o serviço já reconhecia que o número estava desatualizado e se referia não a setembro, mas a abril de 2019.

Ao mesmo tempo a TV paga vem enfrentando uma volumosa sangria de s nos últimos anos.

Desde o final de 2014, pós Copa do Mundo no Brasil, a TV paga perdeu cerca de 1 em cada 4 s.

No final daquele ano havia quase 20 milhões de s. Hoje há pouco mais de 15 milhões.

Os problemas crônicos do setor da TV por no país já são sabidos, notórios e foram diversas vezes repisados nesta coluna: pacotes caros, canais "inúteis" impostos na marra aos s, programação repetitiva, excesso de intervalos, atendimento precário, problemas técnicos; e, claro, o "boom" da pirataria.

TV aberta ainda é forte

Embora também em queda, a TV aberta continua se mostrando relevante e segue liderando com folga o consumo de mídia em tela.

Com a crise econômica, o desemprego, a queda de s na TV paga e a disseminação da TV digital (que melhorou sobremaneira a qualidade dda transmissão), a TV aberta ainda se mantém como o principal conteúdo consumido pelas famílias brasileiras.

Como amostra, basta dizer que, segundo a Kantar Ibope, nessa faixa das 7h à 0h, mais de 60% dos aparelhos de TV ligados no país está sintonizado em alguma TV aberta.

Só a Globo representa mais de 30% desses aparelhos. Sem falar que o Grupo Globo ocupa um espaço semelhante também com seus canais na TV paga.

Ricardo Feltrin no Twitter, Facebook, Instagram e site Ooops