Visualizador de estrutura do GOP

Visualize e analise os padrões de GOP (Group of Pictures) na codificação de vídeo. Ajuste o tamanho do GOP, os quadros B e a taxa de quadros para ver os trade-offs de eficiência de compressão e latência de busca.

A carregar a simulação interativa...

O comprimento de um GOP não significa nada até o dividir pela taxa de fotogramas 🖖

A leitura de busca é o número que importa, porque é quanto um reprodutor espera antes de poder mostrar algo depois de um salto ou de uma mudança de canal. streaming usa 24 fotogramas a 30 fps, ou seja 800 ms. bluray usa 48 a 24 fps — o dobro dos fotogramas, mas 2000 ms, duas vezes e meia a espera, porque uma taxa mais baixa estica o mesmo GOP mais longe no tempo. allIntra põe o GOP a 1 e faz de cada fotograma um fotograma-chave: buscar custa então um único fotograma, 33 ms, e paga-se isso em taxa de bits em cada fotograma que enviar.

Por que arrastar o vídeo às vezes salta 🖖

Um vídeo raramente guarda cada quadro por inteiro. Só os quadros I (keyframes) contêm uma imagem completa; os quadros P e B apenas descrevem o que mudou em relação aos quadros vizinhos. Um GOP é o trecho que vai de um keyframe até o seguinte. Ao arrastar a barra de reprodução, o player só consegue reiniciar a decodificação no keyframe anterior e então reconstruir para frente até o seu alvo — por isso um GOP longo economiza espaço, mas torna a busca mais lenta e menos precisa.

Datamoshing: arte a partir de keyframes quebrados 🖖

Como os quadros P carregam apenas movimento, e não o conteúdo real, videoartistas apagam de propósito os quadros I para que o decodificador continue borrando pixels antigos ao longo dos novos vetores de movimento. Assim surge o visual derretido e escorrido do «datamosh», visto em videoclipes como Welcome to Heartbreak (2009), de Kanye West, e Evident Utensil, do Chairlift. A mesma corrupção que arruína um stream com keyframe perdido vira uma estética deliberada.

UMA ETAPA DE UMA CADEIA — O QUE ENTRA, O QUE SAI E O QUE QUEBRA DEPOIS

Onde isto fica no pipeline de codificação

Um codificador de vídeo não é um algoritmo, mas oito etapas numa ordem fixa, e a ordem não é arbitrária: cada etapa existe porque a anterior tornou o seu trabalho possível. Esta ferramenta modela uma delas. A cadeia abaixo liga às outras sete.

Visualizador de estrutura do GOP — decide quais quadros são codificados sozinhos e quais como diferenças

O que entra
Uma sequência de quadros amostrados, nenhum codificado ainda.
O que sai
Uma atribuição: quadros I codificados sozinhos, quadros P e B contra quadros de referência.
O que a etapa seguinte pressupõe
A estimação de movimento roda apenas em quadros P e B. Um quadro I a salta por completo.
O que dá errado aqui
Esta etapa decide se a seguinte roda sequer para um dado quadro, portanto comanda a etapa 04 em vez de apenas precedê-la. Intervalos longos entre quadros I comprimem muito melhor e pioram a busca, porque o player precisa decodificar para frente desde o último quadro I para chegar a qualquer ponto.

Problema resolvido na íntegra

  1. Mistura de frames e tamanho médio de frame para 48 frames a 24 fps 6 passos

    Um grupo de imagens ao estilo Blu-ray: 48 fotogramas, 3 fotogramas B consecutivos entre referências, reproduzido a 24 fps. Considere que um fotograma I custa 100 unidades relativas, um fotograma P 12 e um fotograma B 6. Determine a mistura de fotogramas e o tamanho médio dos fotogramas, e depois calcule quanta compressão um GOP mais longo ainda poderia proporcionar.

    1. Um fotograma I abre o grupo, o que deixa 47 posições. Essas posições repetem uma unidade de 4 fotogramas — 3 fotogramas B e o fotograma P que os ancora — e 47 não é múltiplo de 4. 47 = 11 × 4 + 3, logo 11 unidades completas e uma ponta de 3 fotogramas B pendentes.

    2. Isso dá 11 fotogramas P e 33 + 3 = 36 fotogramas B. Verifique: 1 + 11 + 36 = 48.

    3. Pondere cada tipo pelo seu custo. 100 + 132 + 216 = 448 unidades para todo o grupo, e 448 / 48 = 9,3 por fotograma. Um fluxo totalmente intra paga 100 por cada fotograma, pelo que esta estrutura é 10,7 vezes menor para as mesmas 48 imagens.

    4. A fatura disso chega sob a forma de latência. Não se pode iniciar a descodificação no meio de um grupo — cada fotograma P e B é definido em relação a outra coisa — por isso a procura vai dar ao fotograma I e descodifica-se para a frente a partir daí. O pior caso é a totalidade dos 48 fotogramas, o que a 24 fps corresponde a 2 s.

    5. Agora encontre o limite inferior. Cada unidade de repetição custa 3 × 6 + 12 = 30 unidades para 4 fotogramas, ou 7,5 por fotograma, e aumentar o GOP apenas adiciona mais destas unidades. Subtraia essa taxa ao grupo e sobram 448 - 7,5 × 48 = 88 unidades.

    6. Essas 88 são um único número: 100 - 12, o acréscimo do fotograma I em relação ao fotograma P que ele substitui. O acréscimo não cresce com o grupo, pelo que é 88 seja qual for o comprimento, e a média é S̄ = 7,5 + 88/N. Teste com o dobro do comprimento: N = 96 dá 7,5 + 88/96 = 8,4 unidades por fotograma.

    Resposta

    9,3 unidades por fotograma, contra um limite inferior de 7,5 do qual nenhum comprimento de GOP pode baixar. As duas partes do compromisso variam em direções opostas e nenhuma é linear da forma como parece: o que ainda há a ganhar diminui como 88/N, enquanto a latência de procura aumenta como N/24. Com 48 fotogramas, está 1,8 unidades acima do limite inferior. Duplicar para 96 recupera 0,9 disso — menos de 10% do tamanho do fotograma — e custa mais 2 s de procura no pior caso. Duplicar novamente recupera 0,46 e custa mais 4 s. Por isso, o comprimento de GOP que vale a pena escolher é fixado pela latência que se está disposto a aceitar, e não pela compressão que ainda se tenta obter: para lá de algumas dezenas de fotogramas, um fotograma I amortizado um pouco mais é tudo o que resta.

Referências (1)

Problemas de exemplo

  • Baixa latência (IP) - GOP=4, sem B-frames: velocidade máxima de busca, compressão mínima — comum em streaming em tempo real
  • Streaming Web (IBBP) - GOP=24, 2 B-frames: ~800 ms de latência de busca, boa compressão — típico de streaming VOD
  • Blu-ray (IBBBP) - GOP=48, 3 B-frames: ~2 s de latência de busca, melhor compressão — padrão do Blu-ray
  • All-Intra (apenas I) - All-intra: todo quadro é um I-frame — maior qualidade, 5–10× maior que um stream com B-frames