PCM简介
PCM脉冲编码调制是Pulse Code Modulation的缩写。未经压缩的音频数据裸流。
模拟信号数字化必须经过三个过程,即抽样、量化和编码。
一、抽样(Sampling)
抽样是把模拟信号以其信号带宽2倍以上的频率提取样值,变为在时间轴上离散的抽样信号的过程。
二、量化(quantizing)
抽样信号虽然是时间轴上离散的信号,但仍然是模拟信号,其样值在一定的取值范围内,可有无限多个值。
显然,对无限个样值一一给出数字码组来对应是不可能的。为了实现以数字码表示样值,必须采用“四舍五入”的方法把样值分级“取整”,
使一定取值范围内的样值由无限多个值变为有限个值。这一过程称为量化。
量化后的抽样信号与量化前的抽样信号相比较,当然有所失真,且不再是模拟信号。
这种量化失真在接收端还原模拟信号时表现为噪声,并称为量化噪声。量化噪声的大小取决于把样值分级“取整”的方式,分的级数越多,
即量化级差或间隔越小,量化噪声也越小。
三、编码(coding)
量化后的抽样信号就转化为按抽样时序排列的一串十进制数字码流,即十进制数字信号。
简单高效的数据系统是二进制码系统,因此,应将十进制数字代码变换成二进制编码,根据十进制数字代码的总个数,
可以确定所需二进制编码的位数,即字长(采样位数)这种把量化的抽样信号变换成给定字长的二进制码流的 过程称为编码。
声道:
声道分为单声道(mono)立体声(双声道stereo)
PCM的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。
首先存储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0,这样8位和16位的PCM波形样本的数据格式如下所示。
扩展little endian、big endian(储存方式可能是LE、BE)
Little-endian:将低序字节存储在起始地址(低位编址)
Big-endian:将高序字节存储在起始地址(高位编址)
如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为:
时长 * 采样率 * 采样位数 * 声道数 / 8 = 文件大小。