Esta seção lista recomendações de codificação VP9 para vários perfis comuns:

  • Vídeo altamente otimizado para Web e dispositivos móveis (VOD)
  • Distribuição de conteúdo premium (VOD)
  • Esportes, animação, conteúdo de 10 bits (VOD)
  • Codificação ao vivo
  • WebRTC

Introdução

Ao codificar vídeos, há várias considerações a serem feitas:

  • Você está criando uma única versão da sua mídia ou várias versões com taxas de bits e resoluções diferentes?
  • Você está criando uma transmissão de vídeo ao vivo ou arquivos de vídeo sob demanda?
  • Que tipo de mídia você está codificando? Ela tem muito movimento? Detalhes? Animação?
  • Você está codificando para máxima qualidade (por exemplo, conteúdo premium) ou velocidade (por exemplo, videoconferências)?

Esta seção começa com as configurações de um arquivo de vídeo básico on demand e depois faz recomendações para todas essas perguntas.

Configurações básicas

Taxas de bits de codificação

As taxas de bits a seguir são sugeridas como valores de referência para distribuição na Web e em dispositivos móveis. Essas sugestões minimizam a taxa de bits, alcançando uma qualidade de vídeo adequada para distribuição na Web e em dispositivos móveis. Pense nelas como uma recomendação de taxa de bits "baixa" que ainda pode alcançar uma qualidade razoável.

Taxas de bits desejadas sugeridas

Tamanho/taxa de frames Taxa de bits média (VOD, kbps) Taxa de bits média (ao vivo, kbps)
320x240p a 24,25,30 150 250
640 x 360p a 24,25,30 276 386
640x480p a 24,25,30 512 (LQ), 750 (MQ) 720 (LQ), 1024 (MQ)
1280x720p a 24,25,30 1024 1440
1280x720p a 50,60 1800 2500
1920x1080p a 24,25,30 1800 2500
1920 x 1080p a 50,60 3000 4200
2560x1440p a 24,25,30 6000 8400
2560x1440p a 50,60 9000 12600
3840x2160p a 24,25,30 12000 16800
3840x2160p a 50,60 18000 25200

Figura 2a: taxas de bits de destino

Configurações de codificação de VOD

Configurações para a maioria dos tipos de conteúdo

Para a maioria dos tipos de conteúdo, recomendamos usar o modo de qualidade restrita (CQ) com limites de taxa de bits. A maioria dos vídeos contém uma mistura de cenas de alta movimentação (por exemplo, sequências de ação) e cenas com menos detalhes (por exemplo, conversas). O modo CQ permite que o codificador mantenha um nível de qualidade razoável durante cenas mais longas e fáceis (sem desperdiçar bits) e aloque mais bits para sequências difíceis.

Também recomendamos permitir que o intervalo da taxa de bits varie de 50% a 150% da meta, usando valores de qualidade conforme indicado no gráfico abaixo. Esse modo exige codificação de duas passagens, e é recomendável usar configurações mais rápidas para HD e resoluções maiores, conforme indicado abaixo.

Configurações do codificador para codificação CQ

Altura do frame Qualidade desejada (CQ) Modo de codificação
240 37 TWO_PASS_MEDIUM
360 36 TWO_PASS_MEDIUM
480 34 (baixa qualidade) ou 33 (qualidade média) TWO_PASS_MEDIUM
720 32 TWO_PASS_FAST
1080 31 TWO_PASS_FAST
1440 24 TWO_PASS_FAST
2160 15 TWO_PASS_FAST

Figura 2b: configurações recomendadas de CQ

Por fim, recomendamos 240 frames de vídeo entre os quadros-chave (para conteúdo de 30 fps, isso equivale a 8 segundos). Os keyframes são frames de vídeo autossuficientes, ou seja, não dependem de outros frames para serem renderizados. Consulte a estrutura de GOP para uma explicação mais detalhada. Para reprodução na Web e em dispositivos móveis, permitimos um espaçamento generoso entre os keyframes porque isso permite que o codificador escolha o melhor posicionamento para maximizar a qualidade.

Exemplo de parâmetros de linha de comando: vídeo de 640 x 360

Com base no que foi dito acima, as recomendações para vídeos em 360p são as seguintes:

  1. Nível de CQ de 36 (consulte a Figura 2b)
  2. Taxa de bits desejada de 276 kbps (consulte a Figura 2a)
  3. Taxa de bits mínima permitida de 138 kbps (50% da meta)
  4. Taxa de bits máxima permitida de 414 kbps (150% da meta)
  5. Espaçamento máximo de 240 segundos entre os frames-chave
  6. Duas transmissões, perfil "Médio"

Isso fornece os seguintes parâmetros de linha de comando para libvpx e FFmpeg:

libvpx

--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
  --maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

Configurações de conteúdo premium

Nos exemplos acima, usamos configurações de codificação bastante rápidas para criar nossos fluxos de vídeo de maneira eficiente. No entanto, para alguns conteúdos (como filmes premium), vale a pena gastar mais tempo durante a codificação para ter uma saída de maior qualidade.

Para conteúdo premium, recomendamos as mesmas configurações acima, mas com predefinições diferentes, instruindo o codificador a gastar mais tempo otimizando a qualidade:

Modos de codificação de conteúdo premium e parâmetros de linha de comando

Altura do frame Modo de codificação libvpx FFmpeg
240 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
360 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
480 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
720 TWO_PASS_SLOW --good --cpu-used 1 -good -speed 1
1080 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
1440 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
2160 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2

Figura 2c: modos de codificação de conteúdo premium

Configurações de conteúdo de esportes e alta movimentação

Recomendamos a codificação VBR para conteúdo esportivo. Os esportes costumam ter um nível bastante consistente de alta movimentação e complexidade. O uso da VBR alcança uma qualidade maior durante períodos de menor movimentação do que a codificação QP.

Na linha de comando, a principal diferença entre o modo QP e VBR é que você não especifica um nível de CQ. Caso contrário, as configurações recomendadas são as mesmas.

Exemplo de parâmetros de linha de comando de VBR: vídeo de 640 x 360

libvpx

--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
  --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

Configurações de animação e jogos

Configurações de conteúdo ruidoso / de baixa qualidade

Para conteúdo ruidoso, recomendamos aumentar o número e a intensidade dos frames alt-ref. Os frames de referência alternativos são "invisíveis", nunca mostrados ao usuário, mas usados como referência ao criar os frames finais. Leia mais informações aqui.

Recomendamos os seguintes parâmetros para instruir o VP9 a usar mais frames alt-ref:

libvpx

--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3

FFmpeg

Codificação de 10 bits/HDR

Para codificação de 10 bits, use o perfil 2 do VP9. A codificação de 10 bits não exige mais bits, então o restante dos parâmetros é o mesmo:

libvpx

--profile=2

FFmpeg

-profile 2

Configurações de codificação ao vivo

Transmissões ao vivo

A codificação ao vivo geralmente é feita como CBR, o que restringe a capacidade do codificador de maximizar a qualidade. Por isso, vamos usar taxas de bits mais altas, conforme indicado na Figura 2a.

Para codificação ao vivo, também queremos maximizar o encadeamento. Confira como fazer isso:

  1. Permitir que o VP9 divida o vídeo em colunas (que não podem ter menos de 256 pixels de largura e precisam ser uma potência de dois);
  2. Indicando ao VP9 para usar mais poder de CPU. A tabela a seguir lista recomendações para cada resolução.

Recomendações de mosaico e threading

Configurações do codificador para codificação CQ
Tamanho do frame Número de colunas de blocos Número de threads
320x240 1 2
640 x 360 2 4
640 x 480 2 4
1280 x 720 4 8
1920 x 1080 4 8
2560x1440 8 16
3840 x 2160 8 16

Figura 2d. Recomendação de mosaicos e linhas de execução para codificação ao vivo

A codificação ao vivo também define o prazo como "realtime" para garantir a performance e instrui os frames de referência alternativa a não olhar para o futuro (o que introduziria latência):

Com base nisso, as recomendações para vídeos ao vivo em 360p são as seguintes:

  1. CBR, taxa de bits desejada de 386 kbps (consulte a Figura 2a)
  2. Duas colunas de blocos (consulte a Figura 2d)
  3. 4 linhas de execução (veja a Figura 2d)
  4. Performance em tempo real
  5. Sem latência devido a frames alternados (sem atraso de frame)

Isso fornece os seguintes parâmetros de linha de comando para libvpx e FFmpeg:

libvpx

--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0

FFmpeg

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
  -minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm

Codificação VP9 ao vivo para DASH/YouTube

Codificação WebRTC