Não há um único algoritmo para compactar e descomprimir arquivos de vídeo. A compactação de vídeo é um processo complexo que envolve uma combinação de técnicas. Os algoritmos específicos utilizados dependem do codec (codificador-decidido) empregado. Diferentes codecs usam abordagens diferentes, oferecendo compensações variadas entre a taxa de compressão, a qualidade e a complexidade computacional.
Aqui está um detalhamento dos principais componentes e algoritmos comuns envolvidos:
1. Compressão espacial (codificação intra-quadro): Isso lida com a compactação de quadros individuais. As técnicas usadas incluem:
*
Transformação de cosseno discreto (DCT): Este é um componente central de muitos codecs como MPEG, H.264 e H.265. Ele transforma dados espaciais (valores de pixel) em coeficientes de frequência. Os coeficientes de alta frequência, representando detalhes finos, geralmente são menos significativos e podem ser quantizados (reduzidos em precisão) ou descartados, levando à compressão.
*
Transformações da wavelet: Uma alternativa ao DCT, oferecendo compressão potencialmente melhor em alguns casos.
*
Compressão fractal: Explora a auto-similaridade dentro de uma imagem para obter compactação. Menos comum na compressão de vídeo devido ao maior custo computacional.
2. Compressão temporal (codificação entre quadros): Isso explora redundância entre quadros consecutivos. Técnicas incluem:
*
Estimativa e compensação de movimento (MEC): Isso identifica áreas de movimento entre os quadros. Em vez de codificar todo o novo quadro, apenas as diferenças (vetores de movimento e dados residuais) são codificados. Isso reduz significativamente a quantidade de dados necessários.
*
Codificação preditiva: Prevê o próximo quadro com base em quadros anteriores e codifica apenas o erro de previsão.
3. Codificação de entropia: Esta é a etapa final, reduzindo ainda mais o tamanho dos dados compactados, atribuindo códigos mais curtos a símbolos mais frequentes (por exemplo, usando codificação de Huffman ou codificação aritmética).
codecs de vídeo populares e seus algoritmos: *
mpeg-1, mpeg-2: Padrões mais antigos, usando DCT e compensação de movimento. O MPEG-2 ainda é usado para transmitir televisão.
*
mpeg-4 parte 2 (divx, xvid): Melhorou no MPEG-1/2, usando estimativa de movimento mais sofisticada e melhores técnicas de quantização.
*
H.264/AVC (codificação de vídeo avançada): Um codec altamente eficiente, amplamente utilizado em discos Blu-ray, vídeo online e muitos outros aplicativos. Usa DCT, estimativa sofisticada de movimento e outras técnicas avançadas.
*
h.265/hevc (codificação de vídeo de alta eficiência): O sucessor da H.264, oferecendo taxas de compressão ainda melhores ao custo de maior complexidade computacional.
*
vp8, vp9, av1: Codecs Royalty-Free desenvolvidos pelo Google (VP8, VP9) e uma aliança de código aberto (AV1). O AV1 é considerado um forte concorrente para H.265.
descompressão: O processo de descompressão reverte essencialmente essas etapas. Envolve a decodificação dos dados codificados pela entropia, realizando transformadas inversas de DCT ou wavelet, aplicando compensação de movimento (se aplicável) e reconstruindo os quadros.
Em resumo, a compactação de vídeo é um processo multifacetado que envolve uma combinação de técnicas de compressão espacial e temporal, juntamente com a codificação de entropia. Os algoritmos exatos empregados dependem muito do codec escolhido, que determina as compensações específicas entre eficiência de compressão, qualidade e demandas computacionais.