【音频】AAC格式解析

 一、AAC概述

        AAC是高级音频编码(Advanced Audio Coding)的缩写,出现于1997年,最初是基于MPEG-2的音频编码技术。由Fraunhofer IIS、Dolby Laboratories、AT&T、Sony等公司共同开发,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC重新集成了其它技术(PS,SBR),为区别于传统的MPEG-2 AAC,故含有SBR或PS特性的AAC又称为MPEG-4 AAC。

       AAC是新一代的音频有损压缩技术,它通过一些附加的编码技术(比如PS,SBR等),衍生出了LC-AAC,HE-AAC,HE-AACv2三种主要的编码,LC-AAC就是比较传统的AAC,相对而言,主要用于中高码率(>=80Kbps),HE-AAC(相当于AAC+SBR)主要用于中低码(<=80Kbps),而新近推出的HE-AACv2(相当于AAC+SBR+PS)主要用于低码率(<=48Kbps),事实上大部分编码器设成  <=48Kbps自动启用PS技术,而 >48Kbps就不加PS,就相当于普通的HE-AAC。

AAC-LC (Low Complexity) 低复杂度规格

AAC SSR(Scaleable Sample Rate)可变采样率规格

AAC HE(High Efficiency) 高效率规格,适用于低码率编码

 

二、AAC特点

 

       (1)  AAC是一种高压缩比的音频压缩算法,但它的压缩比要远超过较老的音频压缩算法, 如AC-3、MP3等。并且其质量可以同未压缩的CD音质相媲美。

       (2)  同其他类似的音频编码算法一样,AAC也是采用了变换编码算法,但AAC使用了分辨率 更高的滤波器组,因此它可以达到更高的压缩比。

       (3)  AAC使用了临时噪声重整、后向自适应线性预测、联合立体声技术和量化哈夫曼编码等最新技术,这些新技术的使用都使压缩比得到进一步的提高。

     (4)  AAC支持更多种采样率和比特率、支持1个到48个音轨、支持多达15个低频音轨、具有多种语言的兼容能力、还有多达15个内嵌数据流。

     (5)AAC支持更宽的声音频率范围,最高可达到96kHz,最低可达8KHz,远宽于MP3的16KHz-48kHz的范围。

     (6)不同于MP3及WMA,AAC几乎不损失声音频率中的甚高、甚低频率成分,并且比WMA在频谱结构上更接近于原始音频,因而声音的保真度更好。专业评测中表明,AAC比WMA声音更清晰,而且更接近原音。

     (7)AAC采用优化的算法达到了更高的解码效率,解码时只需较少的处理能力。

 

三、AAC文件格式

AAC的音频文件格式有以下两种:

 

ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行,所以必须得到所有的数据后解码。故这种格式常用在磁盘文件中。

ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。这种格式可以用于广播电视。

简言之。ADIF只有一个文件头,ADTS每个包前面有一个文件头。两种格式Header格式也不同。ADTS是帧序列,本身具备流特征,在音频流的传输和处理方面更加合适。

AAC的ADIF如下:

AAC的ADIF header如下:

组成ADIF头信息的各个域如下:

ADIF头信息位于AAC文件的起始处,接下来就是连续的raw data blocks。

AAC的ADTS格式如下:

AAC的ADTS 固定header如下

 

syncword :同步头 总是0xFFF, all bits must be 1,代表着一个ADTS帧的开始

ID:MPEG Version: 0 for MPEG-4, 1 for MPEG-2

Layer:always: '00'

profile:表示使用哪个级别的AAC,有些芯片只支持AAC LC 。在MPEG-2 AAC中定义了3种:

sampling_frequency_index:表示使用的采样率下标,通过这个下标在 Sampling Frequencies[ ]数组中查找得知采样率的值。

 

There are 13 supported frequencies:

  • 0: 96000 Hz
  • 1: 88200 Hz
  • 2: 64000 Hz
  • 3: 48000 Hz
  • 4: 44100 Hz
  • 5: 32000 Hz
  • 6: 24000 Hz
  • 7: 22050 Hz
  • 8: 16000 Hz
  • 9: 12000 Hz
  • 10: 11025 Hz
  • 11: 8000 Hz
  • 12: 7350 Hz
  • 13: Reserved
  • 14: Reserved
  • 15: frequency is written explictly

channel_configuration: 表示声道数 

 

  • 0: Defined in AOT Specifc Config
  • 1: 1 channel: front-center
  • 2: 2 channels: front-left, front-right
  • 3: 3 channels: front-center, front-left, front-right
  • 4: 4 channels: front-center, front-left, front-right, back-center
  • 5: 5 channels: front-center, front-left, front-right, back-left, back-right
  • 6: 6 channels: front-center, front-left, front-right, back-left, back-right, LFE-channel
  • 7: 8 channels: front-center, front-left, front-right, side-left, side-right, back-left, back-right, LFE-channel
  • 8-15: Reserved

 

ADTS头信息分为两部分:固定头+可变头,可变头接在固定头后面。固定头信息中每一帧都相同,可变头信息则在帧与帧间可变。

 

AAC的ADTS 可变header如下

 

frame_length : 一个ADTS帧的长度包括ADTS头和AAC原始流.

adts_buffer_fullness:0x7FF 说明是码率可变的码流

number_of_raw_data_blocks_in_frame:表示ADTS帧中有number_of_raw_data_blocks_in_frame + 1个AAC原始帧.
所以说number_of_raw_data_blocks_in_frame == 0 表示说ADTS帧中有一个AAC数据块。
(一个AAC原始帧包含一段时间内1024个采样及相关数据)



作者:FlyingPenguin
链接:https://www.jianshu.com/p/5c770a22e8f8
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

可以使用ultraEdit32打开aac文件:

 

大部分内容转自:https://blog.csdn.net/wlsfling/article/details/5876016

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ffmpeg 是一款非常强大的音视频处理工具,可以用于各种音视频格式的转码、剪辑、合并等操作。它支持多种音视频格式,包括 AAC 音频格式。 如果你遇到了无法解析 AAC 音频格式的问题,可能是因为 ffmpeg 编译时未添加对 AAC 格式的支持。在编译 ffmpeg 时,需要添加相应的编解码库来支持 AAC 格式,如 FAAC、FDK-AAC 等。 如果你已经编译了支持 AAC 格式的 ffmpeg,但仍然无法解析 AAC 音频,可能是因为输入的 AAC 音频文件格式存在问题。在这种情况下,可以尝试使用其他工具对 AAC 音频文件进行修复或转换,或者尝试使用不同的 AAC 解码器进行解码。 以下是一些常用的 ffmpeg 命令,可以用来处理 AAC 音频文件: 1. 转码为其他格式 ``` ffmpeg -i input.aac -c:a libmp3lame output.mp3 ``` 上述命令将输入的 AAC 音频文件转码为 MP3 格式。 2. 提取音频 ``` ffmpeg -i input.mp4 -vn -acodec copy output.aac ``` 上述命令将从输入的 MP4 视频文件中提取音频,并将音频保存为 AAC 格式。 3. 剪辑音频 ``` ffmpeg -i input.aac -ss 00:00:10 -t 00:00:30 -c copy output.aac ``` 上述命令将从输入的 AAC 音频文件中剪辑出从第 10 秒到第 40 秒的音频,并将音频保存为 AAC 格式。 4. 合并音频 ``` ffmpeg -i "concat:input1.aac|input2.aac" -c copy output.aac ``` 上述命令将合并输入的两个 AAC 音频文件,并将合并后的音频保存为 AAC 格式。注意,在使用 concat 滤镜时,输入文件的编解码器要一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值