音频编解码相关知识
1、PCM(Pulse Code Modulation,脉冲编码调制)简介
PCM音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准数字音频数据。
① PCM数据的参数:
参数名 |
参数描述 |
---|---|
Sample Rate | 采样频率,每秒样本数。8kHz(电话)、44.1kHz(CD)、48kHz(DVD)。 |
Sample Size | 样本单位数据大小,常见的有8-bit和16-bit(1byte=8bit)。 |
Number of Channels | 通道个数。常见的音频有立体声(stereo)和单声道(mono)两种类型,立体声包含左声道和右声道。另外还有环绕立体声等类型。 |
Sign | 表示样本数据是否是有符号位,比如用一字节表示的样本数据,有符号的话表示范围为-128 ~ 127,无符号是0 ~ 255。 |
用下图表示1秒内单通道对原始信号的采样:
Original Signal :原始信号
PAM Signal:样本信号,34个蓝色垂直线段,表示在这一秒内采样34次,此时采样率为34Hz
假设样本数据大小使用有符号8-bit数据标准,数据范围为-128~127,那么信号峰值和谷值则为127和-128,每个蓝色垂直线段都有相应的大小取值,每个样本占用1字节的空间。
② 数据存储示例:
WAV编码的一种实现(有多种实现方式,但是都不会进行压缩操作)就是在PCM数据格式的前面加上44字节,分别用来描述PCM的采样率、声道数、数据格式等信息。
原始的PCM数据占用较大的存储空间,以44.1kHz采样率、16bit双通道数据为例,每秒数据占用的存储空间为44100*16*2/8=176400字节,如果是3分钟的音乐,将占用大概30MB(176400*180/1024/1024)的存储空间。存储成本较高,同时在相同的网络带宽下,传输较耗时。因此,原始的PCM数据需要压缩,降低数据量,便于存储和网络传输。
2、MP3编码
MP3的全称是MPEG Audio Layer3,是一种高效的计算机音频编码方案,它以较大的压缩比将音频文件转换成较小的扩展名为.MP3的文件,基本保持原文件的音质。MP3采用了感知音频编码(PerceptualAudioCoding)算法,人耳感受声音的频率范围是20Hz-220kHz,MP3截掉了大量的冗余信号和无关的信号,是一种有损压缩,压缩率可达1:10至1:12,10M的PCM数据可压缩至1M。
MP3 文件大体分为三部分(按内存地址递增的顺序):TAG_V2(ID3V2),Frame, TAG_V1(ID3V1)
ID3V2 | 包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量 |
Frame | 一系列的帧,个数有文件大小和帧长决定 每个FRAM的长度可能不固定,也可能固定,由位率bitrate决定 每个FRAME由分为帧头和数据实体两部分 帧头记录了mp3的位率,采样率,版本等信息,每个帧之间相互独立 |
ID3V1 | 包含了作者,作曲,专辑等信息,长度为128字节 |
帧数据格式:
帧头 | 长度是4Byte(32bit),帧头后面可能有两个字节的CRC 校验值,这两个字节的校验值是否存在决定于Header信息的第16bit,为0则帧头后面无校验,为1则有校验,校验值长度为2个字节 |
音频数据 | 经过编码后的数据 |
① 帧头数据,序号从右向左从0开始递增,在处理时,可以按位的个数从流的开头读取数据并解析
31 0
AAAA AAAA AAAB BCCD EEEE FFGH IIJJ KLMM
标识 |
位数 |
描述 |
---|---|---|
AAAA AAAA AAA | (31,21) | 帧同步,值全为1 |
BB | (20,19) | 00 - MPEG 2.5,01 - 保留, 10 - MPEG 2 |
CC | (18,17) | 00 - 保留,01 - Layer 3,02 - Layer 2,11 - Layer 1 |
D | 16 | CRC 校验值,为0则帧头后面无校验,为1则有校验,校验值长度为2个字节 |
EEEE | (15,12) | 码率索引,参考图2-1 |
FF | (11,10) | 采样频率 MPEG-1: 00 - 44100,01 - 48000, 10 - 32000,11 - 保留 MPEG-2: 00 - 22050,01 - 24000, 10 - 16000,11 - 保留 MPEG-2.5: 00 - 11025,01 - 12000, 10 - 8000,11 - 保留 |
G | 9 | 帧长调节,0-无需调整,1-调整 |
H | 8 | 保留位 |
II | (7,6) | 声道 00-立体声Stereo 01-Joint Stereo 10-双声道Dual channel 11-单声道Single channel |
JJ | (5,4) | 扩充模式,用于Joint Stereo |
K | 3 | 版权,0-不合法 1-合法 |
L | 2 | 是否原版,0-非原版 1-原版 |
MM | (1,0) | 强调方式,用于声音经降噪压缩后再补偿的分类 |
图2-1 码率索引
② 帧数据,
帧大小:每帧采样数,如下表
MPEG 1 |
MPEG 2 (LSF) |
MPEG 3 (LSF) |
|
---|---|---|---|
Layer 1 | 384 | 384 | 384 |
Layer 2 | 1152 | 1152 | 1152 |
Layer 3 | 1152 | 576 | 576 |
帧长度:帧长度是压缩时每一帧的长度,包括帧头。还有填充的空位也计算在内,单位是字节。LayerI 的一个空位长 4 字节,LayerII 和 LayerIII 的空位是 1 字节。
帧长度 = (( 每帧采样数 / 8 * 比特率 ) / 采样频率 ) + 填充空位大小
可以根据计算出来的帧长度,从音频流中获取帧长度大小的数据,作为一帧数据提交给解码器处理
每帧持续时间:每帧持续时间(毫秒) = 每帧采样数 / 采样频率 * 1000
参考:
1、https://www.jianshu.com/p/fd43c1c82945
2、https://blog.csdn.net/qq_25333681/article/details/90682989
- 点赞
- 收藏
- 关注作者
评论(0)