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.

    Abrir este problema na ferramenta

    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.

      NGOP−1=47,47=11×4+3N_{\mathrm{GOP}}-1=47,\qquad 47=11\times4+3
    2. Isso dá 11 fotogramas P e 33 + 3 = 36 fotogramas B. Verifique: 1 + 11 + 36 = 48.

      NP=11,NB=11×3+3=36,1+11+36=48N_P=11,\quad N_B=11\times3+3=36,\qquad 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.

      Sˉ=1×100+11×12+36×648=44848=9.3\bar S=\frac{1\times100+11\times12+36\times6}{48}=\frac{448}{48}=9.3
    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.

      Tseek≤NGOPf=4824=2 s=2000 msT_{\mathrm{seek}}\le\frac{N_{\mathrm{GOP}}}{f}=\frac{48}{24}=2\ \mathrm{s}=2000\ \mathrm{ms}
    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.

      3×6+124=7.5,448−7.5×48=88=100−12\frac{3\times6+12}{4}=7.5,\qquad 448-7.5\times48=88=100-12
    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.

      Sˉ=7.5+88N⟹N=96: 7.5+8896=8.4,  Tseek=4 s\bar S=7.5+\frac{88}{N}\quad\Longrightarrow\quad N=96:\ 7.5+\frac{88}{96}=8.4,\ \ T_{\mathrm{seek}}=4\ \mathrm{s}

    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.

    Sˉ−7.5=88N  ∝N−1,Tseek=Nf  ∝N\bar S-7.5=\frac{88}{N}\ \ \propto N^{-1},\qquad T_{\mathrm{seek}}=\frac{N}{f}\ \ \propto N
Referências (1)