Codificação básica

Princípios básicos da compactação de vídeos

Esta seção aborda as opções básicas para codificação VP9, incluindo tamanho do frame, controle básico da qualidade e taxa de bits.

Se você não tem experiência com a compactação de vídeo, assista este vídeo para saber mais sobre a necessidade de compactação e como ela funciona.

Uma codificação simples

O comando FFmpeg a seguir converte um arquivo de entrada em vídeo VP9 com áudio Opus. Esta é a codificação mais simples possível que usa configurações padrão.

ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm

O codificador de FFmpeg usa os seguintes parâmetros de linha de comando:

FFmpeg
-i <filename> Especifica o nome do arquivo de entrada
-c:v libvpx-vp9 Informa ao FFmpeg para criar um vídeo VP9
-c:a libopus Diz ao FFmpeg para criar um áudio Opus
output.webm Especifica o nome do arquivo de saída

O FFmpeg infere o tipo de arquivo a ser feito com base no nome do arquivo de saída que você usa. Neste exemplo, o FFmpeg produzirá um arquivo WebM porque solicitamos output.webm.

Resolução

Cada vídeo tem um tamanho de frame (indicando a largura e a altura do pixel). O parâmetro de linha de comando FFmpeg a seguir pode ser usado para controlar o tamanho do frame de saída de vídeo para a codificação VP9:

FFmpeg
-vf scale=<width>x<height> Largura e altura dos frames

Por exemplo, o comando FFmpeg a seguir exibirá um vídeo WebM VP9 de 640 x 480.

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -c:v libvpx-vp9 -c:a libopus output.webm

Resoluções menores são de qualidade menor, mas resoluções maiores exigem mais largura de banda, mais poder de processamento para decodificar e podem não ser compatíveis com dispositivos mais antigos. Para VP9, 640 x 480 é considerado uma resolução segura para uma ampla variedade de dispositivos móveis e da Web.

Taxa de bits (taxa de bits)

O VP9 é compatível com vários modos diferentes de taxa de bits:

modo
Quantizer constante (Q) Permite especificar um valor de quantizador fixo. A taxa de bits varia
Qualidade restrita (CQ) Permite definir um nível de qualidade máximo. A qualidade pode variar de acordo com os parâmetros de taxa de bits
Taxa de bits variável (VBR) Equilibra a qualidade e a taxa de bits ao longo do tempo de acordo com as restrições na taxa de bits
Taxa de bits constante (CBR) Tenta manter a taxa de bits um pouco constante enquanto a qualidade varia.

O modo CQ é recomendado para vídeos baseados em arquivos (em vez de transmissões ao vivo). Os seguintes parâmetros de linha de comando FFmpeg são usados para o modo CQ:

FFmpeg
-b:v <arg> Define a taxa de bits desejada (por exemplo, 500 KB)
-minrate <arg>
-maxrate <arg>
Define a taxa de bits mínima e máxima.
-crf <arg> Define o nível de qualidade máximo. Os valores válidos são de 0 a 63, e os números mais baixos têm qualidade mais alta.

Por exemplo, o comando FFmpeg a seguir cria um arquivo de vídeo de 640 x 480 qualidade média usando o modo CQ, com uma taxa de bits média de 750 kbps e qualidade máxima restrita a 33.

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -crf 33 -c:v libvpx-vp9 -c:a libopus output.webm

A taxa de bits varia de acordo com a qualidade que você quer alcançar e com a resolução do vídeo. Você pode encontrar um conjunto completo de recomendações para taxas de bits em várias resoluções aqui.

Configurações de qualidade e velocidade

A compactação de vídeos é uma compensação entre a qualidade da saída e a quantidade de tempo necessário para criá-la. De modo geral, é possível conseguir uma qualidade maior ao permitir mais tempo para codificação, mas o tempo necessário para ter a maior qualidade possível pode ser impraticável.

O VP9 oferece várias configurações para equilibrar qualidade e velocidade:

  • A configuração de qualidade instrui o codificador sobre a abordagem necessária para compactar vídeos. Os modos disponíveis são os melhores, bons e em tempo real.

  • As configurações de linha de execução permitem que o codificador use várias linhas de execução da CPU para codificar o vídeo. Essas configurações podem reduzir um pouco a qualidade, mas podem melhorar significativamente a velocidade de codificação e decodificação.

Esses dois tipos de configurações são controlados por vários parâmetros de linha de comando:

FFmpeg
-threads Indica o número de linhas de execução a serem usadas durante a codificação.
-quality Pode ser definido como good, best ou realtime
-speed Esse parâmetro tem diferentes significados dependendo se a qualidade é definida como good ou realtime. As configurações de velocidade de 0-4 são aplicadas para VoD em good e best, sendo 0 a mais baixa e 4 a mais baixa. Os valores válidos de Realtime são 5-8. Valores menores indicam maior qualidade
-tile-columns O compartilhamento divide o vídeo em regiões retangulares, o que permite várias linhas de execução para codificação e decodificação. O número de blocos é sempre uma potência de dois. 0=1 bloco, 1=2, 2=4, 3=8, 4=16, 5=32.

O seguinte comando FFmpeg criará um arquivo de 640 x 480 com qualidade definida como 'good' e velocidade definida como 0 (alta qualidade):

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -quality good -speed 0 -crf 33 -c:v libvpx-vp9 -c:a libopus \
  output.webm

As opções de qualidade e velocidade podem variar dependendo da resolução e do poder de processamento disponível. Você pode ver um conjunto completo de recomendações na próxima seção.