O que é AAC (Advanced Audio Coding)?

Advanced Audio Coding, ou AAC, é uma família de codecs de áudio perceptuais com perdas padronizada pelo MPEG em MPEG-2 Parte 7 e MPEG-4 Parte 3. Costuma ser armazenado em arquivos MP4 e M4A, estruturado em quadros ADTS e transportado nos segmentos de mídia de protocolos de streaming adaptativo, como HLS e DASH.

Como funciona o AAC (Advanced Audio Coding)

O AAC comprime áudio com um modelo perceptual e um banco de filtros MDCT: os componentes espectrais são quantizados com o objetivo de manter o ruído resultante abaixo do limiar estimado de mascaramento, o que torna a codificação com perdas. Trata-se de uma família de codecs, e não de uma configuração fixa. O MPEG-4 define tipos de objeto de áudio, como AAC-LC, e os perfis HE-AAC e HE-AAC v2 acrescentam Spectral Band Replication e Parametric Stereo a um núcleo AAC-LC. Manifestos e tipos MIME identificam a variante com uma string codecs conforme a RFC 6381: mp4a.40.2 para AAC-LC, mp4a.40.5 para HE-AAC e mp4a.40.29 para HE-AAC v2. Com Spectral Band Replication, o núcleo AAC-LC normalmente opera com metade da taxa de amostragem de saída. Por isso, a taxa de amostragem e o número de canais declarados por um fluxo dependem de a sinalização descrever o núcleo ou a saída do decodificador. Quando a taxa de saída é duplicada dessa forma, um quadro HE-AAC é decodificado em 2048 amostras de saída, enquanto um quadro AAC-LC normalmente contém 1024.

Informações essenciais

  1. Um decodificador AAC-LC consegue reproduzir HE-AAC? Apenas o núcleo, e somente quando a sinalização é retrocompatível. O HE-AAC combina um núcleo AAC-LC com Spectral Band Replication (SBR), e o HE-AAC v2 acrescenta Parametric Stereo (PS); um decodificador HE-AAC v2 também decodifica HE-AAC e AAC-LC. Com sinalização implícita, em que a configuração do decodificador não declara SBR, ou com sinalização explícita retrocompatível, um decodificador que suporta apenas AAC-LC decodifica somente o núcleo: áudio com banda limitada, normalmente com metade da taxa de amostragem de saída e, quando PS está em uso, em mono. Com sinalização explícita hierárquica, decodificadores que suportam apenas AAC-LC não conseguem decodificar o fluxo, e decodificadores sem suporte a PS não conseguem decodificar HE-AAC v2.
  2. Como o HE-AAC deve ser sinalizado para streaming? A especificação de autoria HLS da Apple exige sinalização explícita dos dados SBR para HE-AAC em MP4 fragmentado, sem indicar um modo, e as diretrizes de interoperabilidade do DASH-IF recomendam o modo explícito retrocompatível para SBR e PS e preveem que os clientes reproduzam AAC-LC, HE-AAC e HE-AAC v2. Em um manifesto DASH, a taxa de amostragem e a configuração de canais declaradas descrevem a saída após SBR e PS, por exemplo, 48 kHz em estéreo sobre um núcleo mono de 24 kHz. Os reprodutores usam a string codecs declarada para decidir se conseguem reproduzir uma representação. Por isso, um dispositivo que suporta apenas AAC-LC pode ignorar uma representação declarada como mp4a.40.5, mesmo que seu decodificador consiga reproduzir o núcleo.
  3. AAC em ADTS é intercambiável com AAC em MP4? O áudio codificado pode ser idêntico, mas a estruturação em quadros é diferente. O ADTS coloca um cabeçalho com os parâmetros de decodificação antes de cada quadro, permitindo que um decodificador comece em qualquer quadro sem configuração separada, embora precise do quadro anterior para reproduzir o áudio corretamente. Já MP4 e M4A transportam uma AudioSpecificConfig de MPEG-4 como configuração do decodificador fora de banda e armazenam quadros sem cabeçalho em boxes de dados de mídia, localizados por meio das tabelas de amostras do box de filme em um arquivo comum e por meio de cada box de fragmento de filme em MP4 fragmentado. Mover áudio entre os dois formatos reescreve a estruturação em quadros sem decodificação, por exemplo, com o filtro de fluxo de bits aac_adtstoasc do FFmpeg. O filtro constrói essa configuração a partir do cabeçalho ADTS, que só pode sinalizar SBR implicitamente. Assim, para HE-AAC, ele não acrescenta por si só a sinalização explícita de SBR que a Apple exige em MP4 fragmentado.
  4. Por que o AAC decodificado é mais longo que a origem? Os codificadores acrescentam amostras silenciosas de preparação no início, em uma quantidade que depende da implementação e que historicamente costuma ser 2112, e adicionam preenchimento ao pacote final, que normalmente contém 1024 amostras. A menos que o reprodutor remova ambos, o áudio começa atrasado em relação ao vídeo e o preenchimento permanece na saída decodificada, o que afeta junções sem lacunas e edições com precisão de amostra. Arquivos MP4 e M4A podem indicar explicitamente o corte com uma lista de edição e grupos de amostras roll; os próprios fluxos de bits AAC normalmente não informam esse corte, então um reprodutor ADTS precisa presumir um valor. Em MP4 fragmentado, a lista de edição fica no segmento de inicialização; as diretrizes do DASH-IF exigem que o conteúdo seja reproduzido corretamente quando os clientes ignoram listas de edição, e a RFC 8216 não as menciona para HLS. Por isso, um pacote de streaming não deve depender apenas de uma lista de edição.

Quando o AAC (Advanced Audio Coding) é relevante

Escolha AAC quando um único formato de áudio com perdas precisar ser reproduzido em diferentes navegadores e reprodutores HLS ou DASH; alguns navegadores dependem do decodificador do sistema operacional em vez de incluir um próprio. Use AAC-LC por padrão e reserve HE-AAC para taxas de bits baixas: a especificação de autoria HLS da Apple diz que HE-AAC não deve ser usado acima de 64 kbit/s. Como ponto de operação, a documentação do codificador FDK AAC da Fraunhofer sugere de 1 a 1,5 bits por amostra de áudio para AAC-LC, o que, segundo ela, corresponde a 48 a 72 kbit/s para um canal de 48 kHz, contra 0,625 para HE-AAC com um núcleo à metade da taxa de amostragem e 0,5 para HE-AAC v2.

Como a Transloadit ajuda com AAC (Advanced Audio Coding)

O Robot /audio/encode da Transloadit codifica áudio em AAC com suas predefinições aac e audio/aac, que produzem saída em MP4. A taxa de bits, a taxa de amostragem e opções individuais do FFmpeg podem ser substituídas em cada Step, e as predefinições de áudio dash/ preparam representações AAC que /video/adaptive pode combinar em um fluxo adaptativo.

A página de predefinições lista o codec, a taxa de bits e a taxa de amostragem de cada predefinição por versão do stack do FFmpeg.

Explore os recursos de áudio da Transloadit

Fontes

Transforme conhecimento sobre mídia em um pipeline funcional

Conecte uploads, processamento, IA, armazenamento e entrega por meio de uma única API declarativa, com o stack de codificação, o ajuste de escala e as constantes mudanças de formatos gerenciados para você.

Experimente a Transloadit gratuitamente