No tutorial em que ensinei a criar o DivX;-)
a partir de um DVD eu falei apenas o essencial para que você
criasse o seu primeiro arquivo neste formato. Na ocasião
eu disse apenas para que você usasse um "keyframe"
por segundo e não expliquei o motivo disso. Vejamos agora
o que é um "keyframe" e porque é bom colocar
um "keyframe" a cada segundo de filme.
Como sabemos os algoritmos de compressão procuram redundâncias
nos arquivos. Façamos um esforço de simplificação
e suponha que você criou um arquivo de texto puro com um milhão
de letras "A" (AAAAAAAAAAAAA....AAAA) este arquivo ocuparia
cerca de um megabyte, no entanto se você utilizar um programa
compressor (um PkZip, por exemplo) este arquivo ocupará poucos
bytes, porquê? Porque o algoritmo de compressão analisou
o arquivo e verificou que o número de redundâncias era enorme,
assim, para armazená-lo no modo comprimido o programa compressor
cria um arquivo que NÃO tem a letra "A" repetida
um milhão de vezes, mas apenas a instrução
"repita A um milhão de vezes". Quando o arquivo
for descomprimido o programa descompressor usará estas instruções
para recriar o formato original, repetindo um milhão de "A"
em um arquivo de texto.
A compressão DivX;-) Mpeg-4 não é muito diferente
em temos de princípios da compressão de um arquivo
de texto, são procuradas redundâncias nas imagens.
Um filme é uma seqüência de quadros (frames) apresentados
sucessivamente numa freqüência predeterminada, por ex,
29,97 quadros por segundo. Em um filme, sem compressão ou
em formato analógico, como as fitas de cinema, cada quadro
é composto por uma imagem completa, uma fotografia de um
determinado instante, o quadro seguinte é uma outra fotografia
de um instante alguns centésimos de segundo depois e assim
por diante. No entanto observe que na maioria dos casos as diferenças entre um "frame" e o seguinte
são diminutas. Suponhamos uma cena com um apresentador de
TV, por exemplo, cada quadro tem exatamente o mesmo fundo, o rosto
é o mesmo, apenas alguns detalhes mudam de quadro para quadro,
sua boca pode estar em uma posição ligeiramente diferente
e seus olhos também, o restante provavelmente será
idêntico. O que faz então a compressão DivX;-)
Mpeg-4, ela analisa quadro por quadro as diferenças e
redundâncias entre um "frame" e o anterior.
DivX;-) Mpeg-4 trata os quadros em blocos de 16x16 pixels, a compressão
compara um bloco de 16x16 pixels de um dado quadro com o bloco de
16x16 pixels do quadro anterior localizado nas mesmas coordenadas,
se as diferenças forem desprezíveis (aí depende
também do bitrate) o compressor considera o bloco como sendo
idêntico e o descarta, aproveitando o bloco do quadro anterior
e assim por diante. Desta forma cada quadro do filme comprimido
tem apenas os blocos de 16x16 pixels que são diferentes do
quadro anterior. O que aconteceria com aquele suposto filme com
nosso apresentador de TV? Apenas o primeiro quadro teria a cena
completa com a imagem de fundo, etc. Supondo que durante toda a
apresentação apenas os olhos e a boca do apresentador
se moveram todos os demais quadros seriam apenas blocos de pixels
contendo apenas os olhos e a boca do apresentador em suas pequenas
alterações, nada mais, pois todo o resto da imagem
seria redundante. O milésimo quadro do filme estaria usando
o fundo que está apenas no primeiro quadro!!!! Acumularia
aí as informações dos blocos de pixels contidas
em todos os outros quadros anteriores e adicionaria os blocos de
pixels do milésimo quadro. Observe que apesar do filme estar
altamente comprimido em DivX;-) Mpeg-4 para que a cena do milésimo
quadro seja formada as informações de todos os 999
quadros
anteriores são levadas em consideração e o
fundo está apenas no primeiro quadro. Este primeiro quadro,
que tem a imagem completa chamamos de "keyframe"!
|