Desde a sua criação, tem-se recorrido a diversos formatos para codificar os vídeos carregados para o YouTube. Ao contrário do que se poderia pensar numa primeira abordagem, e em qualquer dos formatos de codificação utilizados pelo YouTube, cada vídeo codificado não consiste numa sequência de imagens que são facilmente reconhecidas pelo ser humano (como acontece no Motion JPEG, em que o vídeo codificado consiste numa sequência de imagens JPEG [5]). Em vez disso, opta-se por uma abordagem que torna muitas das imagens codificadas dependentes de outras, que podem ser temporalmente anteriores ou posteriores a uma dada imagem em estudo.
Com o aumento da resolução original dos vídeos, impulsionado pela existência de melhores câmaras de filmar nas mãos dos utilizadores privados, e pelo crescente número de parcerias entre o YouTube e empresas produtoras de conteúdos, houve a necessidade de se utilizarem formatos de compressão cada vez mais eficientes e com maiores razões de compressão. Pretendia-se, desta forma, reduzir o número de bits necessários para transportar um dado vídeo, desde os servidores do YouTube até ao utilizador final, sem que se apresentassem grandes diferenças visualmente perceptíveis em relação ao vídeo original (dependendo da resolução escolhida pelo utilizador final).
Assim, e para fazer face ao já grande número de conteúdos existentes em alta definição, a maior parte dos vídeos armazenados nos servidores do YouTube estão contidos em ficheiros MP4 e WebM [1].
MP4
Os ficheiros MP4 armazenam vídeo codificado em MPEG-4 AVC (H.264) e áudio codificado em AAC [6].
H.264
O MPEG-4 AVC, ou H.264, é um formato de compressão de vídeo desenvolvido pela ITU-T Video Coding Experts Group e pelo MPEG (Moving Picture Experts Group).
Cada imagem do vídeo é dividida em um ou mais slices (fatias). Cada um destes slices contém macroblocos que, apesar de ainda se poderem subdividir em blocos, constituem a unidade básica de processamento. Cada macrobloco é constituído por 16x16 amostras de luminância, isto é, de intensidade luminosa por unidade de área, e por 2x8x8 amostras de crominância, que conferem cor à imagem. Cada uma dessas amostras é codificada por 8 bits. São ainda formados grupos de slices, que geralmente suportam os objectos físicos e reais que constituem a imagem (por exemplo, um grupo de slices pode ser relativo a uma bola de futebol que esteja presente na imagem). Os slices dividem-se em três tipos:
- Slice I (Intra), em que todos os seus macroblocos são codificados sem que seja feita qualquer predição temporal;
- Slice P, em que cada um dos seus macroblocos pode ser codificado em relação a um macrobloco de um momento do passado ou do futuro do vídeo;
- Slice B, em que cada um dos seus macroblocos pode ser codificado em relação a dois macroblocos de momentos passados ou futuros do vídeo.
Assim sendo, parte da compressão associada a este formato é obtida com recurso a predições temporais, já que partes ou a totalidade de cada imagem do vídeo podem ser codificados e posteriormente descodificados com recurso a elementos de imagens anteriores ou posteriores. Para que tal possa ser alcançado, é necessário introduzir memória e atraso no sistema, para que seja possível ter acesso a momentos passados e futuros em relação a cada um dos momentos a ser analisado num determinado instante. A extensão dessa memória e desse atraso não deve ser grande, já que se pretende que um utilizador final do YouTube possa começar a ver os vídeos que pretende de forma rápida e intuitiva. Tanto o codificador como o descodificador têm a capacidade de armazenar até 16 imagens.
Para além da redundância temporal, é possível explorar a redundância espacial. Assim, na codificação de um slice I, por exemplo, cada um dos seus macroblocos pode ser codificado tendo como base outro macrobloco (ou bloco) adjacente do mesmo slice [7].
Associado ao H.264 existe uma vasta gama de perfis, que especificam um conjunto de funcionalidades que são implementadas. No YouTube, recorre-se aos perfis Baseline e High [1].
AAC
AAC (Advanced Audio Coding) é um formato de compressão de áudio especificado tanto na Parte 7 do MPEG-2, como na Parte 3 do MPEG-4. Na codificação, as componentes do sinal que são perceptivamente irrelevantes são eliminadas, já que a sua presença não traz melhorias significativas na qualidade, do ponto de vista do utilizador final.
Inicialmente, é feita uma conversão do domínio do tempo para o domínio da frequência, utilizando a transformada discreta de cosseno modificada, com recurso a filtros que extraem um número apropriado de amostras temporais. Depois, o sinal é quantizado com base num modelo psicoacústico, tirando-se partido da percepção auditiva humana. Desta forma, eliminam-se componentes do sinal que, em determinadas circunstâncias, nunca seriam realmente ouvidas pelo utilizador final. Por fim, é feita a codificação do sinal, sendo adicionados códigos de correcção de erros [8].
WebM
Os ficheiros WebM armazenam vídeo codificado em VP8 e áudio codificado em Vorbis [9].
VP8
VP8 é um formato de compressão de vídeo open source criado pela On2 Technologies (empresa que foi comprada pela Google em Fevereiro de 2010).
Tal como o H.264, recorre a predições temporais para atingir razões de codificação relativamente elevadas. No entanto, a abordagem adoptada tem diferenças que merecem ser destacadas. Por exemplo, as predições inter-trama (inter, por requererem a utilização de informação de mais de uma trama no processo de codificação/descodificação) de uma dada imagem do vídeo podem ter as seguintes referências:
- a trama imediatamente anterior àquela que se está a estudar;
- uma trama de ouro (a chamada golden frame), que consiste numa trama com informação de um passado arbitrariamente distante que valha a pena ser mantido;
- uma trama alternativa.
A utilização desta abordagem exige uma utilização de memória muito mais reduzida do que a requerida para o H.264, tanto do lado do codificador, como do lado do descodificador, já que a quantidade de informação que tem que ser mantida é inferior. Segundo [10], não se justifica a utilização de mais do que três tramas de referência, já que o aumento de qualidade obtido dessa forma não é substancial e não compensa a quantidade de memória adicional que tem que ser utilizada. As tramas alternativas, ao contrário do que seria de esperar, nunca são mostradas ao utilizador, servindo apenas como suporte para a codificação/descodificação de outras tramas. Desta forma, podem ser utilizadas para conter qualquer tipo de informação que não pareça intuitiva, mas que ajude no processo de compressão. Podem, por exemplo, conter informação (macroblocos) de várias centenas de outras tramas do vídeo. De acordo com a actual implementação do VP8, estas tramas podem ser utilizadas quer para a realização de predições com ruído reduzido, quer como referência passada ou futura de uma dada trama que esteja a ser estudada [11].
Vorbis
Vorbis é um formato de compressão de áudio open source produzido pela Xiph.Org Foundation (uma organização sem fins lucrativos que produz formatos multimédia e software gratuitos). Tal como o formato AAC, utiliza a transformada discreta de cosseno modificada para converter informação sonora do domínio do tempo para o domínio da frequência. Os dados resultantes são divididos em ruído e componentes residuais, sendo depois quantizados e codificados de forma entrópica usando um algoritmo de quantização vectorial.
Ao contrário do formato AAC, o Vorbis tem a particularidade de não exigir o pagamento de royalties para que possa ser utilizado [12].
MP4 versus WebM
As diferenças técnicas entre os dois formatos traduzem-se em algumas diferenças visualmente perceptíveis, que podem ser observadas aqui.
Além das diferenças técnicas, existem importantes diferenças legais entre os formatos contidos nestes dois tipos de ficheiros, como aliás já foi referido.
Como o H.264 é um formato de compressão patenteado, a aquisição de codificadores e descodificadores que o utilizem, e até mesmo o seu uso, requer o pagamento de royalties de licenciamento da patente. No entanto, a sua utilização em websites como o YouTube não tem custos, conforme foi anunciado pela entidade administradora da patente, a MPEG-LA [14], desde que o serviço prestado não obrigue o utilizador a efectuar algum tipo de pagamento. Ainda assim, a sua utilização em serviços como o aluguer de filmes no YouTube (ainda não disponível em Portugal) pode implicar custos adicionais, uma vez que esta abordagem não é coberta pela condição de gratuitidade das patentes.
Se, por um lado, a utilização do H.264 e do AAC pode requerer o pagamento de royalties, o mesmo não se passa nem com o VP8, nem com o Vorbis. Assim sendo, no momento em que algumas empresas, entre as quais a Google, tiveram que decidir que formato adoptar nos seus browsers, para ser usado no HTML5, acabaram por optar por usar formatos open source, como o WebM, ao invés do H.264 [15]. No entanto, até agora, a Google continua a também suportar este último [7].