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.