;(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

ANÁLISE

Casimiro bomba na Copa do Qatar e vira dor de cabeça para a Globo

Casimiro Miguel faz lives que duram 8 horas - Reprodução/Twitter
Casimiro Miguel faz lives que duram 8 horas Imagem: Reprodução/Twitter

De Splash, em São Paulo

28/11/2022 17h46

Quando abriu mão da exclusividade de transmitir a Copa do Mundo nos canais digitais, a Globo não contava com o concorrente que surgiu e vem se consolidando após uma semana do mundial do Qatar: Casimiro Miguel. O streamer, que rejeita a TV aberta em nome da sua independência, viu a Cazé TV bater recordes durante a transmissão da vitória do Brasil contra a Suíça pelo YouTube.

Os números preliminares, verificados durante o jogo, mostram que Casimiro fez a maior transmissão online de futebol do Brasil e emplaca como uma das lives mais assistidas simultaneamente da história recente do YouTube. Foram 4,85 milhões de espectadores simultâneos no serviço do Google, mais 331 mil pessoas na Twitch.

Segundo a plataforma PlayBoard, que analisa todas as transmissões desde janeiro de 2020, a transmissão mais assistida no período era até então a do lançamento de um foguete da SpaceX, de Elon Musk, que reuniu 4,08 milhões de espectadores em maio daquele ano. O YouTube não faz um ranking sobre qual seria a maior transmissão, mas o jornal britânico The Guardian registra que, em 2012, a queda do paraquedista supersônico Felix Baumgartner foi acompanhada por mais de 8 milhões de pessoas.

No início do ano, o site Metrópoles noticiou uma oferta da Globo para contratar Casimiro. Em entrevista recente ao colunista de Splash Lucas Pasin, o streamer disse não ter tido propostas da TV aberta, mas adiantou que, caso cheguem, as ofertas serão recusadas por ele.

"A TV aberta pede um formato diferente, e o meu não caberia lá. Esse contato direto com o público é algo difícil para eles, são mundos diferentes. Não vejo como uma concorrência, mas sim como mundos complementares", afirmou Casimiro ao UOL. Os mundos de fato são complementares, ainda há audiência para todos — a Globo fez os dois melhores números de ibope do ano nas partidas da seleção — mas é certo de que as alternativas surgem em um mercado publicitário em que não há dinheiro infinito.

É de se compreender a decisão de Casimiro. Além de estar fazendo história com um canal que leva seu nome, o streamer conseguiu, mantendo a sua autenticidade, fazer algo que antes só parecia possível através da Globo: transmitir grandes jogos. Antes da Copa, só nesse ano ele fez campeonatos estaduais e o Brasileirão nas suas plataformas, além da Copa do Brasil em parceria com o Amazon Prime Video.

Tudo isso ao modo de Casimiro. As transmissões têm bastante humor, tanto nos comentários da partida em si quanto na reportagem in loco, além dos comentários espontâneos e humanos que fizeram o streamer ser bem sucedido. Em um comentário bonito, ele direcionou um agradecimento especial a motoristas e entregadores por aplicativos, médicos e enfermeiros e outras categorias que não suspenderam o trabalho para assistir aos jogos, "mas que estão conseguindo dar uma espiadinha aqui pela live".

Não que a Globo esteja jogando parada. A emissora proporcionou transmissões ao vivo pela Globo.com e pelo Globoplay, com a volta momentânea de Tiago Leifert ao esporte do grupo. Mas os números e a presença de grandes patrocinadores na transmissão de Casimiro mostram que há uma concorrência robusta a caminho. Na internet, além de Globo e Cazé TV, os jogos am no Fifa+, streaming da federação. O Star+, do grupo Disney, adquiriu o direito de compactos dos jogos. Quem não pagou tem direito apenas a trechos, com delay.

O streamer precisou de um acordo com a LiveMode, empresa parceira da Fifa para as transmissões digitais, para viabilizar a cobertura. Segundo o colunista do UOL Marcel Rizzo, a Fifa buscava um rosto capaz de representar uma concorrência ao domínio do grupo Globo nas plataformas digitais, diante do receio de grandes empresas de streaming de disputar a preferência do público com as plataformas da emissora.

Casimiro é único — e os seus resultados à frente das câmeras mostram isso. Mas na Copa do Qatar, ele está abrindo uma avenida pela qual outros criadores de conteúdo e empresas certamente tentarão trafegar nos próximos anos, ainda mais diante da perspectiva da Globo não ter mais a exclusividade em TV aberta e fechada a partir do mundial de 2026. Resta saber se terão o mesmo sucesso.

Errata: este conteúdo foi atualizado
O texto informava anteriormente que a live de Casimiro poderia ser confirmada como a mais vista simultaneamente da história do YouTube. No entanto, em 2012, uma exibição do paraquedista supersônico Félix Baumgartner foi acompanhada por mais de 8 milhões de pessoas, segundo o jornal The Guardian. O texto foi atualizado.

** Este texto não reflete, necessariamente, a opinião do UOL