Imagens, áudio e vídeo
De ondas sonoras a pixels e frames: como computadores representam, processam e comprimem multimídia — e a matemática por trás dos codecs modernos.
O que você vai aprender
Som é uma onda de pressão no ar. Para um computador, é uma sequência de números — amostras de amplitude capturadas milhares de vezes por segundo (PCM). O Teorema de Nyquist define quantas amostras são suficientes para reconstruir perfeitamente qualquer frequência audível.
Imagens são grades de pixels com valores R, G, B. JPEG comprime aplicando transformada discreta de cosseno (DCT) em blocos 8×8 e descartando detalhes de alta frequência que o olho mal percebe. PNG usa compressão sem perdas baseada em Huffman — a mesma ideia do ZIP e do gzip.
Vídeo é sequência de imagens. H.264 e HEVC comprimem em 100× armazenando apenas as diferenças entre frames consecutivos (P-frames), com frames de referência completos (I-frames) intercalados.
Ondas sonoras e áudio digital
Frequência, amplitude, formas de onda e o que torna sons diferentes.
Disponível 02Amostragem e PCM
Como converter onda analógica em bits — taxa de amostragem e Nyquist.
Disponível 03Síntese de Fourier
Qualquer onda periódica é soma de senoides — o teorema que unifica tudo.
Disponível 04Compressão de imagem
Quantização, JPEG, PNG — como imagens perdem qualidade mas ganham compressão.
Disponível 05Codificação de Huffman
A ideia por trás de toda compressão sem perdas — chars frequentes viram bits.
Disponível 06Vídeo: frames e codecs
I-frames, P-frames, B-frames, GOPs — como H.264 comprime vídeos em 100x.
DisponívelProjetos desta trilha
Sintetizador FM
Construa um sintetizador FM (frequency modulation) com Web Audio API: um oscilador modula a frequência de outro. Adicione envelope ADSR (attack, decay, sustain, release) e um teclado virtual no browser.
Compressor de imagem
Implemente um compressor de imagem usando DCT + quantização em blocos 8×8 via Canvas 2D. Compare a qualidade visual e o tamanho de arquivo em diferentes níveis de qualidade (1–100).
Compressor Huffman
Implemente compressão e descompressão Huffman em JavaScript: encode uma string em bits, serialize a árvore junto com os dados comprimidos, e decode de volta — tudo sem bibliotecas externas.