Codificação básica
Noções básicas sobre compactação de vídeo
Esta seção aborda as opções básicas de codificação VP9, incluindo tamanho do frame, controle de taxa de bits e qualidade básicos.
Se você não tem experiência com compactação de vídeo, assista este vídeo para saber mais sobre a necessidade e o funcionamento desse processo.
Uma codificação simples
O comando FFmpeg a seguir converte um arquivo de entrada em vídeo VP9 com áudio Opus. Essa é a codificação mais simples possível, que usa as configurações padrão.
ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm
Essa codificação do FFmpeg usa os seguintes parâmetros de linha de comando:
FFmpeg | |
---|---|
-i <filename> |
Especifica o nome do arquivo de entrada |
-c:v libvpx-vp9 |
Diz ao FFmpeg para criar um vídeo VP9. |
-c:a libopus |
Diz ao FFmpeg para criar áudio Opus. |
output.webm |
Especifica o nome do arquivo de saída |
O FFmpeg deduz o tipo de arquivo a ser criado com base no nome do arquivo de saída usado. Neste exemplo, o FFmpeg vai gerar um arquivo WebM porque pedimos output.webm
.
Resolução
Todos os vídeos têm um tamanho de frame (indicando a largura e a altura em pixels). O parâmetro de linha de comando do FFmpeg a seguir pode ser usado para controlar o tamanho do frame do vídeo de saída para codificação VP9:
FFmpeg | |
---|---|
-vf scale=<width>x<height> |
Largura e altura do frame |
Por exemplo, o comando FFmpeg a seguir vai gerar 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 têm qualidade inferior, mas resoluções maiores exigem mais largura de banda e poder de processamento para decodificar, além de não serem compatíveis com dispositivos mais antigos. Para VP9, 640 x 480 é considerada uma resolução segura para uma ampla variedade de dispositivos móveis e da Web.
Taxa de bits
O VP9 é compatível com vários modos de taxa de bits diferentes:
modo | |
---|---|
Quantizador constante (Q) | Permite especificar um valor de quantizador fixo. A taxa de bits vai variar. |
Qualidade restrita (CQ) | Permite definir um nível máximo de qualidade. A qualidade pode variar dentro dos parâmetros de taxa de bits |
Taxa de bits variável (VBR) | Equilibra a qualidade e a taxa de bits ao longo do tempo dentro das restrições de taxa de bits |
Taxa de bits constante (CBR) | Tenta manter a taxa de bits constante enquanto a qualidade varia. |
O modo CQ é recomendado para vídeos baseados em arquivos, e não para transmissões ao vivo. Os seguintes parâmetros de linha de comando do FFmpeg são usados para o modo CQ:
FFmpeg | |
---|---|
-b:v <arg> |
Define a taxa de bits desejada (por exemplo, 500k) |
-minrate <arg> -maxrate <arg> |
Define a taxa de bits mínima e máxima. |
-crf <arg> |
Define o nível máximo de qualidade. Valores válidos: de 0 a 63. Números menores indicam qualidade maior. |
Por exemplo, o comando FFmpeg a seguir cria um arquivo de vídeo de qualidade média de 640 x 480 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 a resolução do vídeo. Confira aqui um conjunto completo de recomendações para taxas de bits em várias resoluções.
Configurações de qualidade e velocidade
A compactação de vídeo é um equilíbrio entre a qualidade da saída e o tempo necessário para criá-la. Em geral, você sempre pode ter uma qualidade melhor se permitir mais tempo para codificar, mas o tempo necessário para obter a qualidade mais alta 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 que ele usa para compactar o vídeo. Os modos disponíveis são "best", "good" e "realtime".
As configurações de threading permitem que o codificador use várias threads de CPU para codificar o vídeo. Essas configurações podem reduzir um pouco a qualidade, mas melhoram 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 significados diferentes, dependendo de a qualidade estar definida como good ou realtime . As configurações de velocidade 0-4 se aplicam ao VoD no good e no best , sendo 0 a qualidade mais alta e 4 a mais baixa. Os valores válidos de Realtime são 5-8 . Números menores significam maior qualidade. |
-tile-columns |
O mosaico divide o vídeo em regiões retangulares, o que permite multithreading 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 comando FFmpeg a seguir vai criar um arquivo de 640x480 com a qualidade definida como "boa" e a 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 de acordo com a resolução e a capacidade de processamento disponível. Confira um conjunto completo de recomendações na próxima seção.