O que é streaming ao vivo? | Como funciona o streaming ao vivo

Streaming ao vivo é a distribuição, pela internet, de dados de vídeo ou de áudio a um público assim que os dados são criados.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Saiba por que os arquivos de vídeo são codificados
  • Aprenda como funciona a codificação de live streaming
  • Descubra como as melhorias no processo de codificação de live streaming pode reduzir a latência

Copiar o link do artigo

O que é live streaming?

Streaming é o método de transmissão de dados usado quando alguém assiste a vídeos na internet. É uma forma de transmitir um arquivo de vídeo um pouco de cada vez, muitas vezes a partir de um local de armazenamento remoto. Ao transmitir alguns segundos do arquivo por vez pela internet, os dispositivos clientes não precisam baixar o vídeo inteiro antes de começar a reproduzi-lo.

Streaming ao vivo se refere ao vídeo que é transmitido e enviado pela internet em tempo real, sem que seja primeiramente gravado e armazenado. Atualmente, transmissões de TV, streamings de videogame e vídeos de mídia social podem ser transmitidos ao vivo.

Pense na diferença entre streaming normal e streaming ao vivo como sendo a diferença entre um ator recitando um monólogo memorizado e improvisando um discurso. No primeiro, o conteúdo é criado de antemão, armazenado e depois transmitido para o público. No segundo, a audiência recebe o conteúdo no mesmo momento em que o ator o cria, da mesma forma que em um streaming ao vivo.

O termo streaming ao vivo geralmente se refere a transmissões ao vivo: conexões de um para muitos que alcançam vários usuários ao mesmo tempo. Tecnologias de videoconferência como Skype, FaceTime e Google Hangouts Meet trabalham com base nos protocolos de comunicação em tempo real (RTC) em vez dos protocolos usados pelas transmissões de streaming ao vivo de um para muitos.

Como funciona o streaming ao vivo em termos técnicos?

Estas são as principais etapas que ocorrem nos bastidores de um streaming ao vivo:

Captura de vídeo

O streaming ao vivo começa com dados de vídeo brutos: as informações visuais capturadas por uma câmera. Dentro do dispositivo de computação ao qual a câmera está conectada, essa informação visual é representada como dados digitais. Em outras palavras, números 1 e 0 no nível mais profundo.

Compactação e codificação

Em seguida, os dados do vídeo segmentado são compactados e codificados. Os dados são compactados removendo-se informações visuais redundantes. Por exemplo, se o primeiro quadro do vídeo exibir uma pessoa falando contra um fundo cinza, o fundo cinza não precisa ser renderizado para todos os quadros subsequentes que tiverem o mesmo fundo.

Pense na compactação de vídeo como sendo semelhante a colocar um móvel novo em uma sala de estar. Não é necessário comprar móveis inteiramente novos cada vez que uma nova cadeira ou mesa lateral for acrescentada. Em vez disso, é possível manter o layout da sala praticamente o mesmo e mudar apenas uma peça de cada vez, fazendo ajustes maiores ocasionalmente, conforme necessário. Da mesma forma, nem todos os quadros de um streaming de vídeo precisam ser renderizados: apenas as partes que mudam de quadro para quadro, como o movimento da boca de uma pessoa.

"A codificação" se refere ao processo de conversão de dados em um novo formato. Os dados do streaming de vídeo são codificados em um formato digital interpretável reconhecida por uma grande variedade de dispositivos. Os padrões comuns de codificação de vídeo incluem:

Segmentação

O vídeo inclui muitas informações digitais e é por isso que leva mais tempo para baixar um arquivo de vídeo do que um arquivo PDF pequeno ou uma imagem. Como não seria prático enviar todos os dados do vídeo pela internet de uma só vez, o streaming de vídeo é dividido em segmentos menores com alguns segundos de duração.

Distribuição e armazenamento da CDN em cache

Depois que o streaming ao vivo é segmentado, compactado e codificado (tudo isso leva apenas alguns segundos), ele precisa ser disponibilizado para as dezenas ou milhões de espectadores que desejam assisti-lo. A fim de manter a alta qualidade com o mínimo de latência enquanto envia o streaming para vários espectadores em diferentes locais, uma CDN deve distribuí-lo.

Uma CDN é uma rede distribuída de servidores que armazenam em cache e enviam conteúdo em nome de um servidor de origem. O uso de uma CDN resulta em desempenho mais rápido, pois as solicitações dos usuários não precisam mais viajar até o servidor de origem podendo, em vez disso, ser gerenciadas por um servidor de CDN próximo. Gerenciar solicitações e distribuir conteúdo dessa forma também reduz a carga de trabalho do servidor de origem. Por fim, as CDNs permitem enviar conteúdo aos usuários ao redor do mundo de maneira eficiente porque seus servidores estão localizados em todo o mundo em vez de estarem agrupados em uma única área geográfica.

Uma CDN também irá armazenar em cache, isto é, salvar temporariamente, cada segmento do streaming ao vivo, de modo que a maior parte dos espectadores obterá o streaming ao vivo a partir do cache da CDN em vez de obtê-lo a partir do servidor de origem. Esse processo na verdade faz com que o streaming ao vivo seja reproduzido quase em tempo real, embora os dados armazenados em cache estejam alguns segundos atrasados, pois reduz o tempo de ida e volta (RTT) de e para o servidor de origem.

Decodificação e reprodução de vídeo

A CDN envia o streaming ao vivo para todos os usuários que estão assistindo à transmissão. O dispositivo de cada usuário recebe, decodifica e descompacta os dados de vídeo segmentados. Por fim, um reprodutor de multimídia do dispositivo do usuário, seja um aplicativo dedicado ou um reprodutor de vídeo do navegador, interpreta os dados como informação visual e reproduz o vídeo.

Um exemplo

Suponha que a Alice inicie um streaming ao vivo em seu smartphone e Bob, que vive do outro lado do país, sintoniza o streaming ao vivo em seu smartphone, junto com mais algumas dezenas de amigos da Alice. A Alice inicia o streaming ao vivo virando a câmera do smartphone em sua direção e dizendo: "Olá, mundo! " O que precisa acontecer para que essa parte do vídeo ("Olá, mundo") chegue até o Bob no outro lado do país e a todas as outras pessoas que estão assistindo ao streaming?

Primeiro, o smartphone da Alice codificará e compactará esse pequeno segmento de vídeo. Se a Alice estiver filmando o streaming ao vivo em sua cozinha, sua parede da cozinha será gravada como o primeiro quadro do vídeo, e os quadros subsequentes excluirão a imagem da parede, já que o fundo não muda.

Agora o aplicativo que a Alice está usando enviará a versão codificada e compactada da frase "Olá, mundo" para a CDN do aplicativo. Felizmente para Bob, um dos servidores da CDN está a apenas alguns quilômetros da sua casa, então a solicitação do seu smartphone para o primeiro segmento do streaming ao vivo será respondida quase que imediatamente. Outros espectadores do streaming ao vivo podem experimentar mais ou menos latência que Bob, dependendo de sua localização geográfica.

O telefone do Bob decodifica o segmento de vídeo e reconstrói os dados compactados, de modo que a parede da cozinha da Alice aparece em todos os quadros. E finalmente, apenas alguns segundos depois da Alice dizer "Olá, mundo" em sua cozinha do outro lado do país, seu rosto aparece no smartphone de Bob, que vê e ouve a saudação.

Por que uma CDN é importante para um streaming ao vivo?

Largura de banda: Qualquer ponto em uma rede pode ter uma quantidade limitada de dados passando por vez; essa medida é conhecida como "largura de banda". Se um streaming de dados atinge um ponto na rede em que a quantidade de dados excede a capacidade, isso se chama "ponto de estrangulamento" porque o envio dos dados é interrompido e fica mais lento. Um ponto de estrangulamento é semelhante à forma como o tráfego fica lento quando muitos carros tentam usar uma estrada de faixa única.

Se todos os espectadores de um streaming estão recebendo os dados desse streaming a partir de seu ponto de origem, então o servidor de origem e sua infraestrutura de rede circundante se tornam um ponto de estrangulamento e o streaming fica mais lento. Mas se a carga principal do stream delivery for movida para uma CDN, então o ponto de estrangulamento será eliminado.

Distribuição de conteúdo global: Como as CDNs estão distribuídas por todo o mundo, elas conseguem distribuir conteúdo para um público global. Um servidor de origem em Nova York não pode fornecer conteúdo de forma eficaz para um público em Milão, e este, especificamente, é o caso dos conteúdos pesados, como vídeos. Entretanto, uma CDN pode encaminhar e fornecer conteúdo a partir de qualquer ponto de sua rede, de modo que uma pessoa em Milão que esteja assistindo a um streaming ao vivo de Nova York possa ter acesso ao streaming a partir de um servidor em Milão, em vez de esperar que este seja carregado a partir de Nova York.

Redução de latência e de RTT: A distribuição de conteúdo global com uma CDN reduz a latência para os espectadores do streaming ao vivo ao reduzir o RTT (tempo de ida e volta). O tempo de ida e volta de resposta à solicitação é menor tanto em termos de distância quanto em termos de tempo, já que a solicitação de um streaming ao vivo por parte de um espectador não precisa mais viajar para a fonte original do streaming, e os dados do streaming também não precisam mais viajar desde o ponto de origem. Isso reduz atrasos e ajuda a manter o streaming ao vivo mais parecido com uma transmissão "ao vivo."

Carga de trabalho: Responder às solicitações de dados dos usuários sai caro para um servidor em termos de capacidade computacional. Responder a várias solicitações de dados de vídeo por parte dos usuários pode sobrecarregar um único servidor. Uma CDN utiliza dezenas ou centenas de servidores que podem tirar grande parte da carga de trabalho do servidor de origem e mantê-lo em funcionamento.

Armazenamento em cache: Uma CDN armazena cada segmento de vídeo de um streaming ao vivo em cache. A CDN pode então distribuir os segmentos a partir do cache em vez de obter os dados a partir do servidor de origem.

Enviar um streaming ao vivo a partir de um cache parece uma contradição: Se o streaming é "ao vivo", como salvá-lo e enviá-lo alguns segundos depois pode ser mais rápido? Embora seja verdade que um streaming ao vivo armazenado em cache ficará atrasado em relação ao tempo real, esse processo ainda é mais rápido do que o tempo que leva para ir até o servidor de origem. A viagem de ida e volta demoraria tanto que o streaming ficaria ainda mais atrasado. Com o armazenamento da CDN em cache, os usuários experimentam um tempo mínimo de atraso.

Como o Cloudflare acelera o streaming ao vivo?

A Cloudflare CDN utiliza uma técnica chamada aceleração simultânea de streaming para acelerar o stream delivery ao vivo. Algumas CDNs não podem enviar um segmento de vídeo para mais de um usuário até que o segmento seja completamente gravado no cache. A Cloudflare CDN, no entanto, é capaz de enviar esses segmentos diretamente para vários espectadores ao mesmo tempo enquanto eles estão sendo carregados, eliminando preciosos segundos do tempo de espera para os usuários. Saiba mais sobre a aceleração simultânea de streaming.