Desde a aquisição do YouTube, está claro que a Google pretende que este seja o maior website de partilha de vídeos do mundo. Isto verifica-se por exemplo em 2008 quando uma atualização ao website permitiu carregamentos, visualização e procura de vídeos noutros websites, no entanto, os vídeos em si, são guardados nos servidores do YouTube. Desta forma, todos ficam a ganhar, quer os websites que recorrem ao YouTube poupam na largura de banda do próprio servidor, quer a Google que consegue manipular todo o conteúdo, o que resulta em procuras mais rápidas e eficientes e permite também a adição de anúncios, que é uma grande fonte de rendimento.
Antes de desvendar a arquitetura do YouTube é importante, primeiro, ter em conta os princípios que foram a base de todas as decisões tomadas:
- Priorização: saber o que é essencial para o serviço para direcionar todos os recursos e esforços nestas prioridades.
- Simplicidade: a simplicidade permite rearranjos na arquitetura de forma a responder rapidamente a problemas que possam surgir.
- Divisão e conquista: utilização da técnica de escalabilidade. Todo o sistema é repartido, desta forma a resolução de problemas é feita de forma mais eficaz.
Só em equipa se alcança o sucesso: é necessário uma equipa disciplinada que compreenda todo o sistema e tudo o que está por trás do mesmo.Representação do carregamento e processamento de vídeos [Source: http://technotif.com/how-does-incredible-technology-behind-youtube-works/]
Posto isto, abordamos o funcionamento do YouTube.
- Visão Geral
O funcionamento do website é bastante simples, qualquer utilizador registado pode carregar vídeos no YouTube através do próprio navegador. Os vídeos são transmitidos para os servidores do YouTube em pacotes de dados. Estes pacotes são recebidos e reordenados de forma a recriar o vídeo original sendo armazenados em data centers espalhados por todo o mundo. Por conseguinte é iniciada a fase de processamento. Esta fase é muito importante e é complicada de gerir, uma vez que são aproximadamente carregadas 300 horas de vídeo por minuto. Efetivamente foram carregadas aproximadamente 50 horas de vídeos no YouTube só no intervalo de tempo que demorou a ler este parágrafo.
Na fase de processamento são feitas muitas reclamações, por parte de quem carrega os vídeos, por esta fase ser bastante demorada. Uma das razões para este atraso é, obviamente, o tempo de transmissão pela Internet de todos os pacotes desde o utilizador até ao destino, no entanto isto não justifica completamente a demora que ocorre. O atraso deve-se também aos seguintes processos:
- Para serem cumpridas as normas DMCA (Digital Millenium Copyright Act), o som do vídeo é reproduzido em tempo real, desta forma o YouTube certifica-se que não existe nenhuma música, com direitos de autor, não autorizada.
- É utilizado um sistema de reconhecimento facial para determinar automaticamente se existe algum tipo de nudez.
- Os vídeos são convertidos em inúmeros formatos e resoluções por forma a todos os dispositivos poderem reproduzir estes vídeos sem que seja necessário o auxílio de software exterior para fazer as devidas conversões.
Após o processamento, o vídeo está pronto para ser visualizado por qualquer utilizador da Internet. Não importa se o vídeo está embutido nalguma outra página ou se está a ser executado diretamente da página do serviço, o processo de visualização é idêntico.
A partir do momento em que o utilizador escolhe um vídeo para ser reproduzido, consoante o tamanho do ecrã de reprodução e da velocidade de ligação do utilizador, a qualidade do vídeo vai sendo automaticamente alterada por forma a garantir a melhor qualidade para a velocidade de ligação existente. Para isto ser possível, foi desenvolvido um sistema de “adaptative bitrate streaming” (controlo dinâmico do bitrate do vídeo para streaming) por parte do YouTube,.
O tamanho do ecrã e a velocidade de ligação do utilizador têm que ser constantemente monitorizados enquanto este visualiza o vídeo. Se por acaso a ligação de Internet melhorar, ou o utilizador entrar em modo fullscreen (tela inteira) e a ligação de Internet o permitir, o YouTube passará a enviar uma cópia do vídeo com melhor qualidade, e consequentemente com maior bitrate. Se o oposto acontecer, isto é, a ligação de Internet piorar, ou o utilizador sair do modo fullscreen o YouTube passará a enviar uma cópia do vídeo com pior qualidade, e consequentemente com menor bitrate, por forma a não congestionar a ligação. Estes dois processos ocorrem sem comprometer de forma alguma a reprodução do vídeo.
Posto isto, é importante referir que, é crucial a transmissão do vídeo em segmentos de curta duração, apenas desta forma pode o YouTube, após uma análise instantânea da velocidade de ligação e do tamanho da tela do utilizador, alterar a qualidade a meio da reprodução, através da transmissão dos segmentos seguintes com a qualidade adequada.
Este controlo na qualidade tem a vantagem acrescida de evitar eficientemente (e sem esforço algum do utilizador) pausas de buffering. Este fenómeno acontece quando a receção do vídeo é mais lenta que a reprodução. Isto é, o utilizador eventualmente chega a um ponto em que já não dispõe de frames de vídeo e/ou samples de som futuras para reproduzir. Nessa situação a reprodução é interrompida até que essas frames e/ou samples serem recebidas e descodificadas. Porque a pausa de buffering é algo bastante mais desagradável para o utilizador do que uma qualidade relativamente reduzida, este controlo do vídeo enviado para o utilizador é importante. É de referir que existe a possibilidade de o utilizador bloquear a reprodução do vídeo numa determinada qualidade, deixando assim de haver este controlo, deste modo o utilizador sujeita-se a pausas de buffering que eventualmente possam acontecer.
A deteção do tamanho do ecrã é relevante no sentido em que para um ecrã de grandes dimensões e detalhe (ex. Televisões 4K), é preferível enviar um vídeo de melhor qualidade, pois os detalhes ficam mais visíveis. Para ecrãs de pequenas dimensões (ex. smartphones), acontece precisamente o contrário.
Visão muito geral da fase de processamento de vídeos no YouTube
- Container
O YouTube aceita o carregamento de vídeos na maioria dos formatos, no entanto aconselha o container MPEG-4 Part 14 (MP4). Para o vídeo ser processado corretamente não é aconselhado a existência de “edit lists”. “Edit lists” são específicas para sistemas Apple. Correspondem a uma lista que organiza segmentos de vídeo, que quando combinados formam o vídeo propriamente dito.
Para o vídeo começar rapidamente a ser reproduzido é aconselhada a existência de um “moov atom” no início do ficheiro, que contém a duração do vídeo e serve como índice para o vídeo.
No final, conforme já referido, o YouTube converte cada vídeo, em bastantes tipos diferentes, perto de 20, de forma a satisfazer qualquer dispositivo de reprodução que os utilizadores podem usar.
- Codec de áudio
O YouTube recomenda a utilização do seguinte lossy codec AAC-LC com canais stereo ou 5.1 e uma sample rate de 96kHz ou 48kHz. É recomendado 24 bits por sample, no entanto 16 é aceitável por parte do website.
Tal como anteriormente, também são utilizados vários formatos de codecs de áudio, para o motivo de garantir a interoperabilidade do sistema em qualquer dispositivo.
- Codec de vídeo
O YouTube aconselha vídeos com formato progressivo, por uma razão que será explicada na seção 3.5. É aconselhado o perfil High Profile uma vez que este foi desenvolvido principalmente para broadcast e armazenamento de vídeos HD. São aconselhadas duas frames do tipo B consecutivas e um GOP (Group of pictures) fechado com um número coincidente a metade do número da frame rate. É aconselhado o método CABAC (Context-adaptative binary arithmetic coding) para a codificação entrópica. Por fim é aconselhado o formato de subamostragem da crominância 4:2:0. É aconselhada a standard H.264 para o carregamento, que é a mais utilizada no processamento de vídeos no YouTube, uma vez que o seu design é simples e consegue atingir boas qualidades de vídeo para baixos bitrates.
- Frame rate
Para o processo de codificação, o YouTube aconselha o utilizador a carregar o vídeo com a frame rate do vídeo original (vídeo gravado). Geralmente este número é 24, 25, 30, 48, 50 ou 60 no entanto outras frame rates são aceites. O conteúdo no formato interlaced deve ser deinterlaced antes de ser feito o carregamento, uma vez que, por exemplo para 1080p, conteúdo do tipo 1080i60 (interlaced) é processado pelo YouTube como sendo 1080p30 (progressive). Quando isto acontece é visualizada uma imagem tremida onde se verificam claramente as várias linhas distintas de cada frame.
As várias frame rates e quais as indicadas para determinados tipos de vídeo.
- Bitrate
O bitrate de um vídeo obviamente varia de acordo com a resolução e a frame rate. Utilizando como exemplo um vídeo HD de 1080p com uma frame rate de 24,25 ou 30, é aconselhado o carregamento com um bitrate de 10 Mbps, no entanto, o YouTube nunca transmite um vídeo desta qualidade com um bitrate acima de 6 MBps (o bitrate é reduzido na fase de processamento).
No caso do áudio, são aconselhados bitrates de 384kbps se for Stereo e 512kbps se for 5.1.
Descrição e visualização de variações no bitrate
- Proporção da tela
O YouTube utiliza a relação 16:9, no entanto vídeos com outras proporções podem também ser processados e reproduzidos. Para tal, são apenas acrescentadas barras pretas verticais ou horizontais, nos limites do vídeo por forma a encher o ecrã ou área de vídeo na relação 16:9.
- Funcionalidades Adicionais
O YouTube está constantemente a adicionar e/ou a alterar funcionalidades e pormenores, mas que devido ao seu elevado número não é possível integrar neste trabalho. No entanto, a gestão das thumbnails (imagens miniatura) é uma funcionalidade particularmente interessante neste trabalho, mais focado nas componentes áudio e vídeo do YouTube. As thumbnails são vistas por cima da barra de reprodução quando o utilizador arrasta o botão de reprodução pelo tempo e correspondem, aproximadamente, à frame no instante onde o botão de reprodução se encontra. Embora o funcionamento desta funcionalidade não seja completamente disponibilizado pelo website, a sua base é bastante simples.
Numa thumbnail é agrupado um determinado número de imagens igualmente espaçadas no vídeo para sofrer um decréscimo de qualidade significante (as thumbnails são imagens miniatura, a qualidade não é tão relevante) e desta forma ocupam um menor bitrate no seu envio, evitando congestionamento. O primeiro grupo de frames é enviado com os primeiros segundos de vídeo. Este primeiro grupo possui as frames com o maior intervalo de espaçamento, permitindo o utilizador visualizar o vídeo e saber o que vem pela frente.
Apenas posteriormente, para evitar delay no vídeo, são enviados outros grupos contendo frames cada vez menos espaçadas. As imagens de grupos posteriores são inseridas nos espaçamentos dos grupos anteriores, melhorando a precisão do varrimento de imagens. Este processo acontece várias vezes até um determinado limite definido pelo YouTube.
Visão geral sobre as várias características de um vídeo