Tipos de Encoding Saiba o que é e como funciona

Olá, seja bem vindo ao Go-Live, eu sou Silas Oliveira.

Você já montou os seus equipamentos, escolheu a sua internet, suas câmeras, seus microfones. E agora se depara com uma tela de configuração entre o seu computador e o servidor que irá multiplicar o seu sinal. E agora? Você sabe como preencher todas essas lacunas, com números e nomenclaturas que talvez você não conheça?

Eu tive uma experiência relacionada a este assunto. A primeira vez que eu fiz uma transmissão ao vivo pela internet em uma igreja, nos Estados Unidos, eu tive o cuidado de transmitir a melhor qualidade de imagem possível. Porém , eu comecei a perceber que durante o evento, algumas pessoas começaram a deixar a transmissão e os números começaram a cair. Aqueles números que estavam bem altos no começo, agora na metade do evento, já
tinham caído pela metade. Então, descobri que a imagem estava saindo picotada na internet, as pessoas começaram a perder o interesse por conta disso.

O que estava acontecendo de errado? Será que isso tinha a ver com meu encoding?

Assim como na câmera, que existem configurações que dependem uma da outra como, por exemplo, a velocidade do obturador depende da abertura que, depende do ISO e assim como um tripé que controlamos da
mesma forma. Isso também aplica no streaming, existem configurações que dependem uma das outras para que tudo possa funcionar bem e garantirmos uma transmissão de sucesso.

Sim, esta é uma aula teórica! Mas é muito importante para o seu dia a dia!

Ao saber coisas como codex, container, protocolos, bit rate, thread, kingfriend e resolução, aprenderemos como elas impactarão na sua qualidade e capacitando a configurar rapidamente a sua transmissão de forma ideal.

O que é codec?

A palavra CODEC vem da junção do início das palavras “compressão“ e “descompressão“. A compactação é essencial para que os filmes possam ser armazenados, transmitidos e reproduzidos de forma eficaz. Em um projeto, é bem capaz acabe utilizando vários codecs em diferentes estágios.

Você sabia que existem codecs de captura e são eles que nós utilizamos na maior parte do tempo em nossas câmeras? É deles que nós vamos falar primeiro! Quando você está gravando e tem pouco espaço para armazenar o seu vídeo, provavelmente vai querer o codec que utiliza menos espaço. Mas se está envolvido em um projeto e quer extrair a melhor qualidade, vai querer o codec que possa trazer a melhor qualidade de imagem possível. Para isso, você irá utilizar um codec que irá compactar menos e isso irá resultar em arquivos muito maiores.

Dois itens muito importantes para os codecs de gravação: A profundidade de Bit e o chroma subsampling. A profundidade determina a quantidade de cores que codec da câmera tem a capacidade de reconhecer e registrar. Nas câmeras de 12 bit, por exemplo, cada canal RGB vai utilizar a 12 bit para um total de 36. O que isso significa? Significa que vai acabar com 4.096 cores diferentes disponíveis para recriar sua imagem. Por causa câmeras salvar tantas cores diferentes, exigirá um espaço extra considerável de armazenamento em sua mídia. Você irá utilizar esse tipo de câmera não em uma transmissão ao vivo, mas sim na gravação de um clipe, talvez na gravação de um show ou até mesmo na gravação de um filme.

Já as câmeras com codecs de 8 bits são muito mais comuns e podemos obter ótimas imagens com elas. Cada canal RGB utiliza 8 bits de dados, o que significa aproximadamente 256 valores diferentes de cores possíveis por canal.  Você pode pensar, “de 4.096 para 256 há uma diferença gigantesca. Será que eu não devo utilizar, então, uma câmera 12 bits para fazer a minha transmissão ao vivo?“. Bem, na verdade não precisa de toda essa qualidade.
Essa qualidade vai ser mais utilizada dentro do campo da pós-produção, quando precisar fazer ajuste de cores, mexer na imagem e fazer coisas que vão além do simples fato de observar ou assistir aquele vídeo. Então, quando se trata de uma transmissão ao vivo, você precisa entregar a imagem pronta. Você não vai passar por um processo de pós-produção, a não ser que tenha aí uma RED dando sopa.

A melhor opção no seu caso, é utilizar uma câmera de 8 bit. Ela irá fazer o trabalho com bastante qualidade. Eu utilizei o exemplo da câmera de 12 bit em comparação com a 8 bit, para que você possa entender um pouco desse
universo de cores. Mas o mercado também oferece câmeras com um valor acessível, como a Panasonic GH5 que oferece 10 bit de cores, e também NX5 porque é uma câmera broadcast muito utilizada para transmissão ao vivo que também utiliza 10 bit de cores. Também iremos encontrar no mercado outras câmeras com mais de 12 bit, como as de 16 bit. Enfim, são câmeras com capacidade de capturar um número imenso de cores.

Outra forma do seu codec de gravação compactar a imagem, é através de chroma subsampling. Achou essa palavra difícil? Então leia ela em português: sub-amostragem de crominância. Agora subsampling ficou mais fácil, né?!

A amostragem de croma 4.4.4 é a melhor opção que você pode ter. Um grupo de 4 pixels, cada cor individual de pixels será salva. Nenhuma informação de cor é perdida, portanto, a qualidade da imagem é melhor ao custo de mais  informações, ocupando mais espaço na sua mídia.

Quando a taxa de amostragem é de 4.2.2, em um grupo de 4 pixels, 2 deles desconsiderarão sua própria cor e obterão a cor do pixel ao lado, em um esforço para perder informações e economizar espaço em sua mídia.

A taxa de amostragem mais comum é a 4.2.0. Do mesmo grupo de 4 pixels, 3 desconsiderarão sua cor e assumirão a cor de um restante. Isso economizará muito mais espaço para no final. Enfim, é assim que funcionam os codecs de gravação.

Você já conhecia esses codecs? Por acaso você sabia que eles estão presentes em todas as câmeras utilizadas hoje no mercado? E que todas as
vezes que colocamos nossa mão numa câmera estaremos em contato com
algum deles.

Mas como esse é um curso de transmissão ao vivo, vamos prosseguir. Agora vamos falar de codecs utilizados para streaming.

O codec mais utilizado para uma transmissão ao vivo é o H.264. Principalmente, quando se trata de compactação, armazenamento, distribuição e principalmente transmissões ao vivo. Este em formato H.264 já possui a sua
versão mais atualizada, que é o H.265, permitindo que façamos o mesmo trabalho, utilizando aproximadamente metade do espaço. Ou seja, você vai ter a mesma qualidade de imagem e utilizando a sua mídia de uma forma muito
melhor, armazenando o dobro da quantidade de vídeos que conseguimos através do H.264. Este novo formato permite que você tenha vídeos em resolução de até 8K.

Agora vamos falar sobre os codecs de áudio. Um deles é o AAC (Advance Audio Codec ou Codificação Avançada de Áudio), que é uma compressão de áudio digital com perdas. Quando a Apple lançou o Ipod, ela popularizou esse  codec de áudio. É por isso que muitos acreditam que ela é proprietária deste codec, mas na verdade, não é.

Agora o codec de áudio mais conhecido por todos, o MP3, que é uma compressão de áudio digital com perdas e é o padrão para compressão de áudio sem fim. Esses dois são os codecs de áudio mais utilizados.

“Mas afinal qual devo utilizar?“. Se você tem a opção de utilizar o AAC, essa seria a melhor opção. Por ser um codec mais leve com uma qualidade superior, ele vai te trazer mais qualidade de áudio usando uma taxa menor de
transmissão.

E os containers?

Containers são arquivos que contém seus fluxos de vídeo e áudio. Geralmente incluem metadados e dados de close caption. Todos os contêineres são geralmente associados à extensão do arquivo, por exemplo, ponto MOV, ponto MP4, ponto MP3, etc...

Os mais comuns para transmissão são .MP4 (o mais comum deles), tem também um container WMV que foi desenvolvido pela Microsoft, conhecido como o Windows Media Video. O que a Apple tem é QuickTime, conhecido como MOV. Existe também o MPEG-RS que significa Transport System (Sistema de Transporte de MPEG). O FLV Flash Vídeo Format (formato de vídeo em flash) que é desenvolvido pela Adobe, e no início das transmissões ao vivo era mais utilizado, hoje já tem perdido muito o seu uso e tem sido substituído pelo MP4. E por último, temos O OGG, formato de container aberto, uma espécie de open source dos containers. Ele é mantido pela scipy.org.

Durante o meu trabalho, eu me deparo bastante com esses dois container: MP4 e MOV. Eles fazem diferença para mim. Quis mencionar os containers para que, durante o processo de transmissão ao vivo, você também entenda a respeito dos arquivos você irá criar para armazenar e fazer um backup da sua transmissão dentro do seu computador. Então é importante que você saiba que o MP4 é mais adequado para o ambiente do Windows e o MOV é mais importante para o ambiente do Mac. Mas afinal, o que é realmente importante, é o que está dentro do contêiner.

E agora nós já sabemos o que são codecs, o que são containers, mas e os protocolos? O que são os protocolos?

São métodos como os dados são trocados entre computadores, como os dados são formatados, como os dados são enviados, como são recebidos e como os erros são manipulados, existem protocolos baseados em IP e HTTP.  Os protocolos baseados em IP, por exemplo, são RTP (Real Time Transport Protocol) ,e existem também RTMP (Real Time Messaging Protocol).

IP foi desenvolvido pela Macromedia e depois foi adquirido pela Adobe, é um protocolo padrão para transmissões ao vivo pela internet. Os softwares mais comuns como o arqués, ubs, vmix sempre utilizaram em RTMP para fazer a transmissão ao vivo pela internet. Além disso, se você olhar para todos os serviços de streaming que estão disponíveis por aí, como por exemplo, youtube, facebook, entre outros, todos ingerem esse protocolo RTMP. Então na hora de escolher o seu protocolo, lembre-se do RTMP.

Protocolos baseados em http: existe por exemplo o HLS (HTTP Live Streaming da Apple) e é reproduzida em todas as plataformas. Adobe também lançou HDS (HTTP Dynamic Streaming). Microsoft lançou o
Microsoft Movie Streaming que requer o plugin do silverlight para reprodução do navegador. Talvez você se deparou com esse plugin na hora de assistir o netflix pelo seu computador. Tem o DASH que é independente de codec, ele pode ser executado em qualquer codec que você use para sua compactação. Os especialistas consideram DASH como futuro da reprodução. E para finalizar, temos também dentro do HTTP, o RTMP que requer flash. A apple não oferece suporte ao flash em nenhum dos seus dispositivos IOS. Agora o Google Chrome e todos os outros navegadores também estão descartando suporte ao flash por não ser um plugin seguro.

Agora você já entende o que são protocolos e como fazer a melhor escolha para a sua transmissão ao vivo. Você já aprendeu a respeito dos codecs, sua função é de compactar o arquivo de vídeo, de áudio ou os dois
ao mesmo tempo. A sua finalidade é fazer com que o transporte seja mais fácil. Mas em que proporção que codec vai trabalhar? Qual é o tamanho limite mínimo ou máximo para que esse arquivo seja compactado?

O que vai definir isso é a taxa de bits, o Bitrate. O que é e para o que serve? Em português, Bitrate quer dizer taxa de bits, que significa quando você utilizar uma taxa mais baixa, o codec irá comprimir muito mais o vídeo
para trazer um resultado de um arquivo menor. Se você a taxa a qualidade do vídeo, vai ficar melhor, é claro. Mas também o tamanho do arquivo ficará maior. Você precisa compreender o mínimo do básico em relação às taxas de bits de cada plataforma, como youtube e facebook, assim por diante. É possível encontrarmos no site dessas plataformas quais são as taxas mínimas e as taxas máximas para que você possa fazer uma transmissão com segurança, mas não é só isso. O que vai permitir uma determinada taxa, é também a velocidade da sua internet e a capacidade de encodar o vídeo, ou seja, de compactar o vídeo dentro do seu computador. Então antes de escolhermos uma taxa, devemos pensar, “eu tenho um computador com potência suficiente para fazer a compressão nesta taxa?“, se sim, beleza. “Tenho uma internet rápida o suficiente para enviar essa taxa para o meu servidor
streaming?“ Sim. “Essa taxa que eu escolhi vai trazer uma imagem boa para minha audiência?“ Se sim, então você está no caminho certo.

O segredo para poder escolher a taxa de bits correta, é saber balancear entre qualidade de imagem, som e segurança. Porque no um momento de definirmos as taxa de bit baseada na qualidade, você precisa confirmar, ou seja, calcular se essa taxa vai ser possível ser transmitida com segurança. Por exemplo a plataforma do YouTube, ela recomenda que no vídeo de resolução Full HD, que é 1920 por 1080, a taxa seja de 5.000 kbps, o que significa que a sua taxa será compactada, com o objetivo de atingir 5.000 kbps bits por segundo. Durante esse processo de compactação, o seu encoder vai fazer o possível para chegar neste número de 5.000 kbps. Isso não siginifica que será um número estável, ele irá oscilar entre 3.000 até 7.000 kbps. A partir daí, vamos precisar de uma internet que tenha a capacidade de enviar até 10.000 kbps, para que tenhamos uma margem de segurança durante essa oscilação.

E para uma resolução Full HD 60fps, que significa 60 quadros por segundo, o Youtube recomenda que você envie uma taxa de 7.000 kbps. Caso você queria saber sobre resoluções menores e inferiores, leia o nosso material de apoio. Ali temos uma linha em várias resoluções e quais são as suas taxas de bits recomendadas.

E por falar em 60fps, você sabe o que é isso? É é uma sequência de imagens rapidamente exibidas na tela em sucessão, proporcionando a ilusão de movimento. O número de quadros exibidos a cada segundo é conhecido como taxa de quadros, e é medido em quadros por segundo (FPS). A desvantagem de uma qualidade maior, no entanto, é que as taxas de quadros maiores necessitam de um volume maior de dados, utilizando mais largura de banda.

Então, se você pretende fazer uma transmissão ao vivo numa resolução de 1080 Full HD, e em 60 fps (60 quadros por segundo), você estará enviando muito mais dados para o servidor, que irá multiplicar essa informação. Então, precisaremos de uma estrada maior para trafegar todos esses dados. Ou seja, a sua internet deve ser mais veloz para ter capacidade de fazer com que essa função seja realizada de forma segura, sem ficar interrompendo a imagem, como eu expliquei no início dessa aula.

Mas e para receber essa imagem? Como a minha audiência irá receber essa imagem?
Neste caso do YouTube, ele irá receber o seu sinal e irá multiplicar este sinal em diferentes taxas de bits. Isso se torna uma ferramenta muito útil durante uma transmissão ao vivo, porque se a pessoa está assistindo num dispositivo móvel, irá receber uma taxa bem menor, porque a sua tela é menor, e também o seu sinal de internet é inferior.

Se a pessoa está usando uma internet de velocidade média, ela receberá uma versão do seu sinal em uma taxa média. Mas se a pessoa tem uma internet super veloz, com capacidade de receber o sinal por completo, então o Youtube irá automaticamente enviar o sinal para essa pessoa com toda a qualidade que você está enviando.

Ainda falando sobre essa taxa de 60 fps, é uma quantidade de quadros muito utilizada por gamers, por exemplo. Quando eles estão transmitindo um jogo de videogame, precisam que a taxa seja alta para que as pessoas possam a ter todos os detalhes do jogo, ou seja, acompanhar o jogo da mesma maneira que eles estão vendo ali enquanto estão jogando.

Também é muito utilizada por youtubers que querem se destacar, porque quando temos 60 quadros, a sensação de quem está assistindo é como se estivessem com uma pessoa ali na sua frente, diferente dos 24 fps que é
utilizado a dentro do cinema.

O cinema utiliza 24 fps porque quer trazer a sensação de uma história sendo contada, para poder transmitir algo mais lúdico, diferente dos youtubers que utilizam a taxa de 60 fps que querem trazer algo mais
real. Vale lembrar que nem todas as plataformas que irão reproduzir o seu sinal, ou seja, os servidores, irão reproduzir o seu sinal em diversas qualidades, como o Youtube faz. Algumas plataformas vão exigir que envie as três opções diferentes direto do seu computador, o que vai exigir ainda mais da sua CPU e da sua internet.

O outro fator de configuração que você irá se deparar ao preparar uma transmissão ao vivo pela internet, é o Keyframe. O que é isso?

Se você está fazendo uma transmissão de 30fps, que são 30 quadros por segundo, são 30 imagens durante um segundo que forma um vídeo/imagem em movimento, que dão a ilusão de movimento, iremos definir dentro desses quadros com que frequência você terá frame chave por segundo. Quadro que será responsável para indicar o encoder, quais são as imagens que a seguir, serão diferenciadas. Ou seja, se tivermos uma pessoa parada em frente a uma parede branca ou cinza, e ela está simplesmente falando, o que key frame irá indicar para os outros frames que, por exemplo, a parede não saiu do lugar e ela não vai se mover. Isso fará com que o encoder já saiba dessa informação, e ele possa fazer o restante, ou seja, ele irá compactar aquilo que está sendo alterado ou modificado.

No caso um movimento. Por exemplo, os movimentos das minhas mãos. A partir, você vai estar otimizando o processo de compactação, diminuindo o esforço que o encoder estará fazendo para trazer um vídeo a menor, com uma qualidade boa, aceitável.

Quando que você vai se deparar com isso? Justamente na hora de você preencher aquele formulário que aparece no soft a transmissão, ou talvez, dentro da própria plataforma. Ali, você vai ter que indicar qual é a frequência de key frames. Em alguns softwares, ele estará perguntando a quantos frames você quer que um seja o chave, em relação ao intervalo em segundos,  e outros estarão falando em relação ao
intervalo em frame. Fique bastante atento para que não confunda na hora de escolher o seu keyframe.

E por último, mas não menos importante, vamos falar sobre a resolução. Afinal, o que é resolução de vídeo?

É o tamanho da imagem que está sendo capturada pela sua câmera. Por exemplo, antigamente, nós tínhamos aquelas TVs quadradas com turbo, ela apresentava uma imagem com resolução de 480, que era o padrão daquela época. Mais para frente, o mercado ofereceu o outro tipo de resolução, a resolução HD (high definition), em português é alta definição, com as opções de 720 e 1080, mais conhecida como Full HD.

Logo depois, do mercado ofereceu um passo mais acima. Uma resolução ainda maior, o 4K. Hoje no mercado já temos 8K, 12K e não sabemos onde isso vai parar. “Mas como definir então, a resolução que usarei na minha transmissão?“, isso vai depender da sua câmera, dos seus equipamentos e o público que você quer transmitir a sua mensagem. Se você tem uma câmera Full HD, equipamento HD, não significa que você deve fazer todas as suas
transmissões em Full HD. Você também precisa pensar no público que está enviando a sua mensagem.

Agora, se você tem uma câmera 480, um equipamento 480, você não vai conseguir enviar o seu sinal em Full HD, porque você está limitado a uma resolução inferior. Se você quer ter opções, tenha sempre a resolução
mais alta para que seja possível ter a opção de reduzir o tamanho da sua resolução.

Com isso, nós encerramos essa aula teórica e muito importante para sua carreira como um profissional de transmissão ao vivo pela internet.

Se ficou com dúvida, você pode rever ler todos esses conceitos quantas vezes necessário. Não deixe de participar do nosso grupo de debate.

Lembrando que você pode rever essas informações quantas vezes quiser, pelo blog ou canal do Youtube.

Te vejo na próxima, tchau.