top of page

A Netflix desenvolveu uma estratégia de transmissão do conteúdo que se baseia em fazer uma codificação adaptada a cada título específico que se pretenda transmitir, obtendo assim uma codificação ótima e perfeitamente adaptada à complexidade inerente do conteúdo a transmitir.

 

Seria perfeitamente irracional adotar o mesmo critério de codificação para um filme que tenha um conteúdo mais dinâmico e intenso, como é o caso de um filme de ação e fazer também o mesmo para um filme  mais monótono com pouca variabilidade temporal e espacial ao nível do conteúdo de vídeo. Tal critério resultaria numa grande ineficiência em termos de utilização de largura de banda pois no primeiro caso seria necessário utilizar muitos mais bits para encapsular a informação do que no segundo.

 

Uma codificação personalizada permite assim entregar a mesma ou melhor qualidade ao subescritor do serviço utilizando a menor largura de banda possível o que constitui uma enorme vantagem pois ao contrário dos serviços de IPTV a Netflix não opera sobre redes orientadas à conexão, além de que existem países onde a largura de banda, seja nas comunicações fixas ou móveis, ainda não é muito elevada.

A Netflix faz a pré codificação de streams para vários bitrates aplicando critérios de codificação ótimos previamente estabelecidos. Por sua vez, no dispositivo do subescritor de serviço são aplicados algoritmos de streaming adaptativo que de forma instantânea selecionam qual a melhor codificação para obter a melhor qualidade possível evitando assim interrupções de playback pois não é necessário aplicar sistemas de buffering.

 

A Netflix dispõe atualmente da maior biblioteca virtual de conteúdo em vídeo, sendo esse conteúdo caracterizado por uma grande heterogeneidade, o que implica significativas diferenças ao nível da caracterização do sinal de cada vídeo.


 

Na fig. 1 mostra-se as diferenças na qualidade medidas através do PSNR (Peak Signal-To-Noise Ratio) para diferentes bitrates para cem amostras de títulos escolhidas de forma aleatória. Foram codificadas cem fontes a 1080p utilizando o codificador x264 com parâmetro de quantização constante. Para cada ponto de quantização, em cada titulo, foi calculado o bitrate resultante em kbps que é apresentado no eixo das abcissas  e o PSNR que é utilizado como parâmetro de medição da qualidade de vídeo, que é apresentado no eixo das ordenadas.

 

É de notar que o PSNR é o parâmetro mais utilizado quando se trata de medir qualidade de vídeo comprimido, embora possam ser utilizados outros como é o caso do VMAF (Video Multi-Method Assessment Fusion) que é uma métrica qualitativa percetual desenvolvida pela Netflix em conjunto com a University of Southern California researchers. Considera-se que um título apresenta uma boa qualidade se apresentar um PSNR maior ou igual que 45dB e uma má qualidade se apresentar um PSNR menor ou igual 35dB.

É de notar através da análise da fig. 1 que no caso de alguns títulos é possível obter valores iguais ou superiores a 45dB de PSNR para um bitrate muito baixo, e que no caso de outros títulos é necessário um bitrate muito mais elevado para atingir um valor de 38dB em termos de PSNR. Para construir um algoritmo de streaming adaptado a cada título a Netflix definiu como critério de seleção um conjunto de cinco resoluções, 1920×1080, 1280×720, 720×480, 512×384, 384×288 e 320×240, bem como um conjunto finito de bitrates, onde cada bitrate adjacente tem um aumento de aproximadamente 5% . Para cada nível de qualidade é assim definido um par resolução-bitrate.

 

São ainda considerados os seguintes critérios para fazer o melhor streaming por título em função do bitrate:

  • A produção de cada par resolução-deve ser eficiente, ou seja, a codificação produzida deve conduzir à melhor qualidade possível.

  • Os adjacentes devem estar perceptualmente espaçados. Idealmente a diferença percetual entre dois adjacentes fica abaixo de um JND (just-noticeable difference). Isto assegura que as transições de qualidade são suaves no caso de haver uma alteração do . Também assegura que o menor número de níveis de qualidade estão a ser usados, permitindo assim um grande alcance em termos de qualidade percetual que pode ser explorada com o aumento do .

 

A fig. 2 mostra o exemplo de codificação de uma fonte com três resoluções diferentes para vários bitrates.

Pode verificar-se através da análise da fig. 2 que a qualidade da codificação aumenta à medida que o bitrate aumenta, embora se verifique que a partir de determinado threshold em termos de bitrate existe a tendência para um decréscimo no aumento do PSNR para cada salto realizado em termos de bitrate. Tal pode ser verificado observando o achatamento de todas as curvas no gráfico. Isto acontece porque existe um limite superior em termos de qualidade percetível para cada resolução.

 

Quando um vídeo com um numero baixo de amostras é codificado e posteriormente devido a um aumento do bitstream passa a poder ser codificado com um maior número de amostras são perdidas as componentes de alta frequência não havendo assim nenhum acréscimo significativo na qualidade final do streaming. Pode-se também observar na mesma figura que para o mesmo bitrate o ponto C embora seja codificado com mais alta resolução proporciona uma pior qualidade do que a codificação no ponto D. Isto significa que codificar mais pixels com menos precisão é pior do que codificar menos pixels com mais precisão estabelecendo paralelamente um aumento no número de amostras e técnicas de interpolação.

Torna-se imperativo então adaptar a resolução em termos de codificação ao bitrate disponível, sendo evidente que um aumento na resolução para um bitrate muito baixo pode conduzir a uma degradação na qualidade percetível do vídeo.

 

Na fig. 3 é evidenciada a relação entre o bitrate e a qualidade para qualquer fonte de vídeo codificada a diferentes resoluções.

Como se pode ver pela análise dos gráficos da fig. 3, cada resolução tem uma zona formada por um intervalo de bitrates que permite obter melhor qualidade comparativamente com as outras resoluções. Por sua vez a Convex Hull é a curva formada agregando as diferentes zonas ótimas pertencentes a todas as resoluções disponíveis.

 

Do ponto de vista prático o que a Netflix faz é aplicar a cada título testes de codificação com diferentes passos de quantização para um conjunto finito de resoluções. Os passos de quantização são escolhidos de modo a que fiquem a um JND de distância. Para cada teste de codificação são medidos o bitrate e a qualidade. Por interpolação de curvas são produzidas as curvas bitrate-qualidade para cada resolução. É então definido para cada bitrate a resolução que melhor se adapta em termos de qualidade final. Tal é feito selecionando os pontos que mais se aproximam da Convex Hull. Obviamente isto  não teve em conta as especificações de hardware de cada dispositivo.

 

Definir critérios de streaming que correlacionem a qualidade máxima que é possível obter para um dado bitstream com as características de descodificação do dispositivo do subescritor é de enorme importância. Nem todos os dispositivos suportam as mesmas resoluções, por isso mesmo a Netflix para cada título define aquilo que se designa como a resolução máxima que pode ser disponibilizada no ecrã , sendo que para os dispositivos que suportam apenas resoluções mais baixas, como 480p e a 720p a empresa desenvolveu especificamente soluções de streaming por título otimizadas, para que mesmo em situações em que o hardware não permita as melhores resoluções o cliente possa ter sempre a melhor experiencia possível de utilização.   

bottom of page