top of page

DE QUE É FEITA A PLATAFORMA?

Para que uma plataforma deste género seja minimamente funcional e lucrativa, existem certos conceitos que não podem ficar para trás no que toca à conceção da arquitetura, nomeadamente a codificação de vídeo; as tecnologias usadas para o streaming ou Broadcast de conteúdo e também requisitos mínimos para a transmissão.

Nesta secção descrevemos em algum detalhe a arquitetura geral da Twitch de modo que consigamos entender melhor como é que esta plataforma se tornou tão popular e como foi possível construir um sistema que fornece vídeo em streaming de maneira eficiente e que poupe ao máximo a utilização de débito.

Desafios e estatísticas da Twitch

Antes de entrar em detalhe sobre a tecnologia utilizada, é importante notar que muitas das decisões relativas à tecnologia são motivadas pelo tamanho da Twitch e pelo seu rápido crescimento: cerca de 30mil pessoas a fazer streaming simultaneamente; picos de visualização de mais de 2milhões de streams de vídeo ao mesmo tempo; mais de 10mil milhões de mensagens por dia; mais de 50mil pedidos por segundo às web APIs e um crescimento de 800% no número de engenheiros a trabalhar na Twitch.

Isto significa que a Twitch tem de escalar tanto em termos arquiteturais como organizacionais. À medida que os sistemas crescem, os pontos de falhas vão sendo maiores.

Peças Principais

Na Twitch existem 6 peças de tecnologias fundamentais que permitem ter toda esta plataforma em funcionamento.

1 / Sistema de vídeo

2 / Chat
3 / Dados e Web API
4 / Aplicações para Clientes
5 / Infraestrutura de ciências de dados
6 / Ferramentas e infraestrutura operacionais

Como seria de esperar, vamos focar-nos exclusivamente no sistema de vídeo pois é o mais relevante para o âmbito deste artigo. De uma forma genérica, este inclui os seguintes componentes cruciais: ingestão de vídeo – que recebe vídeo via protocolo RTMP (real-time messaging protocol [2]) e envia-o para o sistema de transcodificação – que recebe o stream RTMP e transcodifica-o para múltiplos streams HLS (HTTP live streaming [4]); distribuição e edge – distribui os streams HLS para PoPs (Points of Presence [5]) geograficamente dispostos para que possam fornecer a melhor experiência de streaming e finalmente o VOD (video on demand) – que é o sistema de armazenamento do vídeo a ser transmitido para que possa ser armazenado e fornecido sob demanda.

Screenshot 2022-04-22 at 22.23.20.png

A figura mostra uma arquitetura muito abstraída do sistema de vídeo da Twitch desde o momento da transmissão do vídeo, até à receção do mesmo.

 

Para analisar esta arquitetura é necessário estabelecer duas entidades: a Ingestão e a Distribuição e aprofundar os diferentes componentes inerentes a cada uma.

Ingestão

O sistema de ingestão tem 3 camadas diferentes desde a receção até à transcodificação.

 


O ponto de partida está no lado do streamer/criador de conteúdo que envia vídeo codificado para o Proxy de ingestão da Twitch como mostra a figura ao lado.

Screenshot 2022-04-22 at 22.29.35.png

Streaming Encoder

O vídeo é codificado em H.264/MPEG-4 AVC através de um de dois encoders suportados pela Twitch: x264 e NVENC (NVIDIA Encoder [6][7]) sendo que o NVENC produz resultados muito superiores (mais qualidade com o mesmo tempo de processamento) quando utilizado numa placa gráfica NVIDIA.

A documentação [8] relativa à qualidade da codificação que a Twitch está disposta a receber refere apenas 4 especificações possíveis:

  1. 1080p 60fps – débito binário: 6000kbps

  2. 1080p a 30fps – débito binário: 4500kbps

  3. 720p a 60fps – débito binário: 4500kbps

  4. 720p a 30fps. – débito binário: 3000kbps

 

Para estas especificações também estão tabuladas certas configurações pré:

  1. Tramas-B: 2

  2. Intervalo de Trama-I (Intra): 2 segundos

  3. Controlo de débito: CBR (constant bitrate encoding) [9]

PoP - Ingest Proxy

Após a codificação, como mencionado, o vídeo é enviado através de um PoP para o Ingest Proxy que, consequentemente, reencaminha para o sistema interno de Ingestão.

Quando já no sistema de ingestão (figura acima) o primeiro passo que o sistema segue é autenticar o stream e garantir que existe autorização para processá-lo; de seguida comunica com a base de dados para operações CRUD necessárias e finalmente coloca o stream numa fila para ser transcodificado no Transcode/Transmux Worker (figura em baixo).

 

Screenshot 2022-04-22 at 22.42.18.png
Screenshot 2022-04-22 at 22.42.28.png

Transcode/Transmux Worker

Este sistema de transcodificação tem o trabalho que ler da fila qual o próximo stream a ser processado e, através de programas internos desenvolvidos em C/C++/Go [1], faz a transcodificação do stream RTMP para vários streams HLS para poder disponibilizar várias resoluções para os diversos requisitos dos utilizadores.

VoD - Video on-demand

Após a transcodificação do stream RTMP em vários streams HLS estes são armazenados no sistema de vídeo sob demanda para que possam ser visualizados posteriormente, sem estarem a ser transmitidos em direto.

Distribuição

O sistema de distribuição entra em ação após ter sido recebido os múltiplos streams HLS. Estes streams são primeiro armazenados em Cache de nível 1 que depois são distribuídos pela camada de replicação.

Esta camada de replicação permite distribuir os streams pelos diversos PoPs em todo o mundo e consequentemente chegar ao utilizador.

Screenshot 2022-04-22 at 22.35.20.png

PR - Protected Replication

Este módulo recebe do upstream PoP o vídeo replicado e armazena-o na sua HLS cache onde muito temporariamente o stream aguarda que seja enviado para o utilizador pelo Video Edge.

Video Edge

Este módulo recebe do upstream PoP o vídeo replicado e armazena-o na sua HLS cache onde muito temporariamente o stream aguarda que seja enviado para o utilizador pelo Video Edge.

1. “Twitch Blog | Twitch Engineering: An Introduction and Overview,” Twitch Blog, 2015. https://blog.twitch.tv/en/2015/12/18/twitch-engineering-an-introduction-and-overview-a23917b71a25/ (accessed Apr. 20, 2022).

2. “What is RTMP? Real Time Messaging Protocol - Dacast,” Dacast, Jan. 14, 2022. https://www.dacast.com/blog/rtmp-real-time-messaging-protocol/ (accessed Apr. 20, 2022).

4. Wikipedia Contributors, “HTTP Live Streaming,” Wikipedia, Apr. 01, 2022. https://en.wikipedia.org/wiki/HTTP_Live_Streaming (accessed Apr. 20, 2022).

5. Techopedia, “Point of Presence (POP),” Techopedia.com, Dec. 12, 2012. https://www.techopedia.com/definition/1704/point-of-presence-pop (accessed Apr. 20, 2022).

6. “NVIDIA NVENC OBS Guide,” 2022. https://www.nvidia.com/en-us/geforce/guides/broadcasting-guide/ (accessed Apr. 20, 2022).

7. “NVIDIA VIDEO CODEC SDK,” NVIDIA Developer, Aug. 23, 2013. https://developer.nvidia.com/nvidia-video-codec-sdk#NVENCFeatures (accessed Apr. 20, 2022).

8. “Customer Support,” Twitch.tv, 2022. https://help.twitch.tv/s/article/broadcast-guidelines?language=en_US#recommended (accessed Apr. 20, 2022).

9. J. Ozer, “What is CBR, VBR, CRF, Capped-CRF? Rate Control Modes Explained - OTTVerse,” OTTVerse, Jul. 22, 2021. https://ottverse.com/what-is-cbr-vbr-crf-capped-crf-rate-control-explained/ (accessed Apr. 20, 2022).

bottom of page