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

Streamers x Twitch: entenda a polêmica sobre os direitos autorais

DisobeyArt - stock.adobe.com
Imagem: DisobeyArt - stock.adobe.com

Thaime Lopes

Colaboração para o START

12/06/2020 04h00

No último fim de semana, a comunidade que utiliza a plataforma Twitch para realizar transmissões ao vivo foi pega de surpresa com a notícia de que teriam que deletar seus vídeos que continham músicas com direitos autorais.

Depois de milhares de streamers expressarem nas redes sociais o descontentamento com a situação, a Twitch finalmente explicou ontem (8) que a ação se deu devido à um pedido enorme de gravadoras que não querem ver as músicas de seus artistas sendo usadas sem autorização.

Sabemos que o assunto é complexo e envolve muitas regras e normas, então tentamos explicar tudo da forma mais simples possível a seguir.

O lado das gravadoras

Nos Estados Unidos, país onde fica a sede da Twitch, existe uma lei sobre direitos autorais chamada (Digital Millenium Copyright Act), que considera ser uma infração quem usa qualquer produção sem autorização do autor. Isso vale, entre outras coisas, para música.

O controle de quem usa ou não uma canção com ou sem autorização é uma supervisão bem difícil de ser feita, já que a internet possibilita o fácil compartilhamento de músicas. A Twitch também segue as diretrizes da , mas, de novo, era complicado fazer o controle geral de cada vídeo postado na plataforma.

E é aí que entraram as gravadoras. Eles possuem uma estrutura enorme para procurar esse tipo de conteúdo que infringe a e, logo, encontraram milhares de vídeos na Twitch com músicas ao fundo, edições, etc. Segundo a plataforma, os pedidos para retirar conteúdo são de 2017 a 2019, então dá para imaginar a quantidade de coisa que vai simplesmente sumir de lá.

No Brasil a situação não é diferente, já que aqui também as músicas possuem direitos autorais e as gravadoras têm o direito de exigir que os vídeos sejam derrubados.

O lado dos streamers

Milhares de produtores de conteúdo da Twitch estão recebendo e-mails informando que um ou mais de seus vídeos violaram a lei e, por isso, foram removidos.

Apesar das diretrizes da plataforma sempre terem proibido a reprodução de músicas sem autorização, a grande maioria dos streamers utiliza músicas durante suas transmissões. Aí o usuário tem apenas duas opções: esperar o Twitch remover seu conteúdo, que pode inclusive chegar a banimento da conta, ou então deletar por conta própria todos os vídeos que continham músicas de uso não autorizado.

A reação da comunidade está sendo bem mista sobre a situação, mesmo já sabendo que essas regras existiam.

Mateus "yetz" Vieira, ex-atleta profissional de League of Legends, comentou a respeito em seu Twitter.

Rafael "cellbit" Lange também deu sua opinião sobre o assunto.

Ismael "Pato Papão" Zimerman, que possui quase 700 mil seguidores no Twitch, deu a dica da galera utilizar trilhas sonoras originais em seus vídeos

Já Leo "Zigueira" Duarte, que joga Rainbow Six pela Team Liquid, achou melhor pedir direto para os artistas o uso de suas músicas

Além de streamers de jogos, o DJ Zegon, da dupla Tropkillaz, comentou que a atitude das gravadoras afeta outras profissões, como músicos que também têm utilizado a Twitch para promover seu trabalho

Para tentar ajudar a galera, muitos músicos foram para as redes sociais defender que suas canções sejam liberadas para as transmissões, como Christian Liu e Dudu MC

O vocalista da banda Fresno, Lucas, fez uma sequência de tweets falando sobre o assunto

A Riot Games, desenvolvedora de League of Legends, Legends of Runeterra e Wild Rift, anunciou que já liberou a trilha sonora de LoL para usarem nas lives.

Alexandre "Gaules" Borba quer ajudar quem quer ter suas músicas divulgadas na plataforma

E agora?

Para evitar um banimento de conta, a Twitch recomenda que todos os produtores de conteúdo da plataforma que utilizaram músicas em seus vídeos deletem os clipes caso não tenham certeza se podem ou não usar aquela produção.

A alternativa, a partir de agora, é procurar por plataformas de músicas que disponibilizem a compra dos direitos autorais ou que possuam opções de músicas liberadas para uso geral.

Algumas ferramentas que podem ajudar os streamers:

  • Pretzel Rocks, plataforma com músicas já licenciadas para uso em transmissões ao vivo, com planos gratuitos e (https://www.pretzel.rocks/)
  • Epidemic Sound, gratuita no primeiro mês e com opções de três planos pagos, cada um com mais vantagem sobre músicas licenciadas do que o outro (https://www.epidemicsound.com/)
  • Monstercat, gravadora canadense, libera suas músicas para streamers a partir de US$5 (https://www.monstercat.com/gold)
  • NCS Music, totalmente gratuita, desde que a música e o artista sejam creditados (https://ncsmusic.com/usage/)
  • Audionautix, também gratuita, permite que você procure música de tudo quanto é estilo (https://audionautix.com/)

SIGA O START NAS REDES SOCIAIS

Twitter: https://twitter.com/start_uol
Instagram: https://www.instagram.com/start_uol/
Facebook: https://www.facebook.com/startuol/
TikTok: http://vm.tiktok.com/Rqwe2g/
Twitch: https://www.twitch.tv/start_uol