Qual é a diferença entre um codec e um contêiner?
Um codec especifica como os dados de áudio, vídeo ou imagem são codificados e decodificados, enquanto um contêiner empacota fluxos, informações de temporização, metadados e legendas. MP4 é um contêiner que pode transportar codecs como H.264 e AAC.
Como funcionam codecs e contêineres
Fluxos elementares comprimidos não descrevem, por si só, um arquivo completo que possa ser reproduzido. Um contêiner intercala uma ou mais faixas e registra temporização, sincronização, idioma, informações de capítulos e outros metadados, enquanto cada faixa identifica como suas amostras foram comprimidas. A remultiplexação altera o empacotamento sem reconstruir a mídia; a transcodificação altera a codificação de um fluxo. A reprodução depende, portanto, do codec, de seu perfil e parâmetros, de sua associação com o contêiner e da combinação de decodificador e demultiplexador.
Informações essenciais
- Uma extensão .mp4 ou .webm identifica o empacotamento, não a compressão em seu interior; dois arquivos com a mesma extensão podem exigir decodificadores de vídeo ou áudio diferentes.
- A navegação pela linha do tempo depende tanto dos índices do contêiner quanto dos quadros de acesso aleatório do codec: um índice válido não pode tornar um quadro com predição interquadros decodificável de forma independente.
- Copiar faixas entre contêineres só é uma operação sem perdas quando o formato de destino permite aquelas entradas de amostra do codec, timestamps, metadados e representações de legendas.
Quando codecs e contêineres são importantes
Selecione o codec e o contêiner em conjunto, pois o suporte a um não garante o suporte à combinação dos dois. Um arquivo válido em outros aspectos pode falhar quando um navegador, editor ou player rejeita seu perfil de codec ou empacotamento.