一.音频相关基本概念

Sample是一个声道的一个采样。采样频率定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。

Bits/Sample采样位数即采样值或取样值(就是将采样样本幅度量化)。它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。每个采样数据记录的是振幅, 采样精度取决于采样位数的大小。

Bitrate:也称作位速/码率,是指在一个数据流中每秒钟能通过的信息量。比特率=采样频率×采样位数×声道数。

Frame是最小单位时间点包含的一个或多个声音采样,最小单位时间点取决于声音采样设备,是一个时间点多个采样的集合。譬如,双声道的音频文件,一个时间点有两个声道,一个Frames就包括两个采样。通道是声音的通道的数目,常有单声道和立体声之分。

Packet是一个或多个frame的集合,一个packet 包含多少个frame,是由声音文件格式决定的。譬如 PCM 文件格式中一个 packet 包含 1 个frame。而 MP3 文件格式中一个 packet 包含 1152 个frames。

二.AAC简介

AAC(Advanced Audio Coding)是一种音频编码器协议,通常配合H.264图像编码器协议普遍运用于多媒体的压缩编码中。对比MP3格式它有以下几个特点:

  • 高度的压缩率:可以以更小的文件大小获得更高的音质。
  • 支持多声道:可提供最多48个全音域声道,支持多达15个低频音轨、具有多种语言的兼容能力、还有多达15个内嵌数据流。
  • 更高的解析度:最高支持96KHz的采样频率,最低可达8KHz。
  • 提升的解码效率:解码播放所占的资源更少。

AAC的两种输出格式:

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

ADTS:Audio Data Transport Stream音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。简单说,ADTS可以在任意帧解码,也就是说它每一帧都有头信息。ADIF只有一个统一的头,所以必须得到所有的数据后解码。ADTS是帧序列,本身具备流特征,在音频流的传输与处理方面更加合适。

ADTS帧结构:

AAC ADTS Header结构如下图所示,1~10字段是固定头部,11~15字段是可变头部,CRC字段不一定有内容:

三.ADTS编解码

在网络传输中AAC格式的ADTS以流的形式传输,每个ADTS Frame使用syncword(同步字进行分隔)同步字为0xFFF。解码的过程就是利用分隔符拆解出每个ADTS Frame再利用Header中的Length字段将Header和Body(音频数据)分离,最后利用平台上的解码器将音频数据解析出来。反之,编码的过程就是编码器将PCM数据编码成AAC数据然后加上ADTS Header组成一个完整的ADTS数据包。

参考:

https://www.jianshu.com/p/3b0b0e2c075d

https://www.jianshu.com/p/5b12022cdc88

https://www.jianshu.com/p/a671f5b17fc1

results matching ""

    No results matching ""