Andei estudando tecnologias de compressão de vídeo e é um mundo fascinante. Tudo sobre Linux.
DivX e Xvid são compressores ainda bons mas de gerações anteriores. O mais moderno e avançado é o H.264 também conhecido por MPEG-4 AVC, padrão ISO. Uma das melhores implementações desse compressor é livre: o projeto x264.
E sobre containers, um dos mais completos hoje em dia é o MP4. Um mesmo arquivo MP4 pode conter uma trilha de vídeo, outra de vídeo em outros ângulos, outra de audio em inglês, outra de audio em português, e outras de legendas em várias linguas, em Unicode, menu como o de um DVD, informação sobre capítulos etc. Isso é um significativo avanço em relação ao container AVI da Microsoft que não suportava nada disso. Pode-se fazer um backup de um DVD para um arquivo MP4, incluindo toda a sua interatividade, menus e capítulos.
Apesar do nome sugestivo, MP4 não é a evolução do MP3. Afirmar isso é como dizer que .gif evoluiu para .tar, coisa que não faz sentido. A evolução do MP3 é AAC e HE-AAC. MP4 (um formato de container) pode conter streams MP3 (um formato de audio), como fiz abaixo, mas o mais natural e moderno é um MP4 conter streams AAC.
Converti um vídeo de 53 segundos que fiz com minha câmera. Veja a comparação:
Original.avi | Comprimido.mp4 | |
Geral | 53s, 15.077 kb/s, 640×480, 30 quadros por segundo | 53s, 2.495 kb/s, 640×480, 30 quadros por segundo |
Tamanho | 100.326.316 Bytes | 16.639.145 Bytes |
Trilha de vídeo | 99.697.780 Bytes, compressão Motion JPEG | 15.952.188 Bytes, compressão H.264 |
Trilha de audio | 586.888 Bytes, formato PCM mono 11,024 Hz | 657.699 Bytes, compressão MP3 mono 22,05 Hz 64kbps |
Overhead do container | 41.648 Bytes ou 0.04% do tamanho do arquivo | 29.258 Bytes ou 0.18% do tamanho do arquivo |
Há duas discrepâncias aqui:
- O tamanho relativo do container deveria ter diminuido.
O overhead do container MP4 é bem menor que AVI, mas como o tamanho do vídeo diminuiu muitíssimo, isso distorceu a relação do tamanho do container com o do arquivo. Se transferíssemos sem recomprimir os streams de audio e vídeo do AVI p/ MP4, veríamos uma significativa queda de overhead do container. - O tamanho da trilha de audio aumentou.
O fato é que tive sérios problemas para compactar o audio. Minha câmera grava som em formatos tão baixos que tive que aumentar a freqüência do sinal para o arquivo ser aceito pelo LAME. E ai usei bitrates talvez altos de mais para a compressão. Mas ganhei tanto com o H.264 que nem vou esquentar a cabeça.
O vídeo final é de alta qualidade (comparado com o original), e não consegui perceber diferença entre eles. Olhei várias vezes, com muita atenção.
Eu ainda fiz questão de alta qualidade, e mantive o bitrate em 2495 kbps. Poderia ter diminuido mais ainda o tamanho se fizesse compressão em 2 passos. Filmes em formato Xvid (MPEG-4 ASP) que se baixa da Internet, em boa qualidade, tem aproximadamente 850 kbps. É esperado que se dermos só 850 kbits para o H.264 trabalhar 1 segundo de vídeo, obteremos resultados melhores comparados ao Xvid.